蛮力攻击

与专注于软件漏洞的黑客攻击不同,蛮力攻击旨在成为访问网站的最简单方法:它一遍又一遍地尝试用户名和密码,直到它进入。通常被认为是“不雅”,当人们使用像“123456”这样的密码和像“admin”这样的用户名时,它们会非常成功。

简而言之,它们是对任何网站安全中最薄弱环节的攻击……你。

由于这些攻击的性质,您可能会发现服务器的内存爆满,从而导致性能问题。这是因为 http 请求的数量(即某人访问您的站点的次数)非常高,以至于服务器内存不足。

这种攻击不是 WordPress 特有的,它发生在每个 web 应用程序中,但 WordPress 很受欢迎,因此是一个常见的目标。

保护你自己 #

WordPress 的一个常见攻击点是wp-login.php一遍又一遍地敲击文件,直到它们进入或服务器死机。你可以做一些事情来保护自己。

顶部↑

不要使用“管理员”用户名 #

大多数攻击假设人们使用用户名“admin”,因为早期版本的 WordPress 默认使用此用户名。如果您仍在使用此用户名,请创建一个新帐户,将所有帖子转移到该帐户,并将“管理员”更改为订阅者(或完全删除)。

您还可以使用插件更改用户名来更改您的用户名。

顶部↑

好密码 #

使用您的密码的目的是让其他人难以猜到,并使暴力攻击难以成功。许多自动密码生成器可用于创建安全密码。

WordPress 还具有密码强度计,在 WordPress 中更改密码时会显示该计。在更改密码时使用它以确保其强度足够。

您可以使用Force Strong Password插件强制用户设置强密码。

选择密码时要避免的事情:

  • 您自己的真实姓名、用户名、公司名称或您的网站名称的任何排列。
  • 字典中的一个词,任何语言。
  • 一个简短的密码。
  • 任何仅含数字或仅含字母的密码(最好混合使用)。

强密码不仅是为了保护您的博客内容,也是必要的。访问您的管理员帐户的黑客能够安装可能危及您的整个服务器的恶意脚本。

要进一步提高密码强度,您可以启用两步验证以进一步保护您的博客。

顶部↑

插件 #

有许多插件可用于限制您网站上的登录尝试次数。或者,您还可以使用许多插件来完全阻止人们访问 wp-admin

顶部↑

保护您的服务器 #

如果您决定锁定 wp-login.php 或 wp-admin,您可能会发现在访问这些页面时收到 404 或 401 错误。为避免这种情况,您需要将以下内容添加到您的 .htaccess 文件中。

错误文档 401 默认

您可以将 401 指向 401.html,但重点是不要针对WordPress

对于 Nginx,您可以使用 error_page 指令,但必须提供绝对 url。

error_page 401 http://example.com/forbidden.html;

在 IIS Web 服务器上,您可以使用httpErrorsweb.config 中的元素,设置errorMode="custom"

<httpErrors errorMode="Custom"> 
<error statusCode="401"
subStatusCode="2"
prefixLanguageFilePath=""
path="401.htm"
responseMode="File" />
</httpErrors>

顶部↑

密码保护 wp-login.php #

保护您的 wp-login.php 文件(和 wp-admin 文件夹)的密码可以为您的服务器添加一个额外的层。因为密码保护 wp-admin 可以破坏任何在前端使用 ajax 的插件,通常只保护 wp-login.php 就足够了。

为此,您需要创建一个 .htpasswd 文件。许多主机都有工具为您执行此操作,但如果您必须手动执行此操作,您可以使用此htpasswd 生成器。就像您的 .htaccess 文件(它只是一个扩展名的文件)一样,.htpasswd 也没有前缀。

您可以将此文件放在公共 Web 文件夹之外(即不在 /public_html/ 或 /domain.com/ 中,具体取决于您的主机),也可以将它放在同一个文件夹中,但您需要做一些如果您这样做,则在您的 .htaccess 文件中进行额外的安全工作。

说到这,一旦你上传了 .htpasswd 文件,你需要告诉 .htaccess 它在哪里。假设您已将 .htpasswd 放在用户的主目录中,并且您的 htpasswd 用户名是 mysecretuser,那么您将其放在 .htaccess 中:

# 停止 Apache 提供 .ht* 文件
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
# Protect wp-login.php
<Files wp-login.php>
AuthUserFile ~/.htpasswd
AuthName "私人访问"
AuthType Basic
需要用户 mysecretuser
</Files>

AuthUserFile 的实际位置取决于您的服务器,并且“要求用户”将根据您选择的用户名而改变。

如果您使用的是 Nginx,您可以使用HttpAuthBasicModule对 wp-login.php 文件进行密码保护。这个块应该在你的服务器块内。

location /wp-login.php { 
auth_basic "管理员登录";
auth_basic_user_file .htpasswd;
}

文件名路径是相对于 nginx 配置文件 nginx.conf 的目录

该文件应采用以下格式:

  用户:通过用户
2:通过2用户3:通过
3

不幸的是,没有简单的方法可以在 Windows Server IIS 上配置受密码保护的 wp-login.php。如果您使用像 Helicon Ape 这样的 .htaccess 处理器,则可以使用上面提到的 .htaccess 示例。否则,您必须要求您的托管服务提供商设置基本身份验证。

所有密码必须由函数编码crypt(3)。您可以使用在线htpasswd 生成器来加密您的密码。

顶部↑

通过 IP 限制对 wp-login.php 的访问 #

如果您是唯一需要登录到您的管理区域并且您有固定 IP 地址的人,您可以通过 .htaccess 或web.config 文件。这通常称为IP 白名单

注意:请注意您的 ISP 或计算机可能会频繁更改您的 IP 地址,这称为动态 IP 地址,而不是固定 IP 地址。这可以用于多种原因,例如省钱。如果您怀疑是这种情况,请了解如何更改您的计算机设置,或联系您的 ISP 以获取固定地址,以便使用此程序。

在所有示例中,您必须将 203.0.113.15 替换为您的 IP 地址。您的互联网提供商可以帮助您建立您的 IP 地址。或者您可以使用在线服务,例如我的 IP 是什么

还提供了多个 IP 地址的示例。如果您使用多个互联网提供商,如果您的 IP 地址池很小,或者当您有几个人可以访问您网站的仪表板时,它们是理想的选择。

在名为 .htaccess 的纯文本编辑器中创建一个文件并添加:

# 阻止访问 wp-login.php。
<Files wp-login.php>
order deny,allow
allow from 203.0.113.15
deny from all
</Files>

您可以使用以下方法添加多个允许的 IP 地址:

# 阻止访问 wp-login.php。
<Files wp-login.php>
order deny,allow
allow from 203.0.113.15
allow from 203.0.113.16
allow from 203.0.113.17
deny from all
</Files>

您使用的是 Apache 2.4 和 Apache 模块mod_authz_host吗?然后你必须使用稍微不同的语法:

# 阻止访问 wp-login.php。
<文件 wp-login.php>
需要 ip 203.0.113.15
</文件>

如果要添加多个 IP 地址,可以使用:

# 阻止访问 wp-login.php。
<Files wp-login.php>
Require ip 203.0.113.15 203.0.113.16 203.0.113.17
# 或者全网:
# Require ip 203.0.113.0/255.255.255.0
</Files>

对于 Nginx,您可以在服务器块内添加一个位置块,其工作方式与上面的 Apache 示例相同。

error_page 403 http://example.com/forbidden.html;
位置 /wp-login.php {
  允许 203.0.113.15
  # 或者对于整个网络:
  # 允许 203.0.113.0/24;
  全部否认;
}

请注意,拒绝/允许的顺序至关重要。您可能会认为您可以切换访问指令顺序,一切都会正常工作。事实上它没有。在上面的示例中切换顺序会导致拒绝访问所有地址。

同样,在 IIS Web 服务器上,您可以使用 web.config 文件来限制可以访问的 IP 地址。最好将此添加到附加<location指令中。

<location path="wp-admin"> 
<system.webServer>
<security>
<ipSecurity allowUnlisted="false"> <!-- 该规则拒绝所有 IP 地址,除了下面提到的那些 -->
<!-- 203.0 .113.x 是一个特殊的 IP 地址测试范围 -->
<!-- 用你自己的替换它们 -->
<add ipAddress="203.0.113.15" allowed="true" />
<add ipAddress="203.0. 113.16" allowed="true" />
</ipSecurity>
</security>
</system.webServer>
</location>

顶部↑

拒绝访问无推荐人请求 #

扩展自Combatting Comment Spam,您可以使用它来防止未提交登录表单的任何人访问它:

# 停止垃圾邮件攻击登录和评论
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
RewriteCond %{HTTP_REFERER} !.* example.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$1 [R=301,L]
</ifModule>

Nginx – 拒绝访问无推荐人请求

位置 ~* (wp-comments-posts|wp-login)\.php$ {
      if ($http_referer !~ ^(http://example.com) ) {
           返回405;
      }
}

Windows Server IIS – 拒绝访问无引荐来源网址请求:

<rule name="block_comments_without_referer" patternSyntax="ECMAScript" stopProcessing="true"> 
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{URL }" pattern="^/(wp-comments-post|wp-login)\.php" negate="false"/>
<add input="{HTTP_REFERER}" pattern=".*example\.com.*" " negate="true" />
<add input="{HTTP_METHOD}" pattern="POST" /> </conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden: 访问被拒绝。" statusDescription="没有推荐人的评论!" />
<

将 example.com 更改为您的域。如果您将 Multisite 与映射域一起使用,则需要将 example.com 更改为(example.com|example.net|example4.com)等等。如果您使用 Jetpack 评论,请不要忘记添加 jetpack.wordpress.com 作为推荐人:(example.com|jetpack\.wordpress\com)

顶部↑

国防部安全 #

如果您使用 ModSecurity,您可以遵循Frameloss 的建议——停止针对 WordPress 的暴力登录。这需要对您的服务器进行根级别访问,并且可能需要您的虚拟主机的帮助。

如果您使用的是 ModSecurity 2.7.3,则可以将规则添加到您的 .htaccess 文件中。

顶部↑

Fail2Ban #

Fail2ban 是一个在后台运行的 Python 守护进程。它检查由 Apache(或 SSH 例如)生成的日志文件,并且在某些事件上可以添加防火墙规则。它使用带有正则表达式的所谓过滤器。例如,如果该正则表达式在 5 分钟内发生 5 次,它可以阻止该 IP 地址 60 分钟(或任何其他数字集)。

安装和设置 Fail2ban 需要 root 访问权限。

顶部↑

阻止列表 #

似乎大多数暴力攻击来自俄罗斯、哈萨克斯坦和乌克兰的东道主。您可以选择阻止来自这些国家/地区的 IP 地址。您可以下载 Internet 上的阻止列表。使用一些 shell 脚本,您可以使用 iptables 加载块规则。

您必须知道您正在阻止合法用户和攻击者。确保您可以支持并向您的客户解释该决定。

除了每个国家/地区的阻止列表之外,还有一些带有知名垃圾邮件发送者 IP 地址的列表。您也可以使用这些来通过 iptables 阻止它们。定期更新这些列表很好。

设置阻止列表和 iptables 需要 root 访问权限。

顶部↑

云/代理服务 #

CloudFlare 和 Sucuri CloudProxy 等服务还可以通过在 IP 到达您的服务器之前阻止它们来帮助减轻这些攻击。

顶部↑

也可以看看 #

Powered by BetterDocs

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Scroll to Top