天天看點

tcp并發數攻擊防禦shell 腳本

#!/bin/bash

netstat -ano  | grep tcp | awk -F" " '{print $5}' | awk -F":" '{print $1}' | sort -t " " -k 1 | uniq -c | grep -vE "127.0.0.1|0.0.0.0"  > ipfw.txt
sed -i "/^$/d" ipfw.txt
cat ipfw.txt

ipfw=(`cat ipfw.txt | awk -F" " '{print $2}'`) ; echo $ipfw

NR=$(cat ipfw.txt | wc -l); echo $NR
zdyljs=1000 ; echo "通路限制tcp連接配接數;$zdyljs"


echo "tcp連接配接數管控執行中,,,,, `date` " >> /root/jinzhiip.txt

for((i=0;i<$NR;i++))
  do
     ljs=`cat ipfw.txt | grep ${ipfw[$i]} | awk -F" " '{print $1}'` ; echo "${ipfw[$i]} 連接配接數為: $ljs"
     if [ $ljs -gt $zdyljs  ]
         then
              firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="${ipfw[$i]}" port protocol="tcp" port="80" reject"
              firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="${ipfw[$i]}" port protocol="tcp" port="443" reject"
              firewall-cmd --reload

              echo "${ipfw[$i]} 連接配接數為: $ljs    超過法制:$zdyljs 連接配接數,被禁止通路" >> /root/jinzhiip.txt
              echo "${ipfw[$i]} 連接配接數為: $ljs    超過法制:$zdyjks 連接配接數,被禁止通路 并且計入日志檔案:/root/jinzhiip.txt"

             echo "------------------------------------"
         fi
  done

echo "*/1 * * * * root /root/1.sh" >> /etc/crontab