最近腾讯的服务器被黑客攻击,本来这个服务器上没什么东西,就是挂几个域名,测试一些功能用。平时没什么流量,就按照流量计费的,一个月也就几分钱。突然预存的5块钱花光了。每天几毛钱的流量费用超出了平时的范围。经过分析后找到异常进程关闭后流量正常了。观察了一天没有发现异常。因为穷没有购买服务器和宝塔的一些高级功能。没有流量的监控报警。我看了下,首页可以在负载,CPU,内存和硬盘卡片上添加阈值的告警推送。没有流量的告警功能。为了防止再被攻击,流量异常,损失银子,做了下面的计划任务脚本。主要功能就是在流量异常的时候,就是超过一定的阈值,就向企业微信发送消息。企业微信的配置按照系统教程配置即可。这里主要体现脚本的功能。告警阈值可以自己配置,我默认设置的是1MB,平时流量几K,很少超过1MB,被攻击后流量保持在2MB左右,所以我这里设置1MB,拿去用可以按照自己的流量设置即可。网卡和python脚本路径如有不同根据自己情况设置。
希望对各位有帮助。
任务名称:流量告警+企业微信推送
任务类型:shell脚本
执行周期:每2分钟一次
执行用户:root默认
脚本内容:
- #!/bin/bash
- # 最终极简版:流量告警+企业微信推送(无冗余校验)
- THRESHOLD=1024 # 告警阈值:1024KB/s=1MB/s
- NETWORK_CARD="eth0"
- PANEL_DIR="/www/server/panel"
- PANEL_PYTHON="/www/server/panel/pyenv/bin/python3"
- # 1. 流量计算(核心)
- OLD_RX=$(cat /sys/class/net/${NETWORK_CARD}/statistics/rx_bytes)
- OLD_TX=$(cat /sys/class/net/${NETWORK_CARD}/statistics/tx_bytes)
- sleep 1
- NEW_RX=$(cat /sys/class/net/${NETWORK_CARD}/statistics/rx_bytes)
- NEW_TX=$(cat /sys/class/net/${NETWORK_CARD}/statistics/tx_bytes)
- DOWNLOAD=$(( (NEW_RX - OLD_RX) / 1024 ))
- UPLOAD=$(( (NEW_TX - OLD_TX) / 1024 ))
- # 2. 组装告警消息
- ALERT_MSG=""
- if [ $UPLOAD -gt $THRESHOLD ]; then
- UPLOAD_MB=$(( UPLOAD / 1024 ))
- ALERT_MSG="上行流量超标:${UPLOAD} KB/s(${UPLOAD_MB} MB/s),阈值${THRESHOLD} KB/s"
- fi
- if [ $DOWNLOAD -gt $THRESHOLD ]; then
- DOWNLOAD_MB=$(( DOWNLOAD / 1024 ))
- ALERT_MSG=${ALERT_MSG:+"${ALERT_MSG};"}"下行流量超标:${DOWNLOAD} KB/s(${DOWNLOAD_MB} MB/s),阈值${THRESHOLD} KB/s"
- fi
- # 3. 推送企业微信
- if [ -n "$ALERT_MSG" ]; then
- FINAL_MSG="【服务器流量告警】${ALERT_MSG}"
- cd "${PANEL_DIR}" && ${PANEL_PYTHON} -c "
- import sys
- sys.path.insert(0, 'class/')
- import public
- public.push_msg('weixin', {'msg': '${FINAL_MSG}'})"
- echo "告警已推送:${FINAL_MSG}"
- else
- echo "流量正常:上行${UPLOAD}KB/s,下行${DOWNLOAD}KB/s"
- fi
复制代码
|
|