CentOS 7.8 上安裝fail2ban
fail2ban 很好用, 可用來監控server的log, 智慧型增加防火牆設定, 阻擋暴力入侵.
但是google查詢 fail2ban ,可以發現一大堆設定, 嘆為觀止. 實際安裝起來真是“容易卻很艱難, 簡單又極複雜”.
最近我用自製的 docker快速建立支援Active Directory的Mail Server , 透過網域主控站, 管理郵件伺服器的帳號, 非常方便.
但是我卻遇到暴力破解帳號密碼的攻擊.
主機在越南, 該ip以前就曾被列入黑名單, 有可能過去”被用來“做壞事, 在吃好幫相報的效應下, 超級有名氣!
想當然這個ip被白道認定是壞主機要防禦, 黑道認定是好主機要入侵, 名符其實”被欺負又被全世界討厭的感覺”
tail 一下maillog , 真是不得了, 隨時隨地都有ip嘗試暴力入侵, 每分鐘大概有千次sasl auth連線入侵紀錄.
由於先前安裝mail server, docker 並沒有加上 –net=host , 所以log看不出來從哪個ip入侵,
因此使用我的docker mail server , 必須加上 –net=host 的參數, 使用fail2ban才有意義.
此外預設 fail2ban 查看的log跟docker不同, 需要注意一下 , fail2ban的 jail.local 參數backend要改用auto.
以下是安裝紀錄:
1. 安裝套件
***2020-12-10更新, 若系統運行很久才裝, 要考慮之前已預裝的fail2ban, 請先移除先前所有fail2ban套件,以及/etc/fail2ban的目錄後,再重新安裝
yum install epel-release -y yum install fail2ban fail2ban-all fail2ban-systemd systemctl enable fail2ban
2. 建立jail.local
postfix-sasl : 30分鐘入侵3次就關進監獄,關一天 ,
recidive: 一個月兩次進監獄的累犯關一年
vi /etc/fail2ban/jail.local ############################### [DEFAULT] # "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not # ban a host which matches an address in this list. Several addresses can be # defined using space separator. ignoreip = 127.0.0.1 # Override /etc/fail2ban/jail.d/00-firewalld.conf: banaction = iptables-multiport [postfix-sasl] enabled = true bantime = 86400 findtime = 1800 maxretry = 3 filter = postfix[mode=auth] logpath = <docker maillog> backend = auto [dovecot] enabled = true maxretry = 3 bantime = 86400 findtime = 1800 filter = dovecot[mode=aggressive] logpath = <docker maillog> backend = auto [recidive] enabled = true bantime = 31536000 ; 1 year findtime = 18144000 ; 1 month maxretry = 2 logpath = /var/log/fail2ban.log backend = auto ###############################
3. 啟用fail2ban
systemctl start fail2ban
4. 查看狀態
fail2ban-client status postfix-sasl
5.手動解除
fail2ban-client set postfix-sasl unbanip <IP>