Centos7安裝Fail2Ban並利用163郵箱發送郵件提醒功能

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

最後上個圖,手機上收到的郵件提示:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章