主题
与专注于软件漏洞的黑客不同,蛮力攻击(Brute Force Attack)旨在成为获取网站访问权限的最简单方法:它一遍又一遍地尝试用户名和密码,直到成功进入。当人们使用“123456”这样的密码和“admin”这样的用户名时,他们往往会被认为是“不优雅”的。
简而言之,它们是对任何网站安全中最薄弱的一环——你的攻击。
由于这些攻击的性质,您可能会发现服务器的内存飙升,导致性能问题。这是因为http请求的数量(即某人访问您的站点的次数)非常高,以至于服务器耗尽了内存。
这种攻击并不是WordPress特有的,它发生在所有的网络应用中,但WordPress很受欢迎,因此经常成为攻击的目标。
保护你自己
WordPress上一个常见的攻击点是锤击wp-login.php
一遍又一遍地归档,直到他们侵入或服务器死亡。你可以做些事情来保护自己。
不要使用“admin”用户名
由于早期版本的WordPress默认使用“admin”用户名,大多数攻击都假定用户使用“admin”用户名。如果您仍然使用这个用户名,创建一个新帐户,将所有的帖子转移到该帐户,并将“admin”更改为订阅者(或完全删除它)。
你也可以使用插件更改用户名更改您的用户名。
良好的密码
使用密码的目的是让其他人很难猜到,也让暴力攻击难以成功。许多自动密码生成器,可用于创建安全密码。
WordPress还有一个密码强度计,当你在WordPress中修改密码时,它会显示出来。在更改密码时使用此选项,以确保其强度足够。
您可以使用力强密码插件强制用户设置强密码。
选择密码时要避免的事情:
- 任何您自己的真实姓名,用户名,公司名称,或您的网站名称的排列。
- 任何语言的字典里的一个词。
- 短的密码。
- 任何只包含数字或字母的密码(最好是两者的混合)。
一个强大的密码是必要的,不仅仅是为了保护你的博客内容。获得管理员帐户访问权限的黑客能够安装恶意脚本,从而可能危及您的整个服务器。
要进一步增加密码的强度,可以启用两步验证进一步保护你的博客。
雷竞技
有很多雷竞技插件可以限制登录尝试的次数在你的网站上制作。或者,也有很多雷竞技可以用来阻止别人访问wp-admin的插件完全。
保护你的服务器
如果您决定锁定wp-login.php或wp-admin,您可能会发现访问这些页面时出现404或401错误。为了避免这种情况,您需要在.htaccess文件中添加以下内容。
401年ErrorDocument违约
你可以让401指向401.html,但关键是要瞄准它不WordPress。
对于Nginx,你可以使用error_page指令,但必须提供一个绝对的url。
error_page 401 http://example.com/forbidden.html;
在IIS web服务器上,您可以使用httpErrors
在你的网页中添加元素。配置,设置errorMode = "自定义"
:
< httpErrors errorMode = "自定义" >
<错误statusCode = " 401 "
subStatusCode = " 2 "
prefixLanguageFilePath = " "
路径= " 401. htm”
responseMode = "文件" / >
< / httpErrors >
密码保护wp-login.php
保护你的wp-login.php文件(和wp-admin文件夹)的密码可以为你的服务器添加一个额外的层。因为密码保护wp-admin可以破坏任何在前端使用ajax的插件,所以通常只保护wp-login.php就足够了。
为此,您需要创建一个.htpasswd文件。许多主机都有工具来为您完成这项工作,但是如果您必须手动完成,您可以使用这个工具htpasswd发电机.就像你的.htaccess文件(它只是一个扩展名文件)一样,.htpasswd也没有前缀。
你可以把这个文件放在你的公共网站文件夹之外(即不在/public_html/或/domain.com/,这取决于你的主机),或者你可以把它放在同一个文件夹中,但如果你这样做的话,你需要在.htaccess文件中做一些额外的安全工作。
说到这里,一旦你上传了。htpasswd文件,你需要告诉。htaccess它在哪里。假设你把。htpasswd放在你用户的主目录中,你的htpasswd用户名是mysecretuser,然后你把这个放在。htaccess中:
#停止Apache服务。ht*文件
<文件~ " ^ \ .ht " >
为了允许,拒绝
否认所有
> < /文件
#保护wp-login.php
wp-login.php <文件>
AuthUserFile ~ / .htpasswd
AuthName“私人访问”
AuthType基本
需要用户mysecretuser
> < /文件
AuthUserFile的实际位置取决于您的服务器,' require user '将根据您选择的用户名而改变。
如果你正在使用Nginx,你可以使用HttpAuthBasicModule.这个块应该在您的服务器块中。
位置/ wp-login.php {
auth_basic“管理员登录”;
auth_basic_user_file .htpasswd;
}
文件名路径相对于nginx配置文件nginx.conf的目录
该文件应采用以下格式:
用户:通过
user2: pass2
user3: pass3
不幸的是,在Windows Server IIS上配置受密码保护的wp-login.php没有简单的方法。如果你使用像Helicon Ape这样的。htaccess处理器,你可以使用上面提到的。htaccess示例。否则,您必须要求托管提供商设置基本身份验证。
所有密码必须按功能编码地下室(3)
.你可以使用在线htpasswd发电机加密您的密码。
限制访问wp-login.php的IP地址
如果你是唯一需要登录到你的管理区域的人,并且你有一个固定的IP地址,你可以禁止任何人通过。htaccess或web访问wp-login.php(以及wp-admin/文件夹)。配置文件。这通常被称为IP白名单.
注意:注意您的ISP或计算机可能经常更改您的IP地址,这被称为动态IP寻址,而不是固定IP寻址。这可以用于各种各样的原因,比如省钱。如果您怀疑是这种情况,找出如何更改您的计算机的设置,或联系您的ISP获得一个固定地址,以便使用此程序。
在所有例子中,你都必须将203.0.113.15替换为你的IP地址。你的互联网供应商可以帮助你建立你的IP地址。或者你可以使用在线服务,比如我的IP是什么.
还提供了多个IP地址的示例。如果你使用多个互联网供应商,如果你有一个小的IP地址池,或者当你有几个人可以访问你的网站的仪表盘时,它们是理想的。
在纯文本编辑器中创建一个名为.htaccess的文件,并添加:
#阻止访问wp-login.php。
wp-login.php <文件>
否认,允许
允许从203.0.113.15
否认所有
> < /文件
您可以使用以下方法添加多个允许的IP地址:
#阻止访问wp-login.php。
wp-login.php <文件>
否认,允许
允许从203.0.113.15
允许从203.0.113.16
允许从203.0.113.17
否认所有
> < /文件
您是否使用Apache 2.4和Apache模块mod_authz_host?然后你必须使用稍微不同的语法:
#阻止访问wp-login.php。
wp-login.php <文件>
需要ip 203.0.113.15
> < /文件
如果你想添加多个IP地址,你可以使用:
#阻止访问wp-login.php。
wp-login.php <文件>
需要ip 203.0.113.15 203.0.113.16 203.0.113.17
#或整个网络:
#需要ip 203.0.113.0/255.255.255.0
> < /文件
对于Nginx,你可以在你的服务器块中添加一个位置块,它的工作原理和上面Apache的例子一样。
error_page 403 http://example.com/forbidden.html;Location /wp-login.php {allow 203.0.113.15 #或者整个网络:# allow 203.0.113.0/24;否认;}
注意,拒绝/允许的顺序是最重要的。您可能会想,您可以切换访问指令的顺序,一切都将正常工作。事实上并非如此。切换上面示例中的顺序会导致拒绝对所有地址的访问。
同样,在IIS web服务器上,您可以使用web。配置文件限制可访问的IP地址。最好将此添加到附加内容中<位置
指令。
<位置路径= " wp-admin " >
< system.webServer >
<安全>
< ipSecurity allowUnlisted = " false " > < !——该规则拒绝所有IP地址,除了下面提到的——>
<!——203.0.113。x是IP地址的一个特殊测试范围——>
<!——用你自己的替换——>
< / ipSecurity >
安全> < /
< / system.webServer >
> < /位置
拒绝访问没有引用请求
从打击评论垃圾广告,你可以使用它来阻止任何没有提交登录表单的人访问它:
#停止垃圾邮件攻击登录和评论
< IfModule mod_rewrite.c >
RewriteEngine上
RewriteCond % {REQUEST_METHOD}
RewriteCond % {REQUEST_URI}。(wp-comments-post | wp-login) \。php *
.*example.com.* [OR]
RewriteCond % {HTTP_USER_AGENT} ^ $
RewriteRule (. *) http://% {REMOTE_ADDR} / 1美元(R = 301 L)
< / ifModule >
Nginx -拒绝访问没有引用请求
Location ~* (wp-comments-posts|wp-login)\.php$ {if ($http_referer !~ ^(http://example.com)){返回405;}}
Windows Server IIS -拒绝访问任何引用请求:
<规则名="block_comments_without_referer" patternSyntax="ECMAScript" stopProcessing="true">.
<条件logicalGrouping = " MatchAll " >
<添加输入= " {URL}”模式= " ^ / (wp-comments-post | wp-login) \。php”否定= " false " / >.
> < /规则
将example.com更改为您的域名。如果使用Multisite映射域,则需要将example.com更改为(example.com example4.com example.net | |)
等等。如果你使用的是Jetpack评论,不要忘记添加jetpack.wordpress.com作为参考:(example.com | jetpack \ .wordpress \ com)
ModSecurity
如果你使用ModSecurity,你可以遵循来自无框架-停止暴力登录WordPress.这需要根级别访问您的服务器,可能需要您的网络主机的协助。
如果你使用的是ModSecurity 2.7.3,你可以将规则添加到你的。htaccess文件中。
Fail2Ban
Fail2ban是一个运行在后台的Python守护进程。它检查Apache(例如SSH)生成的日志文件,并在某些事件中添加防火墙规则。它使用一个带有正则表达式的所谓过滤器。例如,如果该正则表达式在5分钟内出现5次,它可以阻止该IP地址60分钟(或任何其他一组数字)。
安装和设置Fail2ban需要root访问权限。
伺服
看起来,大多数暴力攻击来自俄罗斯、哈萨克斯坦和乌克兰。您可以选择屏蔽来自这些国家的ip地址。你可以从网上下载一些屏蔽列表。通过一些shell脚本,您可以用iptables加载blockrules。
您必须意识到,您正在阻止合法用户和攻击者。确保你能够支持并向你的客户解释这个决定。
除了每个国家的黑名单,还有一些含有知名垃圾邮件发送者ip地址的列表。你也可以用iptables来阻止它们。定期更新这些列表是很好的。
块列表和iptables的设置需要根访问权限。
云/代理服务
像CloudFlare和Sucuri CloudProxy这样的服务也可以通过在ip到达你的服务器之前阻止它们来帮助减轻这些攻击。
另请参阅
- Sucuri:防止WordPress暴力攻击
- 如何:保护WordPress免受强力XML-RPC攻击
- 液体Web:减少暴力攻击的ModSecurity规则
- HostGator:密码保护wp-login
- 停止强力登录
- 瑞士军刀WordPress (SAK4WP)-免费的开源工具,可以帮助您保护您的wp-login.php和/wp-admin/,但不是/wp-admin/admin-ajax.php一键式和更多
这篇文章有帮助吗?如何改进呢?
你必须登录提交反馈。