zoukankan      html  css  js  c++  java
  • 自动抓包shell脚本

            由于机房核心下的客户众多,其中不免很多大客户,正所谓树大招风,近期机房某些客户总是被流量攻击,最行之有效的处理的办法就是找到具体被攻击的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:查看抓包数据文件夹

    2:查看自动抓包的数据列表


    3:下载需要分析的历史数据包


    4:使用wireshark等工具本地分析数据



    PS:从以上数据中可以很明显看到是139.66这个ip遭受到ddos攻击.

    经过几个月的测试和使用,脚本运行正常并在日常网络故障判断中起到了很大作用,现分享出来大家一起学习和研究,共同进步.

  • 相关阅读:
    grep命令、sed 命令 、awk命令、uniq命令
    正则表达式学习(python之re模块)
    linux目录结构
    shell之find命令详解
    shell之 ps、kill、killall命令详解
    linux用户及权限
    C#中数据类型char*,const char*和string的三者转换
    C#中通过SendARP读取MAC地址
    C#对字典Dictionary 的添加,遍历,移除系列操作
    CMD命令行实现复制一张图片1000份:
  • 原文地址:https://www.cnblogs.com/quyanan/p/4446895.html
Copyright © 2011-2022 走看看