如何在 Ubuntu 下避免 SSH/POP3 暴力攻擊

每天檢查 /var/log/auth.log 時,總會看到很多人想要登入這台 CubieTruck(真不明白意圖為何,不就一台小CubieTruck),雖說我已經做了下面保護了

  1. 採用 SSH 金鑰登入,而非一般密碼登入
  2. 嚴禁 root 登入
  3. 限制 IP 位址登入

但總是有那麼多無聊的人想要用暴力攻擊的方式進入試探你的密碼,之前找了很多防止暴力攻擊的方法(用 iptables的方式,而不是用 fail2ban),都不見成效。所以昨晚 Google 一晚,終於找到了,而且還不難。假定你的 SSH Port 是預設的 22的話,用 root 帳號輸入

#iptables -I INPUT 1 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --update --seconds 60 --hitcount 3 -j REJECT
#iptables -I INPUT 2 -p tcp --dport 22 -m state --state NEW -m recent --name ssh --set

這樣就可以在每分鐘內企圖登入(不管登入成功與否)第四次以上,連線都不會建立成功。事實上我也想過是否會有人無聊到一直連線,讓我自己也登不進去呢?畢竟它可不認 IP,且不會管是否事後登入成功。但事實上機率很小的。原因

  1. 我一直都會有一個以上的登入 SSH,而這個方法不會影響到已經登入的 SSH。我可以利用這個 SSH 來禁止那個無聊 IP 登入
  2. 我的 SSH 還有另外一個非 22 Port,而這個 Port 只能內網登入,外網在IP分享器中是沒有開放的。我可以採用 VPN 先登入內網,然後再禁止那個無聊IP進入。
  3. 如果真的有心DDoS你的伺服器,除了這個方法,它還有很多方法可以使用,大可不必大費周章只攻擊你的 SSH。

還有另外一個Port也有可能,就是收信 POP3 Port 110/IMAP Port 143,它也可以用來暴力攻擊試探你的密碼,所以保險起見,也把 POP3 Port 110 /IMAP Port 143一併加入吧!

#iptables -I INPUT 1 -p tcp --dport 110 -m state --state NEW -m recent --name pop3 --update --seconds 60 --hitcount 3 -j REJECT
#iptables -I INPUT 2 -p tcp --dport 110 -m state --state NEW -m recent --name pop3 --set
#iptables -I INPUT 1 -p tcp --dport 143 -m state --state NEW -m recent --name imap --update --seconds 60 --hitcount 3 -j REJECT
#iptables -I INPUT 2 -p tcp --dport 143 -m state --state NEW -m recent --name imap --set

順道附上利用 iptables 禁止 a.b.c.d 的 IP登入你的 CubieTruck 的方法:

#iptables -I INPUT -s 11.22.33.44 -j DROP
#iptables -I OUTPUT -d 11.22.33.44 -j DROP

發佈留言

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