2016-06-02 1 views
0

Я пытаюсь избежать неприятную XmlRpc атаки со следующей конфигурацией:XMLRPC атака на Nginx сконфигурирована с перенаправлением HTTPS

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)" 

Как я могу отказаться от всех запросов на /xmlrpc.php сразу, без необходимости их перенаправлены на HTTPS?

ответ

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 неудачных попыток, IP-адрес злоумышленников добавляется в ваш iptables.

Теперь мы должны создать фильтр для 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-адрес в файле конфигурации.

0

Вы можете попробовать это таким образом:

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