Нехороших хакеров можно и нужно банить по IP – т.е. не пускаем пакеты с отдельных IP в обработку.
Но есть ряд проблем:
- часть IP (с которых идет атака) принадлежат не хакерам, а вполне обычным пользователям, которые наловили вирусов на свой ПК (и теперь он работает на другого хозяина)
- с учетом ежедневной смены IP провайдером у большей части обычных пользователей – через сутки конкретный IP станет не опасным
- есть упрямые хакеры, которые работают с постоянного IP
- еще есть “умники”, которые пытаются запустить разные php-скрипты в адресной строке браузера (в основном получают, конечно, код 404)
- есть принципиально разные блокировки IP
- на уровне CMS WordPress
- на уровне сервера Апач
Про основные виды атак на сайт WordPress можно прочитать в статье
Большая часть плагинов осуществляет блокировку на уровне CMS WordPress. Это работает – но есть или обидчивые хакеры или тупые боты (не умеют читать, что они заблокированы) – они все равно пытаются обращаться к странице проверки пароля (например).
Можно условно разделить плагины на три категории:
- сложные комбайны WP вида WP Security или Wordfence Security , они блокируют многие угрозы – на дают сильную нагрузку на сервер (всю эту статистику атак нужно вести), сюда же условно можно отнести и плагин Limit Login Attempts Reloaded – он блокирует вход, но оставляет форму входа (и боты туда радостно пытаются что-то добавить)
- простой плагин WP-bun – просто блокируется доступ ко всем страницам сайта по IP (и фронт и бэк), сервер PHP мало грузится на обработку запросов от IP
- плагины, блокирующие сайт на уровне сервера Apach (через настройки .htaccess) – сервер практически не грузится повторными атаками с данного IP
Вот так, например, для плагина Limit Login Attempts Reloaded. Вход заблокирован, но боты продолжают вносить данные в форму входа.
Интервал менее 1 мин. с одного IP=192.162.101.91
В результате загрузка CPU у хостера под 100%, и если это Ваш выделенный сервер – остальные сайты тоже лягут. Такая мини-DDOS атака.
ВАЖНО: Если все сломалось и/или Вы не можете зайти в административную панель после использования очередного плагина – заходите на хостинг по FTP, далее в папку www/wp-content/plugins, находите там папку с плагином и удаляете.
Плагины WordPress – блокировка IP на уровне CMS
ВАЖНО: Все это счастье заработает не сразу. Ваш сайт уже растащили себе на CDN поисковые машины, т.е. в части случаем сайт грузится не с Вашего сервера, а с CDN (точнее его текстовая копия html). Т.е. несмотря на блокировку IP – при загрузке с CDN Ваш сервер PHP участвовать не будет. Нужно подождать, пока обновятся кэши.
Или использовать “костыль” – с помощью JS и AJAX сделать вызов со своего сервера скрипта PHP, который и заблокирует IP. Это сработает даже в случае кэширования (как на своем сервере, так и в случае CDN), т.к. вызов JS будет из кода html страницы.
Плагин Limit Login Attempts Reloaded
Настройки очень простые:
Галочку “Отправлять имейл (который e-mail конечно) админу после….” ставим обязательно.
Делает несколько полезных вещей:
- ограничивает число попыток ввода пароля (настраивается)
- прячет информацию о правильном логине, теперь страница входа (после ошибки) выглядит так
UPD: Обратите внимание на картинку. После исчерпания всех попыток блокируется вход с любым логином/паролем, а не ограничение числа попыток… С точки зрения безопасности это не имеет значения – хакеров всё равно не пустит на сайт.
А вот с точки нагрузки на сервер – очень даже имеет значение возможность вводить данные в форму. Несмотря на заблокированный вход – форма для входа остается для ввода данных, боты их продолжают вводить и грузят сервер.
Также ведется лог попыток (изоляций), видно, что роботы с мобильных устройств (да, да – через вход xmlrpc.php) более тупые. Бьются до исчерпания всех 4-х попыток, установленных в качестве ограничения.
Более умные роботы (ботнеты) видят защиту и пробуют вход с одного IP не более 2-х раз, что бы администратору не отсылалась информация о переборе паролей.
После установки логина/пароля на файл xmlrpc.php для нормального пользователя все логично – сначала мобильное приложение запрашивает логин/пароль от WordPress, потом идет запрос пароля от сервера HTTP.
Боты пытаются сразу обратиться к файлу xmlrpc.php и получают пинок в виде запроса пароля от сервера HTTP. Соответственно все многократные попытки подбора по XMLRPC из логов исчезают.
Позволяет вручную добавлять IP для блокировки. Банит в целом весь сайт (любые страницы домена), а не только страницы входа.
Блокировать можно по:
- конкретным IP адресам
- по диапазону IP адресов
- по определенным хостам
- по переходу с определенных сайтов
- по USER-agent
- по запросу некорректных url (однократный бан) – можно добавить список админок чужих CMS
ВАЖНО: осторожнее с частью адреса url!
При использовании конструкции *admin* для адреса URL – Вы себе сразу заблокируете административную панель (которая /wp-admin/) – и блокировку черед админку больше не снять. Удаление плагина через FTP поможет – но список блокировок в базе останется. Если плагин установить заново – блокировка вернется. Удалить блокировку можно только через PhpMyAdmin – найдя в базе MySql таблицу wp_option и строки, которые относятся к этому плагину.
Вот тут есть конвертер всех IP страны в диапазон адресов – получаем в txt и вставляем в поле нашего ллагина :)
Конвертер IP диапазонов стран в CIDR формат для блокировки по IP
Можно подготовить соответствующее сообщение для заблокированного IP
Также ведется статистика особо упрямых ботов с постоянным IP
Плюсы
- для заблокированного IP показывается статичная картинка без полей ввода (сервер php грузится минимально)
- для данного IP блокируется весь сайт, а не только административная панель и форма входа
Минус один – это ручная обработка IP
Плагины WordPress – блокировка IP на уровне сервера Apach
В большинстве случаев основные настройки сервера недоступны для рядового пользователя. Но у нас есть файл .htaccess, в котором можно указать запрет для посетителей с определенным IP.
Для версии Apach 2.4 инструкции вида
<RequireAll> Require all granted Require not ip 213.167.206.7 </RequireAll>
Для старой версии Apach 2.2 инструкции немного другие
Deny from 185.220.101.34 Deny from 213.167.206.7 Deny from 11.22.33.44
В этой статье подробнее
Контроль доступа к сайту (блокировка по IP, User-Agent)
Соответственно, нам нужен плагин WP, который умеет:
- дополнять файл .htaccess (дописывать инструкции)
- и делать это правильно с определением версии сервера Apach
Устанавливаем пароль сервера Apach на файл проверки пароля wp-login.php
Добавляем в файл .htaccess (в корневой папке)
<Files wp-login.php> AuthType Basic AuthName “That’s protected Area!” AuthUserFile /home/uXXXX/.htpasswd require valid-user </Files>
Тут и плюс и минус сразу:
- Вы не увидите попыток подбора пароля в WP – запросы не пройдут к сайту, хакеру мешает логин/пароль сервера
- Вы увидите эти попытки подобрать пароль в логах сервера Apach
- Резко снизится нагрузка на сайт, таких умников Apach не допустит до CMS
Подпишитесь в VKontakte - нажмите кнопку | ||
Подпишитесь в Telegram - нажмите кнопку | ||
Наша группа ODNOKLASSNIKI |
Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла
Пишите на электронную почту (тема и email будут добавлены автоматически в письмо)
В Вашем браузере должна быть настроена обработка ссылок mailto
site_post@bk.ru
или просто скопируйте адрес e-mail
Почитать в разделе
Защита WP

(Читать полностью...)
- Всего статей в разделе: 12
- Показано статей в списке: 11
- Сортировка: название по алфавиту
Блокируем ботов-подборщиков через fail2ban

(Читать полностью...)
Варианты основных хакерских атак на Ваш сайт

(Читать полностью...)
Двухфакторная аутентификация WordPress

(Читать полностью...)
Закрываем папки и файлы WordPress с помощью Apache

(Читать полностью...)
Защита базы данных сайта MySql

(Читать полностью...)
Защита текста и картинок от копирования

(Читать полностью...)
Как сбросить пароль администратора WordPress

(Читать полностью...)
Как скрыть логин автора поста

(Читать полностью...)
Как скрыть логин пользователя WordPress

(Читать полностью...)
Переводим сайт WordPress на https

(Читать полностью...)
Плагины для архивирования и переноса сайта

(Читать полностью...)