Защита phpmyadmin с помощью Fail2Ban

Сегодня разберем как можно защитить phpmyadmin от BruteForce (брутфорс) — подбор пароля перебором.

Проделывать все манипуляции я буду на Ubuntu Server 16.04, но это также актуально и для всех Debian пообных систем, а также и для других ОС, с небольшими изменениями в путях к директориям (папкам).

Для начала мы вносим небольшое изменение в скрипты phpmyadmin:

sudo nano /usr/share/phpmyadmin/libraries/plugins/auth/AuthenticationCookie.php

В данном файле находим следующие строки:

// needed for PHP-CGI (not need for FastCGI or mod-php)
$response->header('Cache-Control: no-store, no-cache, must-revalidate');
$response->header('Pragma: no-cache');
$this->auth();

И дописываем такую строчку:

error_log('phpmyadmin: authentification failed');

Должно получиться следующее:

// needed for PHP-CGI (not need for FastCGI or mod-php)
$response->header('Cache-Control: no-store, no-cache, must-revalidate');
$response->header('Pragma: no-cache');
error_log('phpmyadmin: authentification failed');
$this->auth();

Теперь остается создать filter и jail для Fail2ban.

Создадим наш фильтр в директории Fail2Ban:

sudo nano /etc/fail2ban/filter.d/apache-phpmyadmin.conf

Вставляем в него следующий листинг:

# Обнаружение ошибок соединения c phpmyadmin
# Автор : Drakullla

[Definition]
# Option: failregex
# Notes.: Если это регулярное выражение совпадает, то строка попадает в бан.
# Values: TEXT
failregex = .*\[client <HOST>:[0-9]+\] phpmyadmin: authentification failed.*

# Option: ignoreregex
# Notes.: Если это регулярное выражение совпадает, строка игнорируется.
# Values: TEXT
ignoreregex =

Теперь создадим jail правило, для этого откроем следующий файл:

sudo nano /etc/fail2ban/jail.local

И в конце внесем следующие строки:

[apache-phpmyadmin]
enabled = true
filter = apache-phpmyadmin
port = http,https
logpath = %(apache_error_log)s 
# Пишем полный путь к логам apache для VestaCP панели  
#logpath = /var/log/apache2/domains/*.error.log
maxretry = 3
findtime = 600
bantime = 7200
# Через пробел свои сети для игнорирования
ignoreip = 127.0.0.0/8

Теперь необходимо перезагрузить Fail2Ban:

sudo /etc/init.d/fail2ban restart

Вот и все,теперь Ваш phpmyadmin защищен от BruteForce (брутфорс) атак.

Если есть вопросы, то пишем в комментариях и не забываем проголосовать за статью.
Защита phpmyadmin с помощью Fail2Ban
5 (100%) 1 vote

Оставить комментарий

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