Fail2ban
fail2ban掃描日志文件並且可以識別禁用某些多次嘗試登錄的IP,通過更新系統的防火牆規則來實現拒絕該IP連接,也可以配置禁用的時間。fail2ban提供了一些常用軟件默認的日志過濾規則,方便用戶使用,當然也可以自己進行配置filter,預定於提供過濾規則的軟件有sshd、apache、nginx等。fail2ban是開源的自由軟件,可以在github上查看詳細介紹。fail2ban
1. 安裝
yum install fail2ban #Centos使用安裝源安裝
###當然也可以使用github源碼的安裝腳本進行安裝
fail2ban-client -h #安裝完成后,可以查看client的幫助
安裝完成后,可以在/usr/bin/目錄下找到fail2ban-*相關的二進制可執行文件,在/etc/fail2ban/目錄下找到相關的配置文件。/etc/fail2ban/目錄下的配置文件有action(執行的動作)相關的、filter(日志過濾匹配)相關的、jail.conf(配置啟用的參數)相關的。我這里介紹設置使用默認的sshd過濾規則,然后如果觸發了禁用該IP連接並郵件通知。
2. 使用
默認安裝好的fail2ban並沒有設置開機自啟,按需是否設置開機自啟:
service fail2ban status #查看服務是否開機自啟
service fail2ban enable #設置fail2ban服務開機自啟
- 配置郵件
我這里使用網易郵箱作為郵件發送方,其它郵箱服務器按需調整。Centos默認是有郵件服務的,需要設置相關的配置文件。首先編輯/etc/mail.rc文件,設置郵件發送方的配置:
vim /etc/mail.rc
在mail.rc文件最后填入配置
set ssl-verify=ignore #不驗證使用ssl
set from=superlollipop@163.com #郵件發送方
set smtp=smtp.163.com #郵箱服務器
set smtp-auth-user=xxx@163.com #發送方郵箱賬號
set smtp-auth-password=xxxx #發送方郵件密碼,xxx不是登錄密碼,是163郵箱的SMTP授權碼
set smtp-auth=login
配置完mail.rc文件后保存,可以測試是否可以成功發送郵件:
echo "郵件內容" | mail -v -s "郵件標題" xxx@qq.com #測試郵件發送,xxx@qq.com為收件人郵箱
- 配置jail.local
上述郵件配置測試通過后,就可以自定義jail.local文件進行配置了,在/etc/fail2ban/目錄下新建jail.local文件
vim /etc/fail2ban/jail.local
輸入配置文本並保存:
[DEFAULT] #也可以不設置這個
ignoreip = 127.0.0.1 #默認忽略IP
bantime = 86400 #禁用時間,描述。這里為1天
maxretry = 3 #最大嘗試次數
findtime = 1800 #在1800秒內嘗試了3次失敗就觸發action,這里沒有action
[ssh-iptables] #ssh防火牆配置模塊
enabled = true #true為啟動該配置,false不啟用
filter = sshd #filter為sshd,在/etc/fail2ban/filter.d/目錄下有過濾規則文件sshd.conf,這個是預配置提供的,也可以自己修改
ignoreip = 14.23.92.186 #忽略IP
action = iptables[name=SSH, port=ssh, protocol=tcp]
mail-whois[name=SSH,dest=xxxx@qq.com,sender=xxxx@163.com]
#action為觸發后執行的動作,這里有兩個動作,第一個是使用iptables禁用IP連接,第二個發送郵件,[]符號內的為參數。第二個動作的的參數dest是收件人,sender是發件人。iptables和mail-whois等action可以在/etc/fail2ban/action.d/目錄下查看到相關的配置.conf文件,當然也可以自己修改。
logpath = /var/log/secure #過濾規則的源文件,這是centos的日志文件,Ubuntu的好像是/var/log/auth.log文件,根據實際修改
maxretry = 10 #最大嘗試次數為10次
findtime = 600 #在10分鍾內嘗試
bantime = 86400 #禁止時間為一天
- 啟動服務
配置成功后,就可以啟動服務運行了。
service fail2ban start #啟動服務
fail2ban-client status #通過fail2ban-client查看啟動的模塊
fail2ban-client status ssh-iptables #通過fail2ban-client查看啟動的ssh-iptables模塊詳細
