ssh多次失敗登錄即封掉IP,防止暴力破解​​

一、系統:Centos6.3 64位

二、方法:讀取/var/log/secure,查找關鍵字 Failed,例如(注:文中的IP地址特意做了刪減):

Sep 17 09:08:09 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2

Sep 17 09:08:20 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2

Sep 17 09:10:02 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2

Sep 17 09:10:14 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2

從這些行中提取IP地址,如果次數達到10次(腳本中判斷次數字元長度是否大於1)則將該IP寫到 /etc/hosts.deny中。

三、步驟:

1、先把始終允許的IP填入 /etc/hosts.allow ,這很重要!比如:

sshd:19.16.18.1:allow

sshd:19.16.18.2:allow

2、腳本 /usr/local/bin/secure_ssh.sh

#! /bin/bash

cat /var/log/secure|awk ‘/Failed/{print $(NF-3)}’|sort|uniq -c|awk ‘{print $2″=”$1;}’ > /usr/local/bin/black.list

for i in `cat  /usr/local/bin/black.list`

do

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

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

     if  [  ${#NUM} -gt  1  ]; then

         grep $IP /etc/hosts.deny > /dev/null

         if  [  $? -gt  0  ];then

             echo “sshd:$IP:deny” >> /etc/hosts.deny

         fi

     fi

done

3、將secure_ssh.sh腳本放入cron計畫任務,每1分鐘執行一次。

# crontab -e

*/1 * * * *  sh /usr/local/bin/secure_ssh.sh

四、測試:

1、開兩個終端視窗,一個ssh連上伺服器,另一個用錯誤的密碼連接伺服器幾次。

很快,伺服器上黑名單檔裡已經有記錄了:

[root@ ~]# $ cat /usr/local/bin/black.txt 

13.26.21.27=3

再看看伺服器上的hosts.deny

[root@ ~]# cat /etc/hosts.deny

sshd:13.7.3.6:deny

sshd:92.4.0.4:deny

sshd:94.10.4.2:deny

sshd:94.4.1.6:deny

sshd:11.64.11.5:deny

2、從另一個終端視窗繼續“暴力”連接伺服器。

看看伺服器上的黑名單檔:

[root@ ~]# cat /usr/local/bin/black.txt

13.26.21.27=6

再看看伺服器上的hosts.deny

[root@ ~]# cat /etc/hosts.deny

sshd:13.7.3.6:deny

sshd:92.4.0.4:deny

sshd:94.10.4.2:deny

sshd:94.4.1.6:deny

sshd:11.64.11.5:deny

sshd:13.26.21.27:deny

IP 已經被加入到伺服器的hosts.deny,再用正確的密碼連接伺服器,被拒絕:

$ ssh root@myserver.mydomain.com -p 2333

ssh_exchange_identification: Connection closed by remote host

注:

1.腳本為同事編寫。

2.伺服器sshd埠已改為2333,事實證明,改了埠後,暴力破解的ssh連接數銳減,呵呵。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Scroll to Top