參考文章:
http://www.shunze.info/forum/thread.php?threadid=1889&boardid=3&sid=88fa90b4c493529c66704a5cdbc8cf9f
下載fail2ban
其中 jail.conf 會因套件的更新而被覆寫,所以fail2ban要求使用者先建立一個副本 jail.local,所有的設定均於 jail.local 進行編輯。
設定檔 fail2ban.conf 裏,主要是對log的層級進行定義,維持預設即可,
裏面有一個重要參數 logtarget 定義了fail2ban的log檔,預設路徑如下,
當fail2ban在執行上有問題時,可於log檔中尋找問題線索。
而 jail.conf 的 [DEFAULT] 區段裏,則可對白名單、封鎖時間、允許密碼猜測次數、封鎖動作,等進行定義。
其中 ignoreip 參數是用來定義白名單,預設只有 127.0.0.1/8 本機網段,有需要增加網段時,以空白字元分隔即可。
現有服務設定
通用區段裏的參數設定好了,接著就在設定檔的後半段來進行個別服務的設定。
fail2ban預設只對SSH啟用,所以在jail.conf的 [ssh] 區段裏,我們可以看到 enabled 參數是 true 啟用的;而其它 [sasl]、[vsftpd]、[postfix]、[dovecot]…區段的 enabled 參數則是 false,預設狀態下未啟用。這部分請依實際需求來進行啟用。
使用錯誤的密碼來登入SSH進行測試,在失敗次數達最大值後,理論上我們會被強迫踢出,
我們可以透過iptables的檢視指令,來查看被封鎖的規則。
由於fail2ban是透過iptables來進行封鎖的,若要解鎖就要查出它是對應到哪條規則,然後再去刪除掉這條規則。
舉個例子為例,透過 iptables -L –line-numbers 查出的chain-name為fail2ban-ssh,遭封鎖IP 192.168.0.2的line-number為1,那我們就可以下如下的指令將這條規則刪除,以解除192.168.0.2的封鎖。
如果想要更狠一點,一偵測到密碼猜測的行為,就直接封鎖該IP,
管它用的是SSH還是FTP,完全拒絕提供該IP任何服務,那要怎麼做?
首先,先在 jail.local 中查看 banaction 參數的內容(預設是iptables-multiport)。
以預設的 iptables-multiport 為例,接著到 /etc/fail2ban/action.d/ 目錄下,修改對應的設定檔 iptables-multiport.conf,將 actionban 與 actionunban 這兩個iptables的規則改為完全封鎖的設定。
最後再重啟fail2ban服務即可~
重開機或重啟服務後,因iptables中對應的chain重新載入,之前封鎖的IP就不見。