Fail2Ban 服务有助于阻止猜测您网站密码的机器人的 IP 地址。 最近,它经常被用来进行攻击,因为大量的 post 请求会给 Web 服务器带来巨大的负载。 在我们的示例中,我们将使用流行的 CMS(Wordpress)以及 ssh 服务的示例来研究阻止 IP 地址。
1.安装Fail2Ban服务
1.1 连接 Epel 存储库
yum install epel-release
然后在/etc/yum.repos.d/epel.repo中你需要启用它,enabled=1
yum install fail2ban
2. 常规设置
Fail2ban 服务将其配置文件存储在 /etc/fail2ban 目录中。 有一个带有默认值的文件,名为jail.conf。 由于该文件可能会被软件包更新覆盖,因此我们不应该使用它。 相反,我们将编写一个名为jail.local的新文件。 jam.local中定义的任何值都会覆盖jail.conf中的值。
jam.conf 包含一个 [DEFAULT] 部分,后面是各个服务的部分。 jam.local 可以覆盖这些值中的任何一个。 此外,/etc/fail2ban/jail.d/ 中的文件可用于覆盖这两个文件中的设置。 这些文件按以下顺序应用:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf, alphabetically
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local, alphabetically
让我们检查并添加默认设置到 /etc/fail2ban/jail.local 文件
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
我们重启一下服务
service fail2ban restart
我们用命令检查一下状态
fail2ban-client status
3.Wordpress 过滤器
让我们添加一个过滤器和一个规则(监狱)来阻止在 10 分钟内从同一 IP 地址访问地址 /wp-login.php(Wordpress 管理员)超过 10 次的 IP 地址。
3.1 过滤器
/etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200
ignoreregex =
使用此过滤器,我们将搜索 IP 地址。
3.2 添加监狱
/etc/fail2ban/jail.d/wordpress.conf
[wordpress]
action = iptables-multiport[name="wordpress", port="http,https"]
filter = admin-wordpress
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log
如果您使用其他 Web 服务器,则需要根据其生成日志的方式更改过滤器并指定日志文件 (access_log) 的正确路径。 进行更改后,您必须重新启动服务。