找回密码
 立即注册
查看: 3317|回复: 0

如何使用Fail2ban监控系统日志并保护服务器和发送警报邮件

[复制链接]

69

主题

0

回帖

11万

积分

VIP

积分
117731
发表于 2021-5-29 10:13:56 | 显示全部楼层 |阅读模式
本帖最后由 Millionaire 于 2026-1-30 12:00 编辑

查看Web服务器的访问志我们会发现时常有DIRB、ZmEu这类扫描工具的请求,它们会访问包含admin、phpMyAdmin和其他让人感到厌烦的链接。通过在Fail2ban中编写过滤器进行匹配,然后自动添加防火墙规则,可以将其IP地址屏蔽掉并发送警报邮件。此外Fail2ban还支持SSH等各种服务,下面只是介绍其使用过程,要发挥真正的保护作用,则需要根据实际自行设定。

一、安装Fail2ban
执行以下命令安装Fail2ban:
  1. yum install fail2ban
复制代码
设置开机自启动:
  1. systemctl enable fail2ban
复制代码
启动Fail2ban:
  1. systemctl start fail2ban
复制代码

二、配置
Fail2ban默认的配置路径为/etc/fail2ban/。此部分的每个.conf文件都可以使用扩展名为.local的文件覆盖,修改也应该在.local文件中进行,这样可以在Fail2ban升级时仍保留之前的修改。
1.创建jail
复制jail.conf文件为jail.local:
  1. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
复制代码
然后打开,添加以下内容:
  1. [apache-botrequest]
  2. enabled  = true
  3. port     = http,https
  4. filter   = apache-request
  5. action   = firewallcmd-rich-rules[port="http,https"]
  6.            mail-whois[name=Apache, [email protected]]
  7. logpath  = /var/log/httpd/access_log
  8. bantime  = 1800
  9. maxretry = 3
  10. findtime = 10
复制代码
在上面的配置中,如果Apache在10秒钟内收到3次和过滤器匹配的访问请求,则将屏蔽访问者的IP地址1800秒,并向dest参数设置的邮箱发送警报邮件。为了使mail命令能正常发送邮件,可以参考使用mailx在Linux系统上发邮件(SMTP方式)进行配置,此外邮件功能中还用到whois命令(可选),安装命令如下:
  1. yum install mailx
复制代码
参数说明:
enabled:启用状态。true为启用,false为关闭。
port:端口,http和https协议的默认端口分别为80、443。
filter:过滤器,名称为apache-request,即对应的是/etc/fail2ban/filter.d/目录下的apache-request.local文件。
action:操作,可以包含多个操作,名称为firewallcmd-rich-rules,即对应的是/etc/fail2ban/action.d/目录下的firewallcmd-rich-rules.conf文件。
logpath:日志路径。
bantime:禁止时间(单位为秒)。
maxretry:最大尝试次数。
findtime:查找时间(单位为秒)
2.添加filter
在/etc/fail2ban/filter.d/目录新建apache-request.local文件,添加以下内容:
  1. [Definition]

  2. failregex = ^<HOST>\s-\s-\s.*"(GET|POST).*".*
复制代码
3.添加action
如果在/etc/fail2ban/action.d/没有mail-whois.conf这个文件,请从官方项目地址下载对应版本的Fail2ban,在config目录下的action.d目录中找到mail-whois.conf文件并上传。然后重启Fail2ban:
  1. systemctl restart fail2ban
复制代码
当有IP地址被屏蔽时,服务器会发出如下的警报邮件。
Screenshot_20210529_094138_com.tencent.androidqqm.jpg

三、添加白名单
打开/etc/fail2ban/jail.conf文件,在[DEFAULT]部分的ignoreip项中输入IP地址,如下所输入的IP地址192.168.1.3将不会被屏蔽。
  1. ignoreip = 192.168.1.3
复制代码

四、查看被屏蔽的IP地址
查看apache-botrequest的当前状态,Banned IP list项显示的是已屏蔽的IP地址。
  1. fail2ban-client status apache-botrequest
复制代码

五、取消屏蔽
例如,取消apache-botrequest中已屏蔽的IP地址192.168.1.3,可以执行以下命令:
  1. fail2ban-client set apache-botrequest unbanip 192.168.1.3
复制代码
如果要取消所有的屏蔽,则执行以下命令:
  1. fail2ban-client unban --all
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VIP会员|Archiver|小黑屋|手机版|i am Bug

GMT+8, 2026-6-5 09:12 , Processed in 0.016874 second(s), 22 queries .

Powered by Discuz!

Copyright © 2021-2026, i am Bug.

快速回复 返回顶部 返回列表