Apache — один из наиболее широко используемых и популярных веб-серверов в мире, поэтому важно защитить свой веб-сайт и пользователей от атак методом грубой силы. Fail2ban — это программное обеспечение для предотвращения вторжений с открытым исходным кодом, написанное на Python. Fail2Ban постоянно анализирует файлы журналов различных сервисов (например, Apache, ssh, postfix…), и если обнаруживает вредоносные атаки, то создает правила в брандмауэре, чтобы блокировать IP-адреса хакеров на определенный период времени. Fail2Ban также информирует системного администратора по электронной почте о своей активности.
В этой статье я объясню, как установить Fail2ban и настроить его для мониторинга журналов Apache на предмет попыток вредоносной аутентификации.
Требования
- Сервер Ubuntu 14.04 с установленным Apache
- Apache настроен с аутентификацией по паролю
Установка Fail2Ban
Во-первых, убедитесь, что сервер Apache работает и аутентификация по паролю включена.
Далее вы можете установить Fail2ban, выполнив:
sudo apt-get update sudo apt-get install fail2ban
Настроить Fail2ban для Apache
Fail2ban хранит свой файл конфигурации «jail.conf» в каталоге «/etc/fail2ban/». Он содержит набор
Contents
Требования
ильтров для различных сервисов, поэтому не рекомендуется редактировать этот файл. Вам необходимо включить предопределенные тюрьмы Apache, создав файл «/etc/fail2ban/jail.local»:Чтобы создать новый файл «jail.local», выполните:
sudo nano /etc/fail2ban/jail.local
Добавьте следующий контент:
[apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-noscript] enabled = true port = http,https filter = apache-noscript logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-overflows] enabled = true port = http,https filter = apache-overflows logpath = /var/log/apache2/*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227 [apache-badbots] enabled = true port = http,https filter = apache-badbots logpath = /var/log/apache2/*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227
Сохраните и закройте файл, затем перезапустите Fail2ban, чтобы изменения вступили в силу.
sudo /etc/init.d/fail2ban restart
Вы можете проверить правила, добавленные Fail2Ban, в iptables, используя следующую команду:
sudo iptables -L
Вывод будет выглядеть примерно так:
Примечание. Подробную информацию о каждой тюрьме можно найти ниже:
[apache]
: эта клетка используется для блокировки неудачных попыток входа в систему.[apache-noscript]
: эта клетка используется для блокировки удаленных клиентов, которые ищут на веб-сайте сценарии для выполнения.[apache-overflows]
: эта клетка используется для блокировки клиентов, пытающихся запросить подозрительные URL-адреса.[apache-noscript]
: эта клетка используется для блокировки удаленных клиентов, которые ищут на веб-сайте сценарии для выполнения.[apache-badbots]
: эта клетка используется для блокировки вредоносных запросов ботов.
Примечание. Подробную информацию о каждом правиле можно найти ниже.
enabled
: этот параметр означает, что защита Apache включена.port
: этот параметр определяет службы, которые отслеживает Fail2ban.filter
: этот параметр относится к файлу конфигурации, расположенному в каталоге/etc/fail2ban/filter.d/
.logpath
: этот параметр определяет расположение файла журнала.bantime
: этот параметр определяет количество секунд, в течение которых удаленный хост будет заблокирован на сервере.maxretry
: этот параметр определяет количество неудачных попыток входа в систему, прежде чем удаленный хост будет заблокирован на время блокировки.ignoreip
: этот параметр позволяет внести определенные IP-адреса в белый список от блокировки.
Проверьте статус блокировки Fail2ban
После активации джейлов вы можете проверить Fail2ban с помощью команды fail2ban-client
:
sudo fail2ban-client status
Вы можете увидеть список всех включенных вами джейл.
Чтобы просмотреть статус конкретной тюрьмы, например apache, apache-badbots, выполнив следующие команды:
sudo fail2ban-client status apache
Вывод выглядит следующим образом:
Вы также можете вручную установить или разблокировать IP-адреса.
Например, чтобы заблокировать IP-адрес (192.168.1.20) с помощью тюрьмы Apache:
sudo fail2ban-client set apache banip 192.168.1.20
Чтобы разблокировать IP-адрес (192.168.1.21) с помощью тюрьмы Apache:
sudo fail2ban-client set apache unbanip 192.168.1.21
Тестирование Fail2Ban
Важно проверить ваш Fail2ban, работает ли он должным образом или нет. Теперь на удаленном компьютере откройте веб-браузер и введите URL-адрес вашего домена (или IP-адрес вашего сервера). Когда Apache запрашивает аутентификацию, несколько раз введите неверное имя пользователя и пароль. После достижения лимита вы должны быть заблокированы и не сможете получить доступ к сайту.
Проверьте статус с помощью команды fail2ban-client
:
sudo fail2ban-client status apache
Вы увидите, что ваш IP-адрес заблокирован на сайте.
Заключение
Теперь