В прошлый раз я показал как быстро и непринужденно брутится пароль HTTP авторизации. Теперь защитим её от перебора, при помощи правил fail2ban. Собственно необходимое jail правило в VestaCP уже установлено, но не активировано по умолчанию. По умолчанию активирована только защита от перебора по ssh. Посмотреть текущие активные jail-ы можно командой
fail2ban-client status
Убедившись, что в этом списке ещё нет нужного нам apache-auth откроем следующий конфиг
nano /etc/fail2ban/paths-debian.conf
Тут нужно указать правильный шаблон path к error логам apache, у меня это выглядит так:
apache_error_log = /var/log/apache2/domains/*error.log
далее открываем файл
nano /etc/fail2ban/jail.d/defaults-debian.conf
и добавляем строки
[apache-auth] enabled = true
одной строкой это делается так:
cat /etc/fail2ban/jail.d/defaults-debian.conf && echo -e "[apache-auth]\nenabled = true" >> /etc/fail2ban/jail.d/defaults-debian.conf
Теперь перезапустим fail2ban
fail2ban-client reload
Проверим статус jail правила
fail2ban-client status apache-auth

Просмотрим текущие правила iptables
iptables -L

По умолчанию количество попыток(5), время поиска по логам(600), время бана(600) и прочие настройки задаются файлом по умолчанию /etc/fail2ban/jail.conf
Для каждого отдельного jail эти переменные можно изменять тут /etc/fail2ban/jail.d/defaults-debian.conf
Ну что ж, пришло время проверить нашу авторизацию. Для онлайн мониторинга лога будем использовать команду tailf
tailf /var/log/fail2ban.log

После 5 попытки сервер по http и https отвечать перестал. Вообще! TCP пакеты от данного IP заворачиваются в цепочке iptables

И так в течении 600 секунд, пока не выйдет срок бана указанный в конфигурации. Посмотрим вывод fail2ban-client status apache-auth

Бан можно снять вручную, командой
fail2ban-client set apache-auth unbanip 192.168.56.3
А теперь вновь воспользуемся hydra для перебора нашей http авторизации.
Это абсолютно бесполезно…