设为首页 收藏本站
查看: 1387|回复: 0

自动抓包shell脚本

[复制链接]

尚未签到

发表于 2015-12-4 10:03:28 | 显示全部楼层 |阅读模式
  由于机房核心下的客户众多,其中不免很多大客户,正所谓树大招风,近期机房某些客户总是被流量攻击,最行之有效的处理的办法就是找到具体被攻击的ip地址,然后在核心带宽能承受的情况下,在上层核心把该ip配置空路由将攻击流量拦截在核心层;超过我们核心带宽承受能力的,将该ip报给运营商封禁处理也能快速的将故障影响时间缩小至最短,以保证其他用户的正常使用.
        之前的处理方式要么是发现故障让现场技术到核心去抓包(缺点一:从休息室到机房机柜旁边并配置好抓包程序的时间延误;缺点二:也可能抓包的时候攻击已经停止了,这样就无法判断出具体的故障点);要么是核心上提前配置好镜像端口,将上联流量镜像到一台抓包服务器上,并将服务器管理网卡上配置不同核心下地线路ip(以免发生攻击时无法远程登录);发生故障的时候直接远程登录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:监控硬盘使用率脚本 modisk.sh ,由于连续抓包会生成众多pcap数据文件,非常占用硬盘空间,所以监控硬盘使用率是保证监控脚本健康运行的前提条件,下面写了个脚本,可以设定计划任务,每6个小时执行一次(可根据需要来修改),监控硬盘使用率大于50%(可以根据情况来修改),则自动筛选出最早的数据文件夹并删除.

#!/bin/bash
FREEDISK=`df -h|grep "/dev/sda1"|awk '{print $5}'|awk -F % '{print $1}'`  #抓取磁盘占用百分比
HEADDIR=`ls -l /data|grep ^d|awk '{print $NF}'|sort|head -n 1`           #抓取之间最靠前的文件夹名称
if [ "$FREEDISK" -ge "50" ];then
rm -rf /data/"$HEADDIR"                                                  #判断磁盘占用百分比是否超过设定阈值,如果不超过则忽略并退出脚本,超过则执行删除HEADDIR目录
fi

  3: 监控抓包脚本运行状态的脚本 motcpdump.sh , 由于机器长期运行,中间又不可能天天登陆服务器去检查抓包脚本是否在运行中怎么办? 下面脚本可以实现这个自动巡检的功能.

#!/bin/bash
MOTCPDUMP=`ps -elf|grep tcpdump|grep -v grep`   #抓取系统进程中是否有tcpdump进程
if [ ! "$MOTCPDUMP" ];then
/bin/bash /home/tcpdump.sh &                    #判断有则忽略并退出,没有则重新后台执行该脚本
fi

  将上述脚本按需要加入计划任务即可.
  验证部分:
  下面是抓包脚本使用情况的截图
  1:查看抓包数据文件夹
DSC0000.png
  2:查看自动抓包的数据列表
DSC0001.png
  3:下载需要分析的历史数据包
DSC0002.png
  4:使用wireshark等工具本地分析数据
DSC0003.png
PS:从以上数据中可以很明显看到是139.66这个ip遭受到ddos攻击.
  经过几个月的测试和使用,脚本运行正常并在日常网络故障判断中起到了很大作用,现分享出来大家一起学习和研究,共同进步.
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-147107-1-1.html 上篇帖子: 【转】为eclipse安装python、shell开发环境和SVN插件 下篇帖子: shell学习笔记(1):利用IFS打印用户和默认shell
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表