В прошлый раз я показал как быстро и непринужденно брутится пароль 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
![Статус jail правила apache-auth Статус jail правила apache-auth](https://itnots.ru/wp-content/uploads/2019/09/status_for_the_jail-e1569382421660.png)
Просмотрим текущие правила iptables
iptables -L
![iptables iptables](https://itnots.ru/wp-content/uploads/2019/09/iptables.png)
По умолчанию количество попыток(5), время поиска по логам(600), время бана(600) и прочие настройки задаются файлом по умолчанию /etc/fail2ban/jail.conf
Для каждого отдельного jail эти переменные можно изменять тут /etc/fail2ban/jail.d/defaults-debian.conf
Ну что ж, пришло время проверить нашу авторизацию. Для онлайн мониторинга лога будем использовать команду tailf
tailf /var/log/fail2ban.log
![fail2ban fail2ban](https://itnots.ru/wp-content/uploads/2019/09/fail2ban-e1569384573899.png)
После 5 попытки сервер по http и https отвечать перестал. Вообще! TCP пакеты от данного IP заворачиваются в цепочке iptables
![iptables reject iptables reject](https://itnots.ru/wp-content/uploads/2019/09/iptables-1-e1569384752136.png)
И так в течении 600 секунд, пока не выйдет срок бана указанный в конфигурации. Посмотрим вывод fail2ban-client status apache-auth
![fail2ban-client status apache-auth fail2ban-client status apache-auth](https://itnots.ru/wp-content/uploads/2019/09/status-e1569386119834.png)
Бан можно снять вручную, командой
fail2ban-client set apache-auth unbanip 192.168.56.3
А теперь вновь воспользуемся hydra для перебора нашей http авторизации.
Это абсолютно бесполезно…