黑帽联盟

标题: shell防ddos攻击脚本(完善) [打印本页]

作者: 定位    时间: 2017-3-22 21:09
标题: shell防ddos攻击脚本(完善)
在上一篇shell防ddos攻击脚本中,我给大家发了个脚本,那只是针对单机的,如果是在负载均衡下的话,很容易把自己的服务器ip给误封,所以这篇文章就给大家发个可以添加白名单的shell脚本.

  系统:centos 5.9 64位

脚本内容:
vi ip-dos-cc.sh
  1. #!/bin/bash
  2. netstat -an| grep :80 |grep -v -E '127.0|0.0|10.0'|awk '{ print $5 }' | sort|awk -F: '{print $1}' | uniq -c | awk '$1' | awk '$2 != ""' >/root/ddos/black.txt
  3. cnt=0
  4. for i in `awk '{print $2}' /root/ddos/black.txt`
  5. do
  6.   if [ ! -z "$i" ];
  7.   then
  8.           COUNT=`grep $i /root/ddos/black.txt | awk '{print \$1}'`
  9.           DEFINE="20"
  10.           ZERO="0"
  11.     if [ $COUNT -gt $DEFINE ];
  12.           then
  13.                   grep $i /root/ddos/white.txt /dev/null
  14.                   if [ $? -gt $ZERO ];
  15.                   then
  16.         IPEX=`iptables -nL | grep "$i"`
  17.         if [ -z "$IPEX" ];
  18.         then
  19.                       echo "$COUNT $i"
  20.                       iptables -I INPUT -s $i -j DROP
  21.           echo -e "[`date "+%Y-%m-%d %T"`] IP: $i\tCOUNT: $COUNT" /root/ddos/banned.log
  22.         fi
  23.                   fi
  24.           fi
  25.     ((cnt=cnt+1))
  26.   fi
  27. done
  28. echo "[`date "+%Y-%m-%d %T"`] Script runned, found $cnt" > /root/ddos/run.log
复制代码
在/etc/crontab里设置:
*/1 * * * * root /root/shell/ddos.sh
0 * * * * iptables --flush

第一条是1分钟执行一次防御脚本,第二条是每小时清理一次IP禁止列表.第二条是可选的,主要是为了将已经封杀的IP解禁,避免过多的封杀或者误杀.一个小时的禁止时间也已经足够了.


作者: pangkee    时间: 2017-3-28 01:18
太特么的实用了,只是目前的距离还差得远





欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5