У меня есть сервер Debian с phpmyadmin. Я хочу использовать fail2ban для блокировки атаки методом перебора. У меня есть вопросы:
10.0.5.1 - - [01 / мар / 2016: 23: 47: 46 +0800] "GET / phpmyadmin / HTTP / 1.1" 200 4028 "-" "Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit / 537.36 (KHTML, например Gecko) Chrome / 48.0.2564.116 Safari / 537.36 "10.0.5.1 - - [01 / марта / 2016: 23: 47: 49 +0800]" POST /phpmyadmin/index.php HTTP / 1.1 "200 4033"http://10.0.0.105/phpmyadmin/"" Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit / 537.36 (KHTML, например, Gecko) Chrome / 48.0.2564.116 Safari / 537.36 "10.0.5.1 - - [01 / мар / 2016: 23: 47: 55 + 0800] "POST /phpmyadmin/index.php HTTP / 1.1" 200 4019 "http://10.0.0.105/phpmyadmin/index.php"" Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit / 537.36 (KHTML, например, Gecko) Chrome / 48.0.2564.116 Safari / 537.36 "10.0.5.1 - - [01 / Mar / 2016: 23: 48: 29 + 0800] "POST /phpmyadmin/index.php HTTP / 1.1" 200 4019 "http://10.0.0.105/phpmyadmin/index.php"" Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 48.0.2564.116 Safari / 537.36 "
К сожалению, версия, предоставляемая через apt, по-прежнему 4.6.6, но есть действительно способ обновить ее до текущей стабильной версии (4.8.3): https://askubuntu.com/a/1057085. В принципе:
wget
последняя версия от https://www.phpmyadmin.net/downloads/unzip
rm
или mv
старая папка phpmyadmin в /usr/share
(очевидно, сделайте резервную копию любой пользовательской конфигурации)cp -r phpMyAdmin-4.8.3-english /usr/share/phpmyadmin
/usr/share/phpmyadmin/config.inc.php
и использовать mkdir tmp
& chown -R www-data:www-data /usr/share/phpmyadmin/tmp
чтобы включить кеширование шаблоновПосле этого вы увидите неудачные попытки в auth.log. Что-то вроде phpMyAdmin[27685]: user denied: admin (mysql-denied) from X.X.X.X
. Теперь откройте конфигурацию вашей тюрьмы fail2ban (я думаю, она находится в /etc/fail2ban/jail.local
и добавьте следующий блок:
[phpmyadmin-syslog]
enabled = true
filter = phpmyadmin-syslog
maxretry = 3
Должно работать нормально.
Из документация для версии 4.7.0, которая все еще находится в разработке и не доступна напрямую:
Альтернативный подход может заключаться в использовании fail2ban в качестве журналов phpMyAdmin неудачных попыток аутентификации в системном журнале (если доступно)
К сожалению, это ведение журнала вводится только в текущей основной ветке, которая, как я уже упоминал, в какой-то момент в будущем станет 4.7.0. Вероятно, вы можете смело использовать ветку master, так как разработчики стараются ничего не сломать в процессе разработки. Кроме того, вам придется что-то реализовать, просматривая журналы доступа Apache, а не напрямую из phpMyAdmin.
В Ubuntu упакованный fail2ban довольно хорошо настроен из коробки, я полагаю, что Debian похож. редактировать /etc/fail2ban/jail.local
и включите разделы Apache, которые включают [apache]
и ряд подобных разделов (например, [apache-overflows]
и [apache-badbots]
). Вы можете также включить здесь фильтрацию для PHP.
Я бы не ожидал увидеть что-нибудь в журнале ошибок Apache в этом случае, так что с этим все в порядке.
О собственно настройка fail2ban, я не большой эксперт, но по крайней мере с этого вы должны начать.
Дополнительное чтение: https://www.digitalocean.com/community/tutorials/how-to-protect-an-apache-server-with-fail2ban-on-ubuntu-14-04 или любой другой учебник, который вы можете найти в Google.