RSS

  • YouTube
  • LinkedIn
  • 谷歌

保护您的 WordPress 免受攻击

您访问的此站点是 WordPress. 我喜欢它的轻松.

WordPress 非常擅长在 VPS 或云中快速生成博客, 但它的轻松也是它最大的缺陷.

拥有一个网站是多么简单, 互联网上绝大多数的页面都是使用它的,因此这吸引了那些寻找其开源编程缺陷的人.

发现故障后, 一个淘气的黑客将能够使用这个缺陷在世界各地的数百万个网站, 发布文件, 发送电子邮件,甚至在域内创建虚假网站. 这些都是我见过的东西,我相信即使你见过.

关于WordPress,我最困扰我的一件事就是它的身份验证和执行机制 XML-RPC. 它们是暴力攻击的源源.

看看最后一点 10 我的此日志文件中的行 (从该服务器实时获取,而撰写本文时不使用任何保护机制).

Jun 8 21:09:39 host wordpress(xxxxxxx.com.br)[1010]: Authentication failure for gestao_click from 196.41.127.26
Jun 8 21:09:40 host wordpress(xxxxxxx.com.br)[1791]: Authentication failure for guestposter from 196.41.127.26
Jun 8 21:09:41 host wordpress(xxxxxxx.com.br)[9892]: Authentication failure for ricardo_pereira from 196.41.127.26
Jun 8 21:10:15 host wordpress(zzzzzzzzz.com.br)[6490]: XML-RPC authentication attempt for unknown user admin from 86.167.111.66
Jun 8 21:11:38 host wordpress(www.zzzzzzzzz.com.br)[1011]: Authentication failure for alexacolemanmkdef from 5.135.164.126
Jun 8 21:11:38 host wordpress(www.zzzzzzzzz.com.br)[6490]: Authentication failure for alexia_dias from 5.135.164.126
Jun 8 21:11:39 host wordpress(www.zzzzzzzzz.com.br)[5620]: Authentication failure for beatriz_seomarketing from 5.135.164.126
Jun 8 21:11:40 host wordpress(www.zzzzzzzzz.com.br)[6489]: Authentication failure for bianca_oblige from 5.135.164.126
Jun 8 21:11:41 host wordpress(www.zzzzzzzzz.com.br)[1010]: Authentication failure for celioedu from 5.135.164.126
Jun 8 21:11:42 host wordpress(www.zzzzzzzzz.com.br)[9893]: Authentication failure for celeste_pinto from 5.135.164.126

只有通过这些行,您才能看到,在现有 WordPress 安装中尝试进行身份验证的活动非常激烈, 几乎每秒一个.

以减轻这些不断的入侵企图, 几年前,我使用将这些请求的 IP 纳入防火墙筛选器的公式, 完全阻止来自这些服务器的访问. 这大大减少了这些尝试. 最初,我手动这样做, 处理日志并添加最坚持的 IP, 但后来我发现一个脚本,自动做: O 失败2班.

失败2班

失败2班 是监视日志和禁止 IP 的守护进程脚本. 通过分析具有身份验证(如 WordPress)的任何软件的日志,并且从当前故障中包括防火墙筛选器中的源 IP.

它使用非常简单,可用于多个存储库,适用于不同的 Linux 发行版.

下面我将向您展示如何使用安装和配置 Centos 8 连同 沃尔瓦尔德

Instalando os recursos necessários

下面的行安装所有必要的项目.

$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 
$ sudo rpm -ql epel-release 
$ sudo dnf install firewalld fail2ban -y

从此时起,应该已经安装了故障2班,并且防火墙.

注意: 如果使用 SSH 连接中的 shell, 有必要将连接端口添加到 公共区域 这样您就不会激活防火墙并阻止远程访问.

为此,请使用 命令:

$ sudo systemctl start 沃尔瓦尔德 &;&; sudo firewall-cmd --zone=public --add-port=22/tcp --permanent &;&; sudo firewall-cmd --zone=public --add-service=https --permanent &;&; sudo firewall-cmd --zone=public --add-service=http --permanent &;&; sudo firewall-cmd --reload

如果一切正确,您将与防火墙激活在这个时候和端口 80, 443 和 22 释放到公共区域.

现在,让我们激活服务,以便它们始终与系统一起启动.

$ sudo systemctl enable fail2ban
$ sudo systemctl enable firewalld

WPFail2Ban

当我们谈论WordPress时,我不会展示如何配置故障2班来读取Web服务器日志并禁止IP从这些日志. 使用适当的插件可以更简单地执行此操作. 的 WPFail2Ban. 只需安装即可.

安装 WPFail2Ban,无需更改任何设置, 它将将所有登录尝试失败添加到默认系统系统系统日志文件,在 CentOS 的情况下, /var/log/messages.

在我的安装中, 我没有使用 WPFail2Ban 手册中指示的设置, 即使因为没有 过滤 器 表明.

要做的第一件事是为 Fail2Ban 创建一个筛选器. 让我们在 /etc/fail2ban/filter.d/wordpress.conf.

以下行假定没有其他配置文件可用于 WordPress. 我是个维姆的奉献者, 但使用你喜欢的编辑器.

$ sudo vim /etc/fail2ban/filter.d/wordpress.conf

添加以下行:

Fail2Ban filter for worpdpress authentication failures
#
[INCLUDES]
before = common.conf
[Definition]
_daemon = wordpress
failregex = ^%(__prefix_line)sAuthentication failure for .* from $
^%(__prefix_line)sBlocked authentication attempt for .* from $
^%(__prefix_line)sXML-RPC authentication attempt for unknown.* from $
^%(__prefix_line)sBlocked user enumeration attempt from $
^%(__prefix_line)sPingback requested from $
ignoreregex =
# DEV Notes:
#
# Author: Marcos 瑞吉酒店

我不会去细说线, 只是他们准备捕获 WPFail2Ban 引擎将发送到日志文件的大多数身份验证失败.

O próximo passo é definir qual ação será tomada quando o fail2ban encontrar uma entrada que combine com qualquer um dos padrões definidos no arquivo de configuração.

Essas ações estão todas definidas em arquivos de configuração no diretório //fail2ban/action.D/ e para o que este artigo se propõe nos interessa os arquivos firewallcmd*. Em minha experiência, não havia uma configuração que incluía o IP na zona ;drop-zone do jeito que eu queria então eu criei um arquivo de ação. Abaixo o conteúdo de um arquivo firewallcmd-drop.conf.

# /etc/fail2ban/action.d/firewallcmd-drop.conf 
[INCLUDES] 
before = firewallcmd-common.conf 
[Definition] 
actionstart = 
actionstop = 
actioncheck = 
actionban = firewall-cmd --zone=drop --add-source=<;ip>; 
actionunban = firewall-cmd --zone=drop --remove-source=<;ip>;

O próximo passo é criar a entrada que ativará o filtro e a ação. 为此,, 创建或编辑文件 //fail2ban/jail.local 并添加以下行:

# Filtro para tentativas de login no WordPress
[WordPress]
enabled = true
logpath = /var/log/messages
action  = firewallcmd-drop

从这一点开始,一切都准备启动服务. 一旦 Fail2Ban 启动,并且日志中已有与要搜索的模式匹配的条目, 您将看到 IP 被添加到防火墙中的阻止列表中.

$ sudo systemctl start fail2ban

查看防火墙类型中的已阻止 IP firewall-cmd --list-all --zone-drop, 你会看到一个出口,看起来像:

drop (积极)  
   target: DROP
   icmp-block-inversion: no
   interfaces: 
   sources: 223.225.107.45 111.231.227.35 139.99.156.158 149.202.70.189 162.241.200.235 167.71.111.16 178.254.11.154 18.228.33.11 223.225.10.190 45.119.212.93 62.210.178.229 68.183.134.134 69.163.163.220 80.211.174.81 103.57.84.227 159.65.128.55 91.134.248.230 165.22.107.13 208.97.188.13 188.240.208.26
   services: 
   ports: 
   protocols: 
   masquerade: no
   forward-ports: 
   source-ports: 
   icmp-blocks: 
   rich rules: 

就这些. 如果您对内容有评论, 感到轻松. 我希望这能帮助你,就像你帮助我一样。.

拥抱.

留言

您的电子邮件地址将不会发布. 标记必填的字段 *

此网站使用 Akismet 减少垃圾邮件. 了解如何处理注释数据.