介绍
WordPress是一个非常强大的内容管理系统(CMS),它是免费的和开源的。因为任何人都可以评论,创建一个帐户,并在WordPress上发布,许多恶意行为者已经创建了机器人和服务器网络,通过暴力攻击破坏和垃圾邮件WordPress网站。Fail2ban工具有助于防止未经授权的访问您的Droplet和您的WordPress网站。它注意到可疑或重复的登录失败,并通过修改您的Droplet防火墙规则主动禁止这些IP。
在本指南中,我们将使用 Ubuntu 14.04 LAMP 服务器上的 Fail2ban 0.9.3 版本,并通过使用垃圾邮件日志插件与 WordPress 集成。
前提条件
要完成此指南,您需要
- 一个 Ubuntu 14.04 Droplet 使用 一个单击的 WordPress 实例或 你自己的 WordPress Droplet
- 一个非根用户配置了 sudo 特权用于管理任务. 您可以学习如何通过遵循我们的 Ubuntu 14.04 初始服务器设置指南来设置此设置。
- 通过以下设置和配置 Fail2ban 如何在 Ubuntu 14.04 上安装和使用 Fail2ban 教程。
- 遵循指南 如何在 Ubuntu 上配置安全更新和安装 WordPress
步骤 1 – 安装 WordPress Fail2ban 插件
首先,登录您的WordPress网站,访问您的浏览器中的https://your_server_ip/wp-admin,并使用您在安装WordPress时创建的管理员凭证。一旦登录,您将看到下面的屏幕,这是您的WordPress仪表板。
在左侧的侧面栏看字 ** Plugins**,这将出现在侧面栏的中间左右. 点击 ** Plugins**后,你会看到这个屏幕:
靠近顶部,在右侧,你可以点击 Add New. 这允许你添加新的插件到你的WordPress网站,可以定制,安全,或扩展你的网站. 在这种情况下,我们将寻找Fail2ban插件。
在搜索框中输入 Fail2ban,然后在键盘上按ENTER
。结果应该返回显示几个插件的屏幕,安装的是 WP fail2ban。
点击 安装现在开始安装,在那里你会看到两个提示: 启用插件和 返回插件安装程序. 选择 启用插件,你的浏览器会让你回到安装的插件列表,新的 WP fail2ban插件在列表中。 在此时,你可以点击 查看详细信息查看有关你的新插件的更多信息。 还有一个常见问题,这将帮助你了解如何启用功能,如阻止特定用户可能被用来垃圾邮件你的WordPress网站的内容或评论。
步骤 2 — 将WordPress过滤器应用于Fail2ban
此WordPress插件包含一个新的自定义Fail2ban过滤器. 在此步骤中,我们将安装该过滤器,以便Fail2ban可以正确分析并使用发送到syslog的身份验证日志。
首先,将过滤器从WordPress插件目录移动到适当的Fail2ban过滤位置,我们将使用硬
WordPress过滤器以获得更好的保护:
1sudo 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 指向相应的身份验证日志。
使用 nano 或您最喜欢的文本编辑器打开 jail.local
文件。
1sudo nano /etc/fail2ban/jail.local
这些行允许插件,将过滤器设置为我们先前复制到filters.d
目录的wordpress-hard.conf
过滤器,为访问尝试设置适当的日志目的地,并指定此流量将进入http
和https
端口。
1[wordpress-hard]
2
3enabled = true
4filter = wordpress-hard
5logpath = /var/log/auth.log
6maxretry = 3
7port = http,https
保存并关闭文件。
接下来,您可以重新启动 Fail2ban 以确保新过滤器现在在您的终端运行此命令:
1sudo service fail2ban restart
步骤 3 – 忽略您的计算机的登录尝试
为了防止您或其他已知用户因意外身份验证失败而被禁用,我们建议您忽略本地计算机的公共IP地址。
如果您正在使用基于 Linux 的操作系统,请使用以下命令:
1curl ipecho.net/plain ; echo
否则,请访问http://checkip.dyndns.org以确定您的计算机的公共IP地址. 如果您的WordPress网站有其他用户在其他位置,您可能也想找到他们的地址。
打开jail.local
以重新编辑:
1sudo nano /etc/fail2ban/jail.local
下一行将列出任何被忽略的IP地址,从本地服务器IP(本地主机)开始,为您想要访问WordPress的已知主机分隔一个值的空间。
1ignoreip = 127.0.0.1/8 your_computer_ip
保存和退出您的编辑器。
步骤4:测试过滤器
要测试过滤器是否有效,您可以退出您的WordPress网站的wp-admin网站并再次登录。
您可以使用此 Fail2ban 监狱状态来确保您的成功登录没有被过滤器注意到。
1sudo fail2ban-client status wordpress-hard
你应该看到类似于此的结果:
1Status for the jail: wordpress-hard
2|- filter
3| |- File list: /var/log/auth.log
4| |- Currently failed: 0
5| `- Total failed: 0
6`- action
7 |- Currently banned: 0
8 | `- IP list:
9 `- Total banned: 0
如果您查看auth.log
文件,您将看到您的成功登录在文件的底部使用尾巴
,这将显示最后10行输出:
1sudo tail /var/log/auth.log
成功的身份验证将看起来像这样:
Month Day Hour:Minute:Second your_server wordpress(your_server_ip)[PID]:从 your_computer_ip接受管理员的密码
如果未经授权的用户或未能验证显示在日志中,您的新插件将确保通过适当修改防火墙规则来阻止该IP访问您的网站。
步骤5 – 旋转您的日志文件
如果您发现您的WordPress网站正在收到大量未经授权的登录尝试,并且您的日志文件正在快速增长,您可以通过编辑文件 /etc/logrotate.conf
来旋转日志文件。
1sudo nano /etc/logrotate.conf
添加这些行,这些行设置了文件的最大大小、日志的权限和周数,例如,您可以将4设置为文件在更新之前的数周:
1/var/log/auth.log {
2 size 30k
3 create 0600 root root
4 rotate 4
5}
保存和退出相应的文件。
结论
通过遵循本指南中的步骤,您安装并配置了 Fail2ban 插件,排除了本地 IP 地址,并测试了您的工作。您还设置了日志旋转,以防止日志文件无限期增长。