使用HTTPS重定向

时间:2016-06-02 11:35:29

标签: nginx xml-rpc

我试图通过以下配置避免令人讨厌的xmlrpc攻击:

server {
   listen 443 ssl default deferred;
   server_name myserver.com;

   ...
}

server {
  listen 80;
  server_name myserver.com;

  location /xmlrpc.php {
        deny all;
        access_log off;
        log_not_found off;
        return 444;
  }

  return 301 https://$host$request_uri;
}

显然,位置块无法正常工作,因为对/xmlrpc.php的请求会被重定向,如日志所示:

[02/Jun/2016:11:24:10 +0000] "POST /xmlrpc.php HTTP/1.0" 301 185 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

如何在不将其重定向到HTTPS的情况下立即放弃对/xmlrpc.php的所有请求?

2 个答案:

答案 0 :(得分:2)

XMLRPC攻击是一种常见的攻击,它允许攻击者使用随机身份验证凭据不断调用您的xmlrpc.php文件。

你需要使用像Fail2Ban这样的实用程序,它可以非常有效地阻止和防止你的WordPress站点遭受常见的xmlrpc攻击。

如果您不从外部发布内容,首先禁用XMLRPC。在主题的function.php文件

中添加以下代码行
add_filter( 'xmlrpc_enabled', '__return_false' );

.conf文件中添加以下内容

location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
}

然后,您需要在服务器上安装Fail2Ban

apt-get install fail2ban iptables

yum install fail2ban

安装后,您需要编辑jail.conf文件

vim /etc/fail2ban/jail.conf

jail.conf文件中添加以下代码行

[xmlrpc]
enabled = true
filter = xmlrpc
action = iptables[name=xmlrpc, port=http, protocol=tcp]
logpath = /var/log/apache2/access.log 
bantime = 43600
maxretry = 2

这将读取access.log文件(提供访问日志的实际路径)并查找失败的尝试。如果它检测到超过2次尝试失败,则会在您的iptables中添加攻击者IP地址。

现在,我们必须为fail2ban创建一个过滤器。在终端

中键入此内容
cd /etc/fail2ban/filter.d/
vim xmlrpc.conf

在此过滤器文件中粘贴以下定义

[Definition]
failregex = ^<HOST> .*POST .*xmlrpc\.php.*
ignoreregex =

现在,只需重新启动fail2ban服务

service fail2ban restart or /etc/init.d/fail2ban/restart

查看此类日志

tail -f /var/log/fail2ban.log

同样在您的iptables中,您将不断看到许多必须看到连接拒绝错误的条目。

watch iptables -L

持续监控。它应该立即阻止xmlrpc攻击,你应该在你的iptables中看到很多条目。

如果有依赖于XMLRPC的插件,您可以在配置文件中允许自己的IP。

答案 1 :(得分:0)

你可以这样试试:

location ^~/xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
    return 444;
}