Fail2Ban利用邮箱发送邮件提醒功能

前言

注:此教程仅限折腾使用,实际用起来,时不时给你发一封邮件,笔者感觉很烦人。我们其实不关心谁在进行ssh爆破,反正会自动ban掉,我们担心的是fail2ban服务宕掉,或者重启机子后忘了启动fail2ban(可能性非常小,但是笔者遇到过),所以推荐做一个开机自启,和计划任务,定时重启fail2ban。

这里我是用的两台centos7做的练习,一台腾讯云,一台阿里云
首先需要一个邮箱,这里我们去163邮箱申请的一个:https://mail.163.com/register/index.htm?from=163mail
观看该博文前建议阅读一下fail2ban防ssh爆破(不看也影响不大):https://www.cnblogs.com/sillage/p/13966485.html
这里我试验的场景就是在遭受ssh爆破的时候,尝试次数达到设置的数值后,ban掉该ip并且发送邮件提醒

教程

配置mail.rc文件

配置好该文件,可实现linux快速发邮件
由于服务器无法访问到smtp.163.com 的25端口,所以只能使用465的ssl协议来发送邮件了,对mail.rc做好备份后(小提示:任何你不熟悉的文件进行配置之前建议做一个备份),进行修改:

cp /etc/mail.rc /etc/mail.rc.bak
vim /etc/mail.rc

配置如下:

set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
set from=邮件地址@163.com
set smtp=smtps://smtp.163.com:465
set smtp-auth-user=邮件地址@163.com
set smtp-auth-password=授权码
set smtp-auth=login

注:smtp-auth-password不是填写邮箱密码,而是邮箱的授权码,你可以理解为斗罗中的教皇令,教皇令代表着教皇,这个授权码也代表密码,可以用来登陆

发邮件测试:

echo "邮件内容".|mail -v -s "邮件标题" XXX@qq.com

如果收到邮件则说明配置无误。

配置sshd.local

进入/etc/fail2ban/jail.d/目录直接新建一个sshd.local:

cd /etc/fail2ban/jail.d/
vim sshd.local

添加以下内容:

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 300  //默认单位为秒,d为天数,365d为365天
findtime  = 60  //三百秒内重试次数超过3次触发jail,删除该选项,则变为无论什么时候重试次数超过三次触发jail
maxretry = 3   //最大尝试次数
backend = systemd
destemail = 接收报警的邮件地址
sender = 发送者邮件地址
mta = mail
protocol = tcp
action = %(action_mw)s  

[sshd]
enabled = true
port    = ssh端口,根据情况修改
logpath = %(sshd_log)s
backend = %(sshd_backend)s
  • 注:如果同时存在/etc/fail2ban/jail.local和/etc/fail2ban/jail.d/sshd.local文件,关于对ssh的约束,后者的优先级是高于前者的

配置mail-whois.local

当你完成以上配置的时候,重启fail2ban服务就已经能收到邮件提示该服务已经启动了,如下图(如果你没看到邮件提示,请看下面总结的第三条):

systemctl restart fail2ban

我们把要配置的mail-whois.conf复制并改名为mail-whois.local

cp /etc/fail2ban/action.d/mail-whois.conf /etc/fail2ban/action.d/mail-whois.local

然后再修改mail-whois.local文件,达到我们想要的邮件的格式和内容
其实到这里教程也就基本结束了,该配置文件可根据自身需要自行修改,可参考下面这篇帖子。
本博文部分内容参考自:封尘网

最终效果图

折腾了以晚上以及一大上午,终于把这个给实现了,来看一下效果图(注:这是未修改mail-whois.local的邮件样式):

总结

  • 先检查是否可以发送邮件,echo "邮件内容".|mail -v -s "邮件标题" XXX@qq.com
  • 如果postfix服务有问题,vi /etc/postfix/main.cf,inet_interface=localhost,localhost改为all试试,然后重启postfix
  • 经过我开虚拟机再次实验进行对比后发现,最重要的是要设置setenforce 0

致谢

昨晚熬夜一小时还是没把这个邮件弄好,感觉自己有点废,感觉配置都是对的,但是又总是不能自动发邮件
最后感谢封尘网前辈的帮助,先是邮件的互动,后是加了qq指导我

posted @ 2021-03-30 22:41  nihinumbra  阅读(1550)  评论(0编辑  收藏  举报