码迷,mamicode.com
首页 > 系统相关 > 详细

用shell解决ddos攻击实例

时间:2016-05-16 11:11:40      阅读:386      评论:0      收藏:0      [点我收藏+]

标签:网络连接   防火墙   监控   

提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100

      即调用防火墙命令封掉对应的IP,监控频率每隔3分钟

      防火墙命令为:iptables -A INPUT -s 10.0.1.10 -j DROP

思路:

    1.分析日志,提取IP和PV数

    2.while语句,读取提取到的IP和PV数,并实现3分钟循环一次

    3.调用防火墙命令

用while读取日志方法:

    1.cat a.log | while read line

      do

      done

    2.exec<a.log | while read line

      do

      done

    3.while read line

      do

      done<a.log

脚本:

#!/bin/bash
#Author: liuwei
#Site: www.51liuzw.com
while true
do
#cat 12_01.log | awk ‘{print $1}‘ | sort | uniq -c > a.log
netstat -an | grep ESTAB | awk -F "[ :]+" ‘{print $6}‘ | sort | uniq -c > b.log
exec<a.log
while read line
do
        pv=`echo $line | awk ‘{print $1}‘`
        ip=`echo $line | awk ‘{print $2}‘`
        if [ $pv -gt 5 ] && [ `iptables -L -n | grep $ip | wc -l` -eq 0 ];then
                iptables -A INPUT -s $ip -j DROP
        fi
done
sleep 180
done

    实现思路:

        1.根据日志提取ip和pv数,或者根据网络连接数提ip和pv

        2.判断当pv大于你所能接受的最大值时,把此ip加入防火墙中

        3.可以结合crontab实现每3分钟执行一次

    知识点:

        awk -F "[ :]+"

            -F:指定分隔符时,需要添加此选项

            [ :]+ :以空格或者冒号为分隔符,+表示空格或者冒号最少出现一次


本文出自 “激情燃烧的岁月” 博客,请务必保留此出处http://liuzhengwei521.blog.51cto.com/4855442/1773802

用shell解决ddos攻击实例

标签:网络连接   防火墙   监控   

原文地址:http://liuzhengwei521.blog.51cto.com/4855442/1773802

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!