Постановка задачи
Как fail2ban сможет определить, что произошла неудачная попытка авторизации именно в WordPress? Для этого со стороны WordPress необходимо сообщить о наступлении этого события. По-умолчанию WordPress пишет в логи HTTP код 200, причём делает это даже при неудачных попытках авторизации. По этой причине невозможно точно определить была ли авторизация успешной. При этом, неважно какой использовался веб-сервер Apache или nginx. О какой-то нездоровой активности могут поведать только многочисленные попытки авторизации запросы одной и той же страницы авторизации с одного ip. Поэтому, для записи в логи кода 403 при неудачной попытке авторизации необходимо написать следующий плагин.
Плагин WordPress для fail2ban
Фильтр fail2ban для WordPress
Для того, чтобы fail2ban смог искать ответ веб-сервера 403 при доступе к станицам авторизации — необходимо создать соответствующий фильтр.
В директории /etc/fail2ban/filter.d создаём файл с именем wp-auth.conf, в него записываем текст фильтра:
Поиск обращений к wp-login.php или к xmlrpc.php (это самые часто атакуемые страницы wordpress).
Настройка jail.conf
Находим файл /etc/fail2ban/jail.conf и добавляем в него следующие строки
После внесения изменений следует перезапустить сервис fail2ban.
Проверка работоспособности.
Заходим на страницу авторизации WordPress и несколько раз имитируем неудачную авторизацию. Следующий этап — просмотр логов доступа веб-сервера по адресу /var/log/nginx/access.log для nginx, или /var/log/apache2/access.log для Apache. Там должно быть что-то вроде этого:
Далее следует проверить логи fail2ban, там можно будет увидеть что-то вроде этого:
Если эти записи появляются в логах, это означает, что защита успешно срабатывает.
Свежие комментарии