WordPress — это самая популярная CMS в мире, и именно поэтому она часто становится мишенью для взломщиков и автоматических ботов. В этой статье мы подробно разберём, как обезопасить ваш сайт от самых распространённых видов атак, используя проверенные плагины и кастомные решения. Ниже вы найдёте не только теорию, но и конкретные примеры кода, которые можно сразу применить.
Почему WordPress часто атакуют? Ключевые угрозы
Основные причины, по которым WordPress подвергается атакам:
- Популярность платформы — значит, есть множество автоматизированных скриптов, ищущих уязвимости.
- Большое количество плагинов и тем, многие из которых могут содержать уязвимости.
- Использование слабых паролей и стандартных логинов (admin).
Типичные виды атак включают брутфорс (перебор паролей), SQL-инъекции, XSS, а также попытки внедрить вредоносный код через плагины.
Основные способы защиты WordPress
1. Защита страницы входа wp-login.php
Страница входа — самое уязвимое место. Чтобы усложнить жизнь злоумышленникам, можно:
- Изменить URL страницы входа с помощью плагина.
- Ограничить количество попыток входа.
- Добавить двухфакторную аутентификацию.
Рассмотрим популярные плагины и пример кода.
Плагины для защиты входа
- WPLockdown — простой плагин для изменения URL входа.
- Limit Login Attempts Reloaded — ограничивает количество неудачных попыток входа.
- Wordfence Security — комплексная защита с двухфакторной аутентификацией и мониторингом.
Код для ограничения доступа к wp-login.php по IP
function wplogin_restrict_wp_login() {
if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false) {
$allowed_ips = ['123.45.67.89', '111.22.33.44']; // Замените на свои IP
if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) {
wp_die('Доступ запрещён');
}
}
}
add_action('init', 'wplogin_restrict_wp_login');Этот код блокирует доступ к странице входа для всех, кроме указанных IP-адресов. Удобно для сайтов с фиксированными IP.
2. Защита от брутфорса с помощью Limit Login Attempts
Плагин Limit Login Attempts Reloaded — простой и эффективный инструмент. Он блокирует IP после определённого числа неудачных попыток входа, что значительно снижает риск взлома подбором пароля.
Настройте параметры блокировки в админке, чтобы определить количество попыток и время блокировки.
3. Использование двухфакторной аутентификации (2FA)
2FA — один из самых надёжных способов защитить учётные записи. После ввода пароля пользователь должен подтвердить вход с помощью кода из мобильного приложения или по SMS.
Для WordPress есть несколько хороших плагинов, например:
- Google Authenticator – Two Factor Authentication
- Wordfence Security (имеет встроенную 2FA)
Это значительно усложнит жизнь злоумышленникам, даже если они узнают ваш пароль.
Защита от SQL-инъекций и XSS
Использование плагинов безопасности
Плагины вроде Wordfence Security и iThemes Security обеспечивают фильтрацию подозрительных запросов и защиту от распространённых атак.
Кастомные хуки для фильтрации входящих данных
Можно добавить проверку данных на уровне PHP, чтобы отсеивать потенциально опасные запросы.
function wplogin_sanitize_get_requests() {
foreach ($_GET as $key => $value) {
if (preg_match('/(union|select|insert|update|delete|drop|;|--)/i', $value)) {
wp_die('Подозрительный запрос заблокирован');
}
}
}
add_action('init', 'wplogin_sanitize_get_requests');Этот простой фильтр блокирует запросы с потенциально опасными SQL-ключевыми словами.
Дополнительные меры безопасности
1. Регулярные обновления WordPress, тем и плагинов
Обновления закрывают известные уязвимости. Настройте автоматические обновления или регулярно проверяйте наличие новых версий.
2. Резервное копирование сайта
Используйте плагин UpdraftPlus или аналогичный для регулярного сохранения копий сайта и базы данных. Это поможет быстро восстановиться после взлома.
3. Отключение выполнения PHP в папках загрузок
Чтобы предотвратить загрузку и исполнение вредоносных скриптов, запретите запуск PHP в каталоге uploads добавив файл .htaccess с таким содержимым:
# Отключить исполнение PHP
<Files *.php>
deny from all
</Files>Итоговые рекомендации по безопасности WordPress
- Измените URL страницы входа с помощью плагина.
- Ограничьте попытки входа и добавьте 2FA.
- Используйте проверенные плагины безопасности.
- Фильтруйте подозрительные запросы на уровне кода.
- Обновляйте WordPress и плагины своевременно.
- Делайте резервные копии сайта.
- Ограничьте исполнение PHP в папках загрузок.
Следуя этим советам, вы значительно повысите безопасность вашего сайта на WordPress и защитите его от большинства автоматических атак и попыток взлома.