由于机房核心下的客户众多,其中不免很多大客户,正所谓树大招风,近期机房某些客户总是被流量攻击,预防的办法也只能是找到具体被攻击的ip地址,然后在上层核心将该ip配置空路由将攻击流量拦截在骨干层,以免影响其他用户的正常使用,目前我每台核心都做了镜像端口,将上联流量镜像到一台centos的抓包服务器,每次发生故障的时候直接tcpdump抓包来分析,但是近期攻击都在半夜,爬起来去抓包的时候攻击都已经停了,不要说去解决问题了,连后期的故障说明都没法出;所以为了保留抓包的数据,在网上找了些资料根据环境测试来写了个简单的自动抓包的脚本,下面贴出来:
1:抓包脚本 tcpdump.sh
#!/bin/sh
while [ 1 ]
do
STIME=`date +%F"@"%H%M%S`
DATE_DIR=`date +%F`
if [ ! -d /data/$DATE_DIR ];then
mkdir -p /data/$DATE_DIR
fi
/usr/sbin/tcpdump -i eth1 -c 30000 -w /data/$DATE_DIR/$STIME.pcap > /dev/null 2>&1 & #后台抓包,监控eth1端口,每次自动抓包3w个自动停止并保存到相应目录,这个值可以根据需要来修改
sleep 1m 抓包后停止1分钟继续抓
done
2:监控硬盘使用率脚本 monitor-disk.sh ,由于连续抓包会生成众多pcap数据文件,非常占用硬盘空间,所以监控硬盘使用率是保证监控脚本健康运行的前提条件,下面写了个脚本,可以设定计划任务,每6个小时执行一次,监控硬盘使用率大于50%(可以根据情况修改),则自动筛选出最早的备份文件夹并删除
#!/bin/bash
FREEDISK=`df -h|grep "/dev/sda1"|awk ‘{print $5}‘|awk -F % ‘{print $1}‘`
HEADMOST=`ls -l /data|grep ^d|awk ‘{print $NF}‘|sort|head -n 1`
#check free disk status
if [ "$FREEDISK" -ge "50" ];then
rm -rf /data/"$HEADMOST"
fi
将上述脚本加入计划任务即可,end