什么是拒绝服务攻击?WordPress网站防范DDoS攻击的方法

什么是拒绝服务或DoS攻击?做WordPress网的基本都会遇到这类的攻击?如何防范呢?简而言之,DoS攻击试…

什么是拒绝服务或DoS攻击?做WordPress网的基本都会遇到这类的攻击?如何防范呢?简而言之,DoS攻击试图创造虚假的流量,使你的WordPress网站过载,以至于它由于主机/服务器的限制而变得不可用。DoS的一个延伸是DDoS攻击,代表分布式拒绝服务。这种攻击来自于多个IP地址。

TCP状态耗尽攻击 发送数以百万计的 TCP 连接使稳定表不堪重负,导致网站宕机或性能下降。
洪水攻击 发送大量 ICMP 回显请求/回复数据包以淹没网络设备,如集线器或交换机,并消耗网络的整个带宽。在攻击期间,没有其他客户端能够连接到目标网站。
碎片攻击 数以百万计的碎片数据包被发送到网站,使服务器难以重新组装它们;拒绝任何有效用户的访问。
应用层攻击 大量应用程序请求(XML-RPC 或 WP REST API)被发送到耗尽托管资源的目标,因此它将无法为任何有效的客户端提供服务。
SYN 泛洪 黑客使用受感染的设备(僵尸)并同时用多个 SYN 数据包淹没网站。SYN 请求的数量会使网站不堪重负,要么出现故障,要么性能下降。
捣毁 欺诈性更新被发送到硬件,造成永久性损坏并使其无法使用。唯一的解决方案是重新安装硬件。

DDoS攻击可以造成什么损害:

  • 网站对任何合法访客的反应都会很慢,甚至无法访问。
  • 你可能会失去销售或AdSense收入
  • 网站在谷歌上的排名会慢慢下降

WordPress REST API为应用程序提供了一个接口,可以通过发送和接收JSON(JavaScript对象符号)对象的数据与你的WordPress网站进行交互。它是WordPress块状编辑器的基础,同样也可以使你的主题、插件或自定义应用程序为管理和发布你的网站内容提供新的、强大的界面。

要在你的WordPress网站上禁用WP REST API,请在.htaccess中添加以下内容:

# WP REST API BLOCK JSON REQUESTS 
# Block/Forbid Requests to: /wp-json/wp/
# WP REST API REQUEST METHODS: GET, POST, PUT, PATCH, DELETE
RewriteCond %{REQUEST_METHOD} ^(GET|POST|PUT|PATCH|DELETE) [NC]
RewriteCond %{REQUEST_URI} ^.*wp-json/wp/ [NC]
RewriteRule ^(.*)$ - [F]

注意:你不应该直接禁用REST API;这样做会破坏WordPress的管理功能,因为这些功能依赖于API的激活。

比如为了限制WP REST API的使用,在没有任何插件的情况下,只允许登录的用户使用,在你的主题 functions.php 文件中添加以下代码。

add_filter( 'rest_authentication_errors', function( $result ) {
    // If a previous authentication check was applied,
    // pass that result along without modification.
    if ( true === $result || is_wp_error( $result ) ) {
        return $result;
    }

    // No authentication has been performed yet.
    // Return an error if user is not logged in.
    if ( ! is_user_logged_in() ) {
        return new WP_Error(
            'rest_not_logged_in',
            __( 'You are not currently logged in.' ),
            array( 'status' => 401 )
        );
    }

    // Our custom authentication check should have no effect
    // on logged-in requests
    return $result;
});

或者将WP REST API限制在localhost。

function restrict_rest_api_to_localhost() {
    $whitelist = [ '127.0.0.1', "::1" ];

    if( ! in_array($_SERVER['REMOTE_ADDR'], $whitelist ) ){
        die( 'REST API is disabled.' );
    }
}
add_action( 'rest_api_init', 'restrict_rest_api_to_localhost', 0 );

XML-RPC是一个用于pingbacks和跟踪的功能在WordPress 3.5中被引入,并在此后的每个WordPress版本中默认启用。虽然WordPress现在有自己的REST API,但xmlrpc.php文件仍然存在于核心部分,并可能被滥用于各种网络攻击。

黑客利用WordPress的pingback功能以及xmlrpc.php文件来执行DDoS攻击。他们的目标是端点或一个可以被击中几次的页面,需要更长的时间来回应。这样一来,一次点击就可以对服务器资源产生最大的影响,在我们的案例中,XMLRPC很好地为黑客服务,暴露了这样的端点。

铺天盖地的HTTP GET和POST请求阻塞了正常的流量,最终使服务器崩溃。要禁用WordPress的XML-RPC,只需在.htaccess中添加以下内容

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>

你可以把某个IP地址列入白名单,以防你仍然希望通过XMLRPC访问你的WordPress网站。为此,你需要添加以下命令。

<Files xmlrpc.php>
<RequireAny>
Require ip 1.1.1.2
Require ip 2001:db8::/32
</RequireAny>
</Files>

注意:当XML-RPC被禁用时,Jetpack、WP移动应用程序或任何其他通过XMLRPC与你的WordPress网站连接的解决方案不能再与你的网站连接。

网络应用防火墙(WAF)在保护任何托管服务器上的WordPress网站方面发挥着关键作用。它们构成了防御基于云的漏洞的骨干,这些漏洞会破坏安全或损害网站和数据的可用性。

这里有一些最好的开源WAF来保护你的WordPress网站:

  • ModSecurity
  • WebKnight
  • Vulture

还有一些付费的WAFs:

  • Cloudflare
  • Sucuri
  • Stackpath

这里可以选择一些WordPress安全防护插件:

  1. 【SecuPress Pro完美汉化中文版|专业WordPress漏洞扫描及安全插件介绍】
  2. 【iThemes Security Pro汉化中文专业版|WordPress最佳安全防护插件介绍】
  3. 【WPMU Dev Defender Pro 3.4.0完美汉化中文版|WordPress高级防火墙安全防护插件】
类别:WordPress 进阶教程

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册