我在管理 Linux 主機時最常遇到的一個問題就是只要系統一上線,就會開始有人來 try 我的主機,所以我通常把不太對外的 port 用 iptables 設定僅限於特定 IP 可以存取,不過有時後主機必須對外的時候,被 try 的機會就很高了,例如說 SSHD 就是最常被入侵攻擊的服務之一,今天將介紹 DenyHosts 套件,可有效的幫你阻擋非法的入侵行為。
DenyHosts 是一支用 python 寫成的 Script,主要目的就是幫助 Linux 系統管理者保護你的 SSH 伺服器,避免被駭客用字典攻擊或暴力攻擊(就是一直用不同的帳號、密碼嘗試登入就是了)。如果你有固定在看你的 /var/log/auth.log (或 /var/log/secure)安全紀錄檔的話,就可以知道有多少人在攻擊或嘗試登入你的主機了。而 DenyHosts 就是用來分析這個檔案,將非法登入的行為紀錄下來,超過允許的次數後就會將遠端的 IP 寫入到 /etc/hosts.deny 檔案裡,直接將該 IP 給封鎖住,讓駭客無法再連線。
DenyHosts 真的很簡單易用,不像 iptables 要設定許多複雜的 rules,如果你是用 Ubuntu 的話,只要下一行指令就可以完成所有安裝、設定、啟用服務的工作了,如下:
apt-get install denyhosts
如果你想讓 DenyHosts 偵測到攻擊行為時發一封 Email 通知你的話,你也可以設定 /etc/denyhosts.conf 檔案,並找到 ADMIN_EMAIL 的地方設定即可。
設定好之後必須要重新啟動 DenyHosts:
/etc/init.d/denyhosts restart
相關連結