SSH安全是服務器運維的重中之重,實際運用中常常有些傢伙喜歡嘗試掃描破解密碼,限制登錄IP和加入嘗試密碼錯誤兩次後自動封鎖IP後會安全一些
限制IP
1 編輯/etc/hosts.allow
添加 sshd:192.168.2.1:allow 192.168.2.1是允許的IP
或者 sshd:192.168.2.:allow 192.168.2.是2段
添加 sshd:all:deny 禁止其他IP登錄 這行也可以加在/etc/hosts.deny
2 編輯/etc/ssh/sshd_config
添加 allowusers [email protected] xxxx是允許的用戶名
重啓SSH
自動屏蔽多次嘗試密碼的用戶
寫腳本從日誌中篩選出登錄失敗2次以上的用戶添加到iptables禁止
腳本-網上找的。
#!/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