如何在Ubuntu14.04上使用Fail2Ban保护WordPress

来自菜鸟教程
跳转至:导航、​搜索

介绍

WordPress 是一个非常强大的内容管理系统 (CMS),它是免费和开源的。 由于任何人都可以在 WordPress 上发表评论、创建帐户和发帖,因此许多恶意行为者创建了机器人和服务器网络,通过蛮力攻击危害 WordPress 网站并向其发送垃圾邮件。 Fail2ban 工具可用于防止未经授权访问您的 Droplet 和 WordPress 网站。 它会记录可疑或重复的登录失败,并通过修改您的 Droplet 的防火墙规则来主动禁止这些 IP。

在本指南中,我们将在 Ubuntu 14.04 LAMP 服务器上使用 Fail2ban 0.9.3 版,并通过使用垃圾邮件日志插件将其与 WordPress 集成。

先决条件

要完成本指南,您需要

第 1 步 – 安装 WordPress Fail2ban 插件

首先,通过在浏览器中访问 https://your_server_ip/wp-admin 并使用您在安装 WordPress 时创建的管理员凭据登录到您的 WordPress 站点。 登录后,您将看到以下屏幕,这是您的 WordPress 仪表板。

查看左侧边栏的单词 Plugins,它会出现在边栏的一半左右。 点击Plugins后,你会看到这个画面:

在靠近顶部的右侧部分,您可以单击 Add New。 这允许您向 WordPress 站点添加新插件,以自定义、保护或扩展您的站点。 在这种情况下,我们将搜索 Fail2ban 插件。 下一个屏幕将如下所示:

在搜索字段中输入 Fail2ban,然后按键盘上的 ENTER。 结果应该返回一个显示一些插件的屏幕,其中要安装的是 WP fail2ban

点击Install Now开始安装,会出现两个提示:Activate PluginReturn to Plugin Installer。 选择 Activate Plugin,您的浏览器会将您返回到已安装插件的列表,列表中包含新的 WP fail2ban 插件。 这时候,你可以点击【X28X】查看详情【X44X】查看更多关于你的新插件的信息。 还有一个常见问题解答将帮助您了解如何启用功能,例如阻止可能用于向您的 WordPress 网站发送内容或评论的垃圾邮件的特定用户。

第 2 步 — 将 WordPress 过滤器应用于 Fail2ban

这个 WordPress 插件包括一个新的自定义 Fail2ban 过滤器。 在此步骤中,我们将安装该过滤器,以便 Fail2ban 可以正确解析和使用发送到 syslog 的身份验证日志。

首先,将过滤器从 WordPress 插件目录移动到适当的 Fail2ban 过滤器位置。 我们将使用“硬”WordPress 过滤器来获得更好的保护:

sudo cp /var/www/html/wp-content/plugins/wp-fail2ban/filters.d/wordpress-hard.conf /etc/fail2ban/filter.d/

使用新的 wordpress-hard.conf 过滤器,您可以通过编辑文件 /etc/fail2ban/jail.local 将 Fail2ban 指向适当的身份验证日志。 Fail2ban 中的监狱是指为 IP 地址提供过滤器的一系列规则和操作。

使用 nano 或您喜欢的文本编辑器打开文件 jail.local

sudo nano /etc/fail2ban/jail.local

文件打开后,滚动到底部并将以下行附加到末尾。 这些行启用插件,将过滤器设置为我们之前复制到 filters.d 目录的 wordpress-hard.conf 过滤器,为访问尝试设置适当的日志记录目标,并指定此流量将进入在 httphttps 端口上。

[wordpress-hard]

enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 3
port = http,https

保存并关闭文件。

接下来,您可以通过在终端中运行以下命令来重新启动 Fail2ban 以确保新过滤器现在就位:

sudo service fail2ban restart

第 3 步 – 忽略计算机上的登录尝试

为了防止您或其他已知用户因意外身份验证失败而被禁止访问,我们建议您忽略您自己本地计算机的公共 IP 地址。

如果您使用的是基于 Linux 的操作系统,请使用以下命令:

curl ipecho.net/plain ; echo

否则,请访问 http://checkip.dyndns.org 以确定您计算机的公共 IP 地址。 如果您的 WordPress 网站的任何其他用户位于其他位置,您可能也希望找到他们的地址。

再次打开jail.local进行编辑:

sudo nano /etc/fail2ban/jail.local

以下行将列出以本地服务器 IP (localhost) 开头的所有被忽略的 IP 地址,并用空格分隔您希望访问 WordPress 的已知主机的值。 将此添加到 DEFAULT 部分,在您在 WordPress 插件设置步骤中添加的 ignoreip 语句下。

ignoreip = 127.0.0.1/8 your_computer_ip

保存并退出您的编辑器。

第 4 步 - 测试过滤器

要测试过滤器是否正常工作,您可以退出 WordPress 站点的 wp-admin 站点并再次登录。

您可以使用此 Fail2ban 监狱状态来确保过滤器不会记录您的成功登录。

sudo fail2ban-client status wordpress-hard

您应该会看到与此类似的结果:

Status for the jail: wordpress-hard
|- filter
|  |- File list:    /var/log/auth.log 
|  |- Currently failed: 0
|  `- Total failed: 0
`- action
   |- Currently banned: 0
   |  `- IP list:   
   `- Total banned: 0

如果您查看 auth.log 文件,您将在文件底部附近使用 tail 看到您成功登录,这将显示最后 10 行输出:

sudo tail /var/log/auth.log

成功的身份验证将如下所示:

Month Day Hour:Minute:Second your_server wordpress(your_server_ip)[PID]: Accepted password for admin from your_computer_ip

如果日志中出现未经授权的用户或身份验证失败,您的新插件将通过适当地更改防火墙规则来确保阻止此 IP 访问您的站点。

第 5 步 - 轮换您的日志文件

如果您发现您的 WordPress 站点收到大量未经授权的登录尝试,并且您的日志文件正在快速增长,您可以通过编辑文件 /etc/logrotate.conf 将日志文件轮换为新的。

sudo nano /etc/logrotate.conf

附加这些行,设置文件的最大大小、日志的权限和周数。 例如,您可以将 4 设置为文件在刷新之前将存在的周数:

/var/log/auth.log {
    size 30k
    create 0600 root root
    rotate 4
}

适当地保存并退出文件。

结论

按照本指南中的步骤,您安装并配置了 Fail2ban 插件,排除了您的本地 IP 地址,并测试了您的工作。 您还可以设置日志轮换以防止日志文件无限增长。 现在,您的 WordPress 实例对于未经授权的登录尝试、垃圾评论和对您网站的入侵更加强大和安全。