1. 程式人生 > >攔截相同IP連接數過大的會話請求

攔截相同IP連接數過大的會話請求

"攔截相同ip"

攔截相同IP連接數過大的會話請求


系統環境:Centos 6.5 x64


為避免Linux主機遭受攻擊,需要定時查看主機上的會話連接數。對於同一IP會話數過高的,肯定判斷為不正常。可以通過shell腳本定時把不正常的IP加入進防火墻中,來DROP掉它。


[[email protected] ssh]# vi /etc/ssh/blockip


#!/bin/bash

#auto drop IP ,IP address greater than 10

#by authors evanli 2017-6-15

ip_regex="[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}"

netstat -na --tcp| grep ESTABLISHED | awk ‘{ if ( index($4,":"‘"$port_num"‘"") ) print $5}‘ | awk -F ‘:‘ ‘{print $1}‘ | sort > /var/log/IPLIST

IP_ADDR=`tail -n 100 /var/log/IPLIST | egrep -o $ip_regex | sort -nr | uniq -c | awk ‘$1>=10 {print $2}‘`

IPTABLES_CONF=/etc/sysconfig/iptables

for i in `echo $IP_ADDR`

do

cat $IPTABLES_CONF |grep $i >/dev/null

if

[ $? -ne 0 ];then

sed -i "5 a -A INPUT -s $i/32 -j DROP" $IPTABLES_CONF

else

echo "This is $i is exist in iptables,please exit ....."

fi

done


給腳本可執行權限

[[email protected] ssh]# chmod +x /etc/ssh/blockip


添加到排程任務,每30分鐘執行一次

[[email protected]

/* */ ssh]# vi /etc/crontab

*/30 * * * * root /etc/ssh/blockip



腳本說明:

1、首先生成所有連接數IP的文件/var/log/IPLIST

2、在IPLIST文件中統計出現數次大於10的IP。awk ‘$1>=10 (此10數字可修成你需要的數字)

3、將出現數次大於10的IP加入到防火墻DROP掉。

4、判斷防火墻中是否存在該IP,如果有了,出現提示This is IP is exist in iptables,please exit .....

5、vi /etc/sysconfig/iptables 查看DROP掉的IP是否有加入進來。

6、查檢沒問題,最後需要重起防火墻,設定才會生效。


附件為腳本,可以直接運行


以上腳本測試完成於2017.06.15,by evan.li



本文出自 “虛擬化應用” 博客,轉載請與作者聯系!

攔截相同IP連接數過大的會話請求