Защищаем Wordress от перебора паролей с помощью Fail2Ban

fail2ban_and_wordpressНаверно, самым простым и действенным методом от перебора паролей является установка капчи. Но я как то не проникся идеей ее установки и решил задействовать более тяжелую артиллерию, а именно защитить от брутфорса с помощью Fail2Ban (Примечание: инструмент позволяющий защитить сервер от брутфорса таких сервисов как SSH, FTP, Apache и т.д). Fail2Ban не привязан к каким то конкретным сервисам. Блокировка происходит на основании шаблонов, которые определяются в файлах конфигурации. Fail2Ban в реальном времени отслеживание изменения в логах и, при появлении строки из объявленного шаблона, блокирует IP-адрес и высылает отчет на почту админу.

Поскольку добрые люди уже поработали надо дополнением к WordPress,- нам останется его только чуть допилить Fail2Ban для нашей системы. Итак, сначала установите в WordPress дополнение WP fail2ban, либо скачав и установив его «вручную», либо напрямую из раздела Плагины → Добавить новый.

Все действия я произвожу для системы с установленной CentOS x64

Далее установим сам пакет Fail2Ban (ествественно все действия делаются через sudo или от пользователя root).

yum install fail2ban

После успешной установки разработчики рекомендуют нам скопировать файл конфигурации шаблона wordpress.conf из каталога с плагином в каталог /etc/fail2ban/filter.d

cp /var/www/html/www.voip-lab.ru/wp-content/plugins/wp-fail2ban/wordpress.conf /etc/fail2ban/filter.d

Ну и остается последнее действие — откройте файл /etc/fail2ban/jail.conf и добавьте в конец файла следующие строки

[wordpress]
 enabled = true
 filter = wordpress
 logpath = /var/log/messages
 ignoreip = 192.168.0.0/24 44.23.11.33 192.163.22.11
 bantime  = 86400
 findtime  = 600
 maxretry = 5
 action = iptables-multiport[name=Wordpress, port="http,https", protocol=tcp]

Немного расскажу о параметрах:

  • enabled — ну тут не надо ничего объяснять;
  • filter — указывает какой фильтр использовать при анализе логов;
  • ignoreip — «белый список» IP-адресов. В качестве разделителя используйте пробел;
  • logpath — путь к логам для анализа. Убедитесь, что логи об ошибочной авторизации пишутся именно туда;
  • bantime — время в секундах, на которое будет заблокирован IP-адрес;
  • findtime — время в секундах, в течении которых будет проводится анализ на maxretry
  • maxretry — количество попыток в течении findtime
  • action — действие, которое будет производтся при возникновении события на блокирование IP-адреса;

Говоря «человеческим языком» Fail2Ban будет обрабатывать /var/log/messages и если в нем в течении 10 минут (600=60*10) будет более 5 попыток подобрать пароль, то Fail2Ban заблокирует доступ этому IP-адресу по портам 80 и 443 на время 24 часа (86400=60*60*24).

Если вы сомневаетесь, что логи об ошибках автризации пишутся не туда — то найдите файл с фразой Authentication failure for с помощью следующей команды

egrep -r 'Authentication failure for' /var/log/

Если файл не найден, сами сделайте пару попыток авторизоваться с неверным паролем и еще раз пробегитесь по файлам egrep-ом. Если и в этом случае ничего не нашлось, то необходимо открыть файл /etc/syslog.conf и найти куда пишется LOG_INFO. В моем случае это была строка

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Ну и в заключение необходимо запустить Fail2Ban

/sbin/service fail2ban start
Примечание: обратите внимание, что из коробки Fail2Ban включит вам еще защиту ssh.

А вот и «первые ласточки»

fail2banWordpress

Всем спасибо за внимание! =)

 

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *