Fail2ban介紹
Fail2ban的原理是獲取系統服務的消息日誌,根據日誌的內容匹配自定義的規則,從而觸發自定義的動作;它與rdpguard原理相同,是運行在linux平臺上的一個動態防禦系統。
例如:定義某IP在10分鐘內訪問nginx時返回403的響應5次,那麼Fail2ban就會調用iptables封禁該IP。
Fail2Ban安裝和使用
1. 安裝和配置
系統採用centos7 安裝epel後 yum install -y fail2ban 安裝。
fail2ban 結構:
/etc/fail2ban ## fail2ban 服務配置目錄。
/etc/fail2ban/action.d ## iptables 、mail 等動作文件目錄。
/etc/fail2ban/filter.d ## 條件匹配文件目錄,過濾日誌關鍵內容。
/etc/fail2ban/jail.conf ## fail2ban 防護配置文件。
/etc/fail2ban/fail2ban.conf ## fail2ban 配置文件,定義日誌級別、日誌、sock 文件位置等。
[DEFAULT] #默認的,優先級最低。
ignoreip = 127.0.0.1/8 192.168.1.0/24 # 白名單 。
bantime = 600 # 封禁時間,單位:秒,-1為永久封鎖。
findtime = 600 # 在多久的時間內,單位:秒 。
maxretry = 3 # 登錄失敗次數封鎖。
2. SSH防暴力破解配置
cp jail.conf jail.local (修改前cp一下jail.conf文件,如果不cp為local會導致啟動出錯)。
使用yum安裝完成之後配置文件會帶一些規則,但是規則默認不開啟。
將裡面enabled = false 修改為true即可啟動。
測試開啟ssh enabled = true。
3、Mysql防暴力破解
修改mysql的配置文件/etc/my.cnf。
重啟數據庫 systemctl restart mairadb。
在filter.d裡面添加規則mysqld.conf。
[root@nginx-test filter.d]# vim mysqld.conf
[INCLUDES]
before = common.conf
[Definition]
failregex = Access denied for user '\\w+'@'<host>'/<host>
ignoreregex =
修改jail.conf,添加mysql的配置。
[mysqld]
enabled = true
filter = mysqld
action = iptables[name=mysql, port=3306, protocol=tcp]
logpath = /var/log/mariadb/mariadb.log
maxretry = 4
然後重啟fail2ban。
4、Fail2ban的小命令
解除ssh的封禁:fail2ban-client set ssh unbanip 192.168.10.192
查看fail2ban狀態:fail2ban-client status
重啟fail2ban:systemctl restart fail2ban
5、小結
fail2ban是由python編寫,自帶高質量的規則庫。也可以自己編寫規則,可以結合sendmail進行封禁後的郵件告警。
閱讀更多 一個路過的醬油瓶 的文章