介绍
WordPress是一个非常强大的内容管理系统(CMS),是免费和开源。 因为任何人都可以评论,创建一个帐户,并在WordPress上发布,许多恶意演员已创建僵尸网络和服务器,通过暴力攻击危害和垃圾邮件WordPress网站。 工具Fail2ban有助于防止未经授权的访问您的Droplet和您的WordPress网站。 它注意到可疑或重复登录失败,并通过修改您的Droplet的防火墙规则主动禁止这些IP。
在本指南中,我们将在Ubuntu 14.04 LAMP服务器上使用版本0.9.3的Fail2ban,并使用垃圾邮件日志插件将其与WordPress集成。
先决条件
要完成本指南,您需要
使用一个Ubuntu的14.04Droplet一键WordPress的实例或您自己的WordPressDroplet
为管理任务配置了sudo权限的非root用户。 你可以学习如何按照我们把它设置起来的Ubuntu 14.04服务器初始设置指南 。
设立并按照这个配置的fail2ban 如何安装和使用的fail2ban在Ubuntu 14.04的教程 。
第1步 - 安装WordPress Fail2ban插件
首先,通过访问登录到你的WordPress网站https:// your_server_ip /wp-admin
在浏览器中,并使用您在安装WordPress创建的管理员凭据。 登录后,您将看到以下屏幕,它是您的WordPress仪表板。
看这个词插件 ,将出现约一半,侧边栏的左侧边栏。 点击插件后,你会看到这样的画面:
靠近顶部的右侧部分,您可以点击添加新的 。 这允许您添加新的插件到您的WordPress网站,可以自定义,安全或扩展您的网站。 在这种情况下,我们将搜索Fail2ban插件。 下一个屏幕将显示如下:
在搜索栏中输入的fail2ban,然后按ENTER
在键盘上。 结果应返回一个屏幕,显示了几个插件,用一个安装是WP的fail2ban。
点击立即安装 ,开始安装,在那里你会看到两个提示: 激活插件,并返回插件安装程序 。 选择激活插件 ,你的浏览器将返回到安装的插件列表,在列表中选择新WP的fail2ban插件。 这时,您可以点击查看详细信息可查看有关您的新插件的更多信息。 还有一个常见问题,将帮助您了解如何启用功能,如阻止特定的用户,可能用于垃圾邮件的WordPress网站的内容或评论。
第2步 - 将WordPress过滤器应用于Fail2ban
这个WordPress插件包括一个新的自定义Fail2ban过滤器。 在此步骤中,我们将安装该过滤器,以便Fail2ban可以正确解析和使用发送到syslog的认证日志。
首先,将过滤器从WordPress插件目录移动到相应的Fail2ban过滤器位置。 我们将使用“硬”WordPress过滤器更好的保护:
sudo cp /var/www/html/plugins/wp-fail2ban/filters.d/wordpress-hard.conf /etc/fail2ban/filter.d/
随着新wordpress-hard.conf
到位过滤器,您可以通过编辑文件指向的fail2ban以适当的身份验证日志/etc/fail2ban/jail.local
。 Fail2ban中的jail是指为IP地址提供过滤器的一系列规则和操作。
打开文件jail.local
使用nano或你喜欢的文本编辑器。
sudo nano /etc/fail2ban/jail.local
文件打开后,滚动到底部,并将以下行追加到结尾。 这些线路启用插件,设置过滤到wordpress-hard.conf
我们先前复制到过滤器filters.d
目录,设置访问尝试相应的日志记录的目的地,并指定该流量会在http
和https
端口。
[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-管理站点,然后重新登录。
您可以使用此Fail2ban jail状态来确保过滤器未记录您的成功登录。
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实例更强大,更安全,防止未经授权的登录尝试,垃圾评论和对您网站的入侵。