当我们的Linux对外提供服务,如VPN、代理、管理跳板机等这些如果我们想对这些流量进行溯源可能是需要旁挂抓包设备,但是这样就需要在网络中旁挂专业的抓包设备。退而求其次,我们可以在提供服务器的Linux服务器上通过抓包软件进行抓包留存,即可实现溯源的效果。
本次就是为了解决溯源的问题就写了一个抓包脚本在服务器上,脚本支持归档功能,在凌晨00:00自动进行文件归档,抓包文件每天生成一个,脚本也可以设置存储日期,文件超期后可以自动删除,避免过大的空间占用。如果读取抓包文件,可以直接将保存的抓包文件保存在本地,直接用Wireshark软件打开即可。
一、安装部署
1、安装Tcpdump抓包工具
执行命令 yum install -y tcpdump进行安装
2、配置抓包脚本
①mkdir /opt/Capture/
创建目录存储抓包脚本;
②vim /opt/Capture/Capture.sh
将以下内容复制到文件中,;
Dev_network=代表要抓包的网卡名称,如果是聚合接口则需要填写bond的名称;
Cap_Host=代表要抓包的IP地址,如果不填则抓取所有经过网卡的流量,则流量会较大;
Storage=抓包文件的存储路径;
脚本最后一行+30代表保存抓包文件30天,如果是+10则保存抓包文件10天;
#!/bin/bash #周期性抓包存档脚本 Dev_network=ens192 Cap_Host=172.16.0.122 Storage=/opt/Capture/ Up_date=`date +%Y-%m-%d_%H%M%S` Run_PID=`ps -axu |grep -v grep |grep tcpdump |grep $Storage |awk '{print $2}'` [ -n "$Run_PID" ] && kill -9 $Run_PID /usr/sbin/tcpdump -i $Dev_network host $Cap_Host -w $Storage$Up_date.pcap #删除30天前的抓包文件 find $Storage*.pcap -mtime +1 -exec rm -r {} \;
③给脚本添加执行权限,并进行测试,如果能显示下图则配置无问题;
3、设置脚本开机自动启动
该配置主要配置服务器因意外断电重启,开机后能自动启动抓包;
①执行echo "sh /opt/Capture/Capture.sh" >> /etc/rc.local
添加启动项(脚本路径根据自己实际路径修改);
②执行chmod +x /etc/rc.d/rc.local
设置rc.local开机启动生效;
4、设置crontab自动执行脚本
①编辑器编辑crontab位置文件
crontab -e #编辑cronta配置文件,设置每天凌晨00:00执行,通过该配置可以实现凌晨自动归档.
0 0 * * * /bin/bash /opt/Capture/Capture.sh
②执行systemctl enable crond --now设置开机启动并当前启动;