您访问的此站点是 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:
就这些. 如果您对内容有评论, 感到轻松. 我希望这能帮助你,就像你帮助我一样。.
拥抱.