Ограничение доступа к xmlrpc.php

1 авг. 2014 г., 16:33:07
Просмотры: 14.4K
Голосов: 2

Я новичок в WordPress и недавно заметил огромное количество запросов к следующему файлу:

162.242.170.222 - - [01/Aug/2014:08:18:54 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:02 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:11 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861
162.242.170.222 - - [01/Aug/2014:08:19:13 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861
162.242.170.222 - - [01/Aug/2014:08:19:18 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861

Я заблокировал IP-адрес, но это временное решение. Существует ли постоянный способ блокировки этих запросов, особенно если мне не нужен доступ к xmlrpc.php?

0
Все ответы на вопрос 4
0
10

Если ваш сервер работает на Apache, вы можете заблокировать доступ до того, как запрос дойдет до WordPress, добавив одну строку в .htaccess:

Redirect 403 /xmlrpc.php

Можно добавить ещё одну строку, чтобы сократить ответ:

ErrorDocument 403 "no"

Это отправит минимально возможный ответ (два байта плюс HTTP-заголовки) и сэкономит ресурсы сервера для более важного трафика.

1 авг. 2014 г. 20:55:43
5

Для этого существуют плагины, например: http://wordpress.org/plugins/disable-xml-rpc/

Также вы можете написать собственный фильтр:

add_filter('xmlrpc_enabled', '__return_false');

Вы можете просто добавить этот код в файл functions.php вашей темы (находится в wp-content/themes/ваша_тема).

Однако рекомендуется создать дочернюю тему (http://codex.wordpress.org/Theme_Development), чтобы ваши изменения не исчезли при обновлении темы.

Альтернативно, вы можете создать собственный плагин (http://codex.wordpress.org/Writing_a_Plugin), куда поместите все свои настройки WordPress.

Для лучшей защиты я также добавляю следующее:

/**
 * Защита WordPress путем удаления информации о версии
 */
remove_action('wp_head', 'wp_generator');


/**
 * Защита WordPress путем скрытия ошибок входа
 */
function hide_login_errors($errors) { return 'ошибка входа'; }
add_filter('login_errors', 'hide_login_errors', 10, 1);
1 авг. 2014 г. 16:43:16
Комментарии

Было бы хорошо, если бы вы добавили объяснение, куда вставлять код и какие последствия может иметь использование этого метода

Mark Kaplun Mark Kaplun
1 авг. 2014 г. 17:15:11

Конечно :) Я отредактировал ответ

YaFred YaFred
1 авг. 2014 г. 20:36:30

Пожалуйста, не используйте create_function(). Никогда. Этот код сложно читать, и он не может храниться в opcache.

fuxia fuxia
1 авг. 2014 г. 20:56:39

что бы вы предложили?

YaFred YaFred
1 авг. 2014 г. 21:09:42

Либо отдельную функцию, либо замыкание.

fuxia fuxia
3 авг. 2014 г. 04:06:29
0

Другой способ — добавить это в ваш файл .htaccess:

<Files "xmlrpc.php">
order allow,deny
deny from all
errordocument 403 /noaccess.html
errordocument 404 /noaccess.html
</Files>
9 сент. 2014 г. 13:53:46
0

или для nginx

# Отключить xmlrpc.php, так как он подвергается атакам скрипт-кидди
location ~ xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
    return 444;
}
13 апр. 2023 г. 00:29:31