如何在Ubuntu 14.04上使用Fail2Ban保护WordPress

介绍

WordPress是一个非常强大的内容管理系统(CMS),是免费和开源的。因为任何人都可以发表评论,创建一个帐户,并在WordPress上发帖,许多恶意行为者已经创建了机器人和服务器网络,这些网络通过暴力攻击来破坏和篡改WordPress网站。Fail2ban工具可用于防止未经授权访问腾讯CVM和WordPress站点。它注意到可疑或重复登录失败,并通过修改腾讯CVM的防火墙规则主动禁止这些IP。

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

先决条件

要完成本指南,您需要

  • 一个Ubuntu 14.04 腾讯CVM使用一键式WordPress实例。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 为管理任务配置了sudo权限的非root用户。
  • 在Ubuntu 14.04上设置和配置Fail2ban 。
  • 按照腾讯云+社区中的相关如何在Ubuntu上的WordPress中配置安全更新和安装的指南操作。

第1步 - 安装WordPress Fail2ban插件

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

在左侧边栏上查看单词Plugins,它将出现在侧边栏的一半左右。单击插件后,您将看到以下屏幕:

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

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

单击立即安装以开始安装,您将在其中看到两个提示:激活插件返回到插件安装程序。选择激活插件,浏览器将返回已安装插件列表,列表中包含新的WP fail2ban插件。目前,您可以单击“ 查看详细信息”以查看有关新插件的更多信息。还有一个常见问题解答可以帮助您了解如何启用功能,例如阻止可能用于通过内容或评论向您的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中的jail是指为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您将看到您在文件底部附近成功登录,因为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实例更加强大和安全,可防止未经授权的登录尝试,评论垃圾邮件和入侵您的网站。

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Protect WordPress with Fail2Ban on Ubuntu 14.04》

#

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端达人

在 React 应用中获取数据

可以说 React 是构建 web 应用最流行的库。然而,它并不是全能的 web 框架。它只关注 MVC 中的 view 模块。

2842
来自专栏deed博客

[代码参考]在html文件调用其它html文件的几种方法

2293
来自专栏极客编程

Vue.js如何写一个简单的原生js模块,浏览器中的表现如何?

浏览器正在逐步的支持原生JavaScript模块。Safari和Chrome的最新版本已经支持它们了,Firefox和Edge也将很快推出。

2102
来自专栏老蒋专栏

一次完整的WordPress静态资源同步存储至腾讯云COS插件应用

WPCOS插件地址:https://www.laobuluo.com/2186.html

4635
来自专栏小尘哥的专栏

前后端分离Nuxt.js解决SEO问题

背景:由于后端程序猿通常对CSS 、JS掌握不是特别好,通常的开发模式,UI把静态html做好交给程序猿,程序猿开发,把静态html变成动态的时候经常会有各种样...

4554
来自专栏前端儿

iPhone页面的常用调试方法

某些页面需要设置HOST才能进行访问,在iPhone上不好设置HOST,所以需要一些代理工具帮助我们

4711
来自专栏张戈的专栏

借助PageSpeed,为Nginx网站服务器提速

网站加载速度越快,访客互动性、留住率和转换率就越高,这早已不是什么秘密。网站每延迟 100 毫秒,亚马逊的销售额就会减少 1%;延迟增加 500 毫秒,这意味着...

4017
来自专栏FreeBuf

CIA机密文档追踪工具Scribbles详细分析

2017年4月28日,维基解密发布了CIA“涂鸦”(Scribbles)项目的文档和源代码(参考地址1)。这是一个文档预处理系统,用于给涉密文档打上“Web b...

2837
来自专栏黑白安全

WordPress 4.9.6任意文件删除漏洞利用

WordPress是目前网络上最受欢迎的CMS。约有30%的网站都在使用它。这种广泛的采用,也使其成为了网络犯罪分子非常感兴趣的一个目标.RIPS团队在7个月前...

2625
来自专栏web前端-

初始vue

     vue是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,...

1083

扫码关注云+社区

领取腾讯云代金券