Одной из распространённых угроз для сайтов на WordPress является автоматическое сканирование уязвимостей, которое проводят злоумышленники и боты. Такие сканеры анализируют структуру сайта, пытаются найти известные уязвимости в плагинах, темах или самой системе. Если ваш сайт выставлен открыто и доступен для сканирования, это значительно повышает риск взлома. В этой статье разберём, как эффективно ограничить сканирование сайта, как скрыть ключевые технические детали и какие приёмы помогут снизить вероятность обнаружения уязвимостей.
Почему важно ограничивать сканирование WordPress
Сканирование — это первый этап многих взломов. Автоматические боты пытаются найти открытые административные панели, устаревшие версии плагинов, файлы конфигураций, которые могут содержать секреты, а также уязвимости в коде. Если сайт постоянно подвергается таким проверкам, это увеличивает шанс атаки типа SQL-инъекции, XSS или внедрения вредоносного кода.
Кроме того, постоянное сканирование повышает нагрузку на сервер, что может негативно сказаться на производительности сайта и удобстве пользователей. Ограничение доступа к техническим деталям и контроль сканеров помогают поддерживать стабильную работу и безопасность.
Как определить, что сайт сканируют
Прежде чем принимать меры, полезно убедиться, что ваш сайт действительно подвергается сканированию. Вот основные признаки:
- В логах сервера вы видите большое количество запросов с одного IP или из одного диапазона IP, особенно с частыми обращениями к административным URL (wp-login.php, wp-admin/).
- Запросы к файлам, которые не используются на сайте, например readme.html, license.txt, xmlrpc.php.
- Появление подозрительных запросов с типичными для сканеров User-Agent, например, "Nikto", "WPScan", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" (поддельные).
Можно использовать плагины для мониторинга активности, например, Clearfy Pro, который позволяет отслеживать подозрительные обращения и блокировать их.
Технические методы защиты от сканирования WordPress
1. Ограничение доступа к административным разделам через .htaccess
Один из самых простых способов — ограничить доступ к папке wp-admin и файлу wp-login.php по IP-адресу. В файле .htaccess в корне сайта или в папке wp-admin добавьте следующий код:
# Ограничение доступа к wp-admin по IP
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 123.123.123.123
</Files>
# Ограничение доступа к папке wp-admin
<Directory /path/to/your/site/wp-admin/>
Order Deny,Allow
Deny from all
Allow from 123.123.123.123
</Directory>
Замените 123.123.123.123 на ваш IP или диапазон доверенных IP. Это эффективно блокирует большинство автоматических сканеров, не имеющих доступа к вашему IP.
2. Скрытие стандартных URL и файлов WordPress
По умолчанию WordPress оставляет много «следов» в виде стандартных URL, таких как /wp-login.php, /wp-admin/, /wp-content/plugins/, и файлов вроде readme.html. Сканеры часто ищут именно их.
Можно переименовать страницу входа в админку с помощью плагина. Например, Clearfy Pro позволяет задать уникальный URL для входа в админку без сложных настроек.
Также рекомендуем удалить или заблокировать доступ к файлам readme.html и license.txt, которые содержат информацию о версии WordPress:
# Блокировка доступа к readme.html и license.txt
<FilesMatch "^(readme\.html|license\.txt)$">
Order allow,deny
Deny from all
</FilesMatch>
3. Отключение XML-RPC, если не используется
Файл xmlrpc.php часто становится объектом атак и сканирования. Если вы не используете возможности удалённого управления WordPress, лучше его отключить.
Добавьте в functions.php вашей темы или в плагин с префиксом wphide_ следующий код:
function wphide_disable_xmlrpc() {
add_filter('xmlrpc_enabled', '__return_false');
}
add_action('init', 'wphide_disable_xmlrpc');
4. Использование файервола и блокировка ботов
Фаерволы, такие как Clearfy Pro или внешние WAF (Cloudflare, Sucuri) позволяют настроить правила блокировки подозрительного трафика и сканеров.
Можно на уровне сервера или плагина блокировать User-Agent известных сканеров, например:
# Блокировка User-Agent сканеров
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Nikto|WPScan|acunetix|sqlmap) [NC]
RewriteRule .* - [F,L]
</IfModule>
Как программно обнаруживать и блокировать сканирование
Пример плагина для блокировки частых обращений к wp-login.php
Ниже пример простого кода, который можно добавить в functions.php или оформить в плагин, для ограничения повторных попыток доступа к странице входа по IP:
function wphide_limit_login_attempts() {
if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false) {
$ip = $_SERVER['REMOTE_ADDR'];
$limit = 5; // Максимум 5 попыток
$time_window = 300; // Временное окно в секундах (5 минут)
if (!session_id()) {
session_start();
}
if (!isset($_SESSION['wphide_login_attempts'])) {
$_SESSION['wphide_login_attempts'] = [];
}
// Очистка старых попыток
$_SESSION['wphide_login_attempts'] = array_filter($_SESSION['wphide_login_attempts'], function($timestamp) use ($time_window) {
return ($timestamp + $time_window) > time();
});
if (count($_SESSION['wphide_login_attempts']) >= $limit) {
wp_die('Слишком много попыток входа. Попробуйте позже.');
} else {
$_SESSION['wphide_login_attempts'][] = time();
}
}
}
add_action('init', 'wphide_limit_login_attempts');
Этот простой механизм может помочь снизить нагрузку от брутфорс-атак и сканирования страницы входа.
Рекомендации по настройке и дополнительные советы
- Регулярно обновляйте WordPress, темы и плагины, чтобы не оставлять известных дыр.
- Используйте плагины безопасности, например, Clearfy Pro, которые включают комплексные функции для защиты от сканирования.
- Отключайте ненужные сервисы и API, например REST API, если не используете.
- Настраивайте файрволы и правила на сервере, блокируйте подозрительные IP и User-Agent.
- Используйте капчу или двухфакторную аутентификацию для защиты входа.
Заключение
Защита WordPress от сканирования и выявления уязвимостей — важный аспект безопасности сайта. Даже простые меры, такие как ограничение доступа по IP, переименование страниц входа, отключение ненужных функций и мониторинг активности, значительно снижают риск автоматических атак и повышают устойчивость сайта. Используйте описанные в статье методы и инструменты, чтобы минимизировать следы вашего сайта для сканеров и обеспечить надежную защиту.