Image

知识库 → 设置 Fail2Ban 以防止密码猜测

[虚拟服务器]
出版日期: 27.01.2023

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) 的正确路径。 进行更改后,您必须重新启动服务。





暂时没有评论