# Learning Fail2Ban

[Fail2ban](https://www.fail2ban.org/) 是一套以 Python 語言所撰寫的 GPLv2 授權軟體，藉由分析系統紀錄檔，並透過設定過濾條件 (filter) 及動作 (action)，當符合我們所設定的過濾條件時，將觸發相對動作來達到自動化反應的效果 (如封鎖來源 IP、寄信通知管理者、查詢來源 IP 資訊等)。因其架構相當彈性，我們可以針對自己的需求，設計不同的過濾條件與動作來達到伺服器防護的功能，或是及時的反應某些異常資訊。常見應用有：

- 阻擋 SSH、FTP 多次嘗試錯誤連線；
- 阻擋特定的瀏覽器或網路爬蟲；
- 提供管理者了解異常伺服器服務要求 (如 apache、bind、postfix、vsftpd、proftpd…)。

常見的像是 SSH 服務，當使用者嘗試輸入帳號密碼進行登入時，如發生驗證錯誤，系統將紀錄事件於記錄檔中。藉由即時的分析系統紀錄檔，我們可以過濾出一些有用的資訊，再加以判斷此類事件是否對伺服器服務有害。

GitHub: [https://github.com/fail2ban/fail2ban](https://github.com/fail2ban/fail2ban)

##### Tutorials

- [Configure fail2ban to use route instead of iptables to block connections](https://www.faqforge.com/linux/controlpanels/ispconfig3/configure-fail2ban-to-use-route-instead-of-iptables-to-block-connections/)
- [How to Create a Simple IP Blocker Script Using iptables and Fail2Ban](https://www.tecmint.com/bash-script-to-block-ip-with-iptables/)
- [Fail2Ban Prometheus Exporter](https://github.com/hctrdev/fail2ban-prometheus-exporter)