zoukankan      html  css  js  c++  java
  • 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指导我

    作者:
    除特别声明为原创博文外,均可转载,也欢迎转载,未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利,谢谢您的配合。
  • 相关阅读:
    C#截取字符串的方法小结
    使用苏飞httphelper开发自动更新发布文章程序
    公务员“上班睡觉”为何会被强势围观?
    透明代理和匿名代理的区别
    Linux基础命令---ipcalc计算IP
    Linux基础命令---apwatch
    Linux基础命令---arping
    Linux基础命令---arp
    Linux基础命令---ifdown、ifup
    Linux基础命令---ifconfig
  • 原文地址:https://www.cnblogs.com/sillage/p/14589087.html
Copyright © 2011-2022 走看看