Назад | Перейти на главную страницу

Настройка fail2ban для блокировки неудачных попыток входа в phpMyAdmin

Мы использовали fail2ban заблокировать не удалось ssh попытки. Я хотел бы настроить то же самое для phpMyAdmin.

Так как phpMyAdmin не регистрирует попытки аутентификации для файла (о котором я знаю), я не уверен, как лучше всего это сделать.

Существует ли плагин / конфигурация, которая делает phpMyAdmin log попытки аутентификации к файлу? Или есть другое место, где мне следует поискать такой журнал активности?

В идеале я смогу найти решение, связанное с изменением fail2ban только config, так как мне нужно настроить fail2ban с одинаковыми параметрами на нескольких серверах, и предпочел бы не изменять различные phpMyAdmin установки на указанных серверах.

Я думаю, что лучший способ (и, на мой взгляд, менее опасный) использовать phpMyAdmin - это не открывать phpMyAdmin напрямую на общедоступном IP-адресе, а прослушивать только внутренний IP-адрес или loopback и создавать SSH-туннель для подключения к нему, используя локальный порт на машина, с которой вы хотите работать с phpMyAdmin. Таким образом, разумная аутентификация контролируется SSH (и уже заблокирована fail2ban).

Мы защищаем phpmyadmin, добавляя аутентификацию apache htaccess ldap (или аутентификацию файла) для местоположения phpmyadmin. Вы должны ввести пароль дважды, но неудачные попытки входа в систему распознаются fail2ban.

[http://www.cyberciti.biz/faq/howto-setup-apache-password-protect-directory-with-htaccess-file/ provided[1]

Я использовал комбинацию .htaccess и простой php сценарий, чтобы предоставить решение, которое я считаю приемлемым:

.htaccess

php_value auto_prepend_file /path/to/fail2ban.php

fail2ban.php

  • Обнаруживает присутствие $_REQUEST['pma_{username|password']
  • Подтверждает pma_{username|password} против mysql.user стол
  • Регистрирует ошибку (формат ниже), если данные недействительны

Формат журнала

phpMyadmin login failed with username: root; ip: 192.168.1.50; url: http://somedomain.com/phpmyadmin/index.php
phpMyadmin login failed with username: ; ip: 192.168.1.50; url: http://192.168.1.48/phpmyadmin/index.php

Это решение мне подходит, так как я легко могу интегрировать его в bash сценарий, который я собрал для плавной настройки fail2ban на наших серверах.

Спасибо всем, кто предоставил возможные решения!

В качестве продолжения я открыл вопрос о проблемах, с которыми я столкнулся при создании пользовательского fail2ban фильтр для просмотра и действий с этим новым файлом журнала: Пользовательский фильтр fail2ban для попыток перебора phpMyadmin.