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

最后上个图,手机上收到的邮件提示:


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