Fail2ban常用配置

Fail2ban是一款开源的Linux平台网络工具,它会监视指定的日志文件,例如 SSH、HTTP等服务的日志文件,基于正则表达式以识别恶意行为,例如登录失败尝试、恶意请求等日志。当匹配到规则时,Fail2ban会触发定义的响应操作,例如将攻击者的 IP 地址添加到防火墙规则中以阻止其访问,或向管理员发送电子邮件报警。

本文搭配Firewalld防火墙,介绍常用配置。

安装

apt install fail2ban

配置

Fail2ban的配置文件默认为/etc/fail2ban/fail2ban.conf/etc/fail2ban/jail.conf,但不要修改它们,而是通过新建jail.local文件来覆盖一些默认的配置。

nano /etc/fail2ban/jail.local

这里通过sshd的防护示例配置来介绍一些参数。

#DEFAULT默认配置
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
banaction = firewallcmd-ipset
findtime = 30
maxretry = 3
bantime = 1h

#ssh服务
[sshd]
enabled = true
filter = sshd
port = 22
findtime = 2m
maxretry = 5
bantime = -1
  • DEFAULT:默认配置。覆盖fail2ban.conf中的相应条目。
  • ignoreip:永远不会被禁止的IP地址白名单。本地主机的IP地址(127.0.0.1/8),其IPv6相当于(::1)。
  • banaction:这里使用Firewalld防火墙。
  • findtime: 时间周期。
  • maxretry: 在findtime时间内允许的最多失败次数。
  • bantime: 禁止IP地址的持续时间。单位默认为秒(“ m”代表分钟,“ h”代表小时)。值-1将永久禁止。
  • sshd:自定义的服务配置名。
  • enabled:是否启用这项服务配置。
  • filter:规则名称,必须填写位于fail2ban/filter.d目录里面的规则。sshd是fail2ban的内置规则。
  • port:对应端口。以逗号间隔。可以指定一个端口范围,例如 5000:10000.

上面的配置表示ssh服务在2分钟的周期内最大尝试5次失败,违反这个规则将被永久封禁IP。

启用配置

在增加或修改 Fail2Ban 的新配置后,需要重新加载配置来生效。

fail2ban-client reload

查看指定服务状态

包括已经封禁的IP列表,例如sshd:

fail2ban-client status sshd

手动封禁IP

指令格式为:fail2ban-client set <JAIL> banip <IP>

例如指定sshd服务而封禁某IP:

fail2ban-client set sshd banip 192.168.1.100

解除指定被封禁的IP

例如解除因sshd服务而被封禁的某IP:

fail2ban-client set sshd unbanip 192.168.1.100

查看fail2ban日志

tail -f /var/log/fail2ban.log

只显示封禁/解封日志

tail -f /var/log/fail2ban.log | grep fail2ban.actions

Woredpress登录页面配置

wordpress的登录页面是wp-login.php,当有人频繁扫描这个页面时,将它封禁。

先在fail2ban/filter.d目录新建一个规则文件,例如:

nano /etc/fail2ban/filter.d/wordpress.conf

增加以下内容:

[Definition]
failregex = ^<HOST> -.*"POST /wp-login\.php.*HTTP.*" 403 .*
            ^<HOST> -.*"GET /wp-login\.php.*HTTP.*" 403 .*
ignoreregex =

修改Fail2ban的配置文件,追加以下内容:

[wordpress]
enabled = true
filter = wordpress
port = http,https
findtime = 1m
maxretry = 20
bantime = 24h
logpath = /var/log/nginx/access.log
  • logpath:nginx的日志文件路径。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注