Shell+Iptables 防護TCP SYN洪泛

在運維通訊監管平臺發現大量訪問卡在的SYN_RECV狀態,看到的netstat -antp狀態以下:centos

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:875                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.10.81:8080          103.100.61.18:65178         SYN_RECV    -                   
tcp        0      0 192.168.10.81:8080          103.100.61.18:29562         SYN_RECV    -                   
tcp        0      0 192.168.10.81:8080          103.100.61.18:50751         SYN_RECV    -                   
tcp        0      0 192.168.10.81:8080          103.100.61.18:11666         SYN_RECV    -

查了下資料。bash

https://baike.baidu.com/item/SYN%E6%94%BB%E5%87%BB/14762413?fr=aladdin

不想修改現有的服務器參數,防火牆是啥六壬網安福建本土垃圾設備,圖形頁面IP一個一個拉黑太累太慢,想了下在服務器上用iptables過濾,分享腳本服務器

#!/bin/bash
#使用crontab 調用每3分鐘一次,超過6分鐘能夠判斷爲SYN***

#抓出處於SYN_RECV狀態的IP地址 記錄日誌用於分析
netstat -antp|grep "SYN_RECV"|awk -F '[ :]' '{print$27}'|sort|uniq >> $0_ip.log

#分析日誌找到大於2次被掃描到的IP地址,加入防火牆
for ip in `cat $0_ip.log |sort|uniq -c|awk '{if($1>2) print$2}'`
do
	rule=`grep "$ip" /etc/sysconfig/iptables|wc -l`
	#判斷規則是否存在
	if [ "$rule" -ne 0 ];then
		echo "Firewall rule already exists"
	else
		#添加到防火牆 
		iptables -A INPUT -s $ip -j DROP
		#日誌移除IP地址
		sed -i "s|\<$ip\>||" $0_ip.log
		#記錄添加日誌
		echo "$(date "+%Y-%m-%d %H:%M:%S") $ip Add to firewall" >> $0.log
	fi
done
#centos7中沒有service iptables save指令來保存防火牆規則
iptables-save > /etc/sysconfig/iptables
相關文章
相關標籤/搜索