Fail2Ban是一款實用軟件,可以監視你的系統日誌,然後匹配日誌的錯誤信息(正則式匹配)執行相應的屏蔽動作。
本次操作是因爲博客主機經常有掃描嘗試登陸SSH服務,所以想利用Fail2Ban聯動防火牆來阻止惡意掃描和密碼猜測等惡意***行爲。
配置發送郵件功能
不需要安裝第三方的郵件工具,直接使用系統自帶的mail即可。
這裏使用163的郵件來做爲服務器上的發郵件服務,通過它把警告發送到指定的企業郵箱。
1、修改配置文件/etc/mail.rc 添加以下內容:
因爲騰訊雲無法訪問到smtp.163.com 的25端口,所以只能使用465的ssl協議來發送郵件了。
未使用ssl協議時的配置:
set from=郵件地址@163.comset smtp=smtp.163.comset smtp-auth-user=郵件地址@163.comset smtp-auth-password=e8456ds78c23set smtp-auth=login
使用ssl協議來發郵件的配置:
set ssl-verify=ignoreset nss-config-dir=/etc/pki/nssdbset from=郵件地址@163.comset smtp=smtps://smtp.163.com:465set smtp-auth-user=郵件地址@163.comset smtp-auth-password=e8456ds78c23set smtp-auth=login
說明:
smtp-auth-password 並不是郵箱的密碼而是一個客戶端授權,當然利用授權碼就等同密碼差不多可以實現發郵件認證了。
SSl驗證跟普通的難證就差別在證書和smtps協議,還有就是端口變成了465
發郵件測試:
echo "郵件內容".|mail -v -s "郵件標題" [email protected]
完成上面的郵件發送配置後,這樣在接下來的郵件提醒功能才能完成,當然如果你不想要提示,可以直接跳過上面的郵件配置。
Fail2Ban安裝
先安裝EPLP源:
yum -y install epel-release
爲了方便直接使用fail2ban-all安裝
yum -y install fail2ban-all
============================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================ Installing: fail2ban-all noarch 0.9.7-1.el7 epel 11 kInstalling for dependencies: fail2ban-hostsdeny noarch 0.9.7-1.el7 epel 12 k fail2ban-mail noarch 0.9.7-1.el7 epel 15 k fail2ban-shorewall noarch 0.9.7-1.el7 epel 12 k gamin x86_64 0.1.10-16.el7 os 128 k gamin-python x86_64 0.1.10-16.el7 os 34 k perl-Digest noarch 1.17-245.el7 os 23 k perl-Digest-SHA x86_64 1:5.85-4.el7 os 58 k python-inotify noarch 0.9.4-4.el7 os 49 k shorewall noarch 5.1.10.2-1.el7 epel 636 k shorewall-core noarch 5.1.10.2-1.el7 epel 82 k whois x86_64 5.1.1-2.el7 os 72 kTransaction Summary ============================================================================================================================================================Install 1 Package (+11 Dependent packages) Total download size: 1.1 M Installed size: 4.1 M Is this ok [y/d/N]:
說明:
因爲使用fail2ban安裝時會只會安裝fail2ban包;而使用fail2ban-all安裝時就會把郵件提醒的工具也安裝上。就是mail-whois.conf相關的一些配置文件。
配置Fail2Ban
進入/etc/fail2ban目錄:
在目錄/etc/fail2ban/jail.d/下添加一個配置文件sshd.local,這裏不對文件修改/etc/fail2ban/jail.conf所以自己添加一新的配置文件。
[root@VM_0_5_centos jail.d]# cat /etc/fail2ban/jail.d/sshd.local[DEFAULT]ignoreip = 127.0.0.1/8bantime = 300findtime = 60maxretry = 5backend = systemddestemail = 接收報警的郵件地址sender = 發送者郵件地址mta = mailprotocol = tcpaction = %(action_mw)s //這裏是有變動的 [sshd]enabled = trueport = ssh端口,根據情況修改logpath = %(sshd_log)sbackend = %(sshd_backend)s
配置fail2ban發郵件提醒
以下是我配置的郵件格式:
[root@VM_0_5_centos jail.d]# egrep -v "^#|^$" /etc/fail2ban/action.d/mail-whois.conf[INCLUDES]before = mail-whois-common.conf[Definition]actioncheck = actionban = printf %%b "警告!!!\n ***者IP:<ip>\n 被***機器名:`uname -n` \n 被***機器IP:`/bin/curl ifconfig.co` \n ***服務:<name> \n ***次數:<failures> 次 \n ***方法:暴力破解,嘗試弱口令.\n 該IP:<ip>已經被Fail2Ban加入防火牆黑名單,屏蔽時間5分鐘.\n\n 以下是***者 <ip>信息 :\n `/bin/curl http://ip.taobao.com/service/getIpInfo.php?ip=<ip>`\n\n Fail2Ban郵件提醒\n\n "|/bin/mailx -s "服務器:<name>服務疑似遭到<ip>暴力***." <dest> actionunban =[Init]name = default dest = root
說明
通過
curl ifconfig.co
獲取服務器的外網IP地址,方便知道哪臺機報出來的告警。通過
curl http://ip.taobao.com/service/getIpInfo.php?ip=<ip>
淘寶的IP查詢獲取***者的一些IP信息。
修改完後啓動服務:
systemctl enable fail2ban.servicesystemctl start fail2ban.service
如果啓動的時候有異常可以,修改配置文件/etc/fail2ban/fail2ban.conf
開啓DEBUG日誌方便排查。第24行左右loglevel = DEBUG
;一般正常情況下使用INFO格式日誌即可以了。
嘗試使用一臺機器對本機的SSH嘗試登陸,失敗5次後就會把它加入到防火牆規則裏,其實在第四次密碼錯誤後,到第五次輸密碼時就已經發郵件了。
查看防火牆規則:[默認生成一個f2b-sshd表]
[root@VM_0_5_centos action.d]# iptables -vnL f2b-sshd Chain f2b-sshd (1 references) pkts bytes target prot opt in out source destination 13 1488 REJECT all -- * * 101.201.38.40 0.0.0.0/0 reject-with icmp-port-unreachable 185 17268 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
最後上個圖,手機上收到的郵件提示:
文章轉載自:封塵網