閱讀176 返回首頁    go 中電雲集


防範ssh攻擊的一個腳本

防範ssh攻擊的一個腳本

使用腳本統計係統的secure記錄,如下:

#!/bin/sh

#### 獲取前 1 分鍾內的 secure 記錄,統計 ssh 認證失敗的 IP 和其 失敗次數

SCANNER=`grep “$(date -d -1min|awk ‘{print substr($0,10,7)}’)” /var/log/secure|awk ‘/Failed/{print $(NF-3)}’|awk -F”:” ‘{print $NF}’|grep -v from|sort|uniq -c|awk ‘{print $1″=”$2;}’`

echo $SCANNER

for i in $SCANNER

do

# 取認證失敗次數

NUM=`echo $i|awk -F= ‘{print $1}’`

# 取其 IP 地址

IP=`echo $i|awk -F= ‘{print $2}’`

echo $NUM

echo $IP

# 若其在失敗次數超過 2 次且之前沒有被阻斷過,那麼添加一條策略將其阻斷,並記錄日誌

if [ $NUM -gt 2 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ]

then

iptables -I INPUT -s $IP -m state –state NEW,RELATED,ESTABLISHED -j DROP

echo “`date` $IP($NUM)” >> /var/log/scanner.log

fi

done

#執行方式

#chmod 755 /root/jinzhiip.sh

#vi /etc/crontab

#*/1 * * * * root /root/jinzhiip.sh

#用 crond 來運行,1 分鍾運行 1 次

#運行效果

#iptables -vnL INPUT

#查看日誌#cat /var/log/scanner.log

#清除所有攔截

#iptables -F

也可以采用iptables的連接計數器:

#同一個 IP 來源在一個小時內隻允許建立(或嚐試)三次 SSH 聯機

/usr/local/sbin/iptables -A INPUT -p tcp –dport 22 –syn -m recent –rcheck –seconds 3600 –hitcount 3 –rttl –name SSH –rsource -j DROP

/usr/local/sbin/iptables -A INPUT -p tcp –dport 22 –syn -m recent –set –name SSH –rsource -j ACCEPT

/usr/local/sbin/iptables -A INPUT -p tcp –dport 22 -j ACCEPT

最後更新:2017-01-04 22:34:31

  上一篇:go 用MRTG監測Linux係統CPU溫度
  下一篇:go 會員積分使用說明