Безопасность веб-сервера. Настраиваем Fail2ban для защиты сервера Apache на Debian.
Продолжаем рассматривать способы защиты веб-сервера, от потенциальных угроз. На этот раз рассмотрим такой инструмент как Fail2ban.
Принцип работы Fail2ban, заключается в анализе лог-файлов и реагировании на определенные события которые определены в настройках Fail2ban.
Рассмотрим как установить Fail2ban и настроить на защиту веб-сервера (Apache), развернутом на Debian 9 Stretch.
Устанавливаем пакет fail2ban:
apt-get install fail2ban -y
Конфигурационный файл настройки правил /etc/fail2ban/jail.conf
, разработчики не рекомендуют изменять, поэтому создадим его локальную копию, из которого будут в приоритете считываться правила:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Настройка правил (jails)
Fail2ban поставляется с набором предопределённых правил jails
, для популярных приложений, таких как Apache
, Nginx
, SSH
…. Само собой разумеется можно создать и собственные правила для произвольных приложений.
Каждое правило для определения атак, полагается на фильтры описанные в каталоге /etc/fail2ban/fileter.d/
, а доступные действия на обнаруженные атаки описаны в каталоге /etc/fail2ban/action.d/
Задействуем встроенные правила для Apache. Открываем ранее созданный файл конфигурации /etc/fail2ban/jail.local
и добавляем в него правила:
# Определение неудачных попыток ввода пароля [apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache*/*error.log maxretry = 6 # Определение потенциального сканирования для применения эксплойтов и php уязвимостей [apache-noscript] enabled = true port = http,https filter = apache-noscript logpath = /var/log/apache*/*error.log maxretry = 6 # Определение попыток переполнения Apache [apache-overflows] enabled = true port = http,https filter = apache-overflows logpath = /var/log/apache*/*error.log maxretry = 2 # Определение неудачных попыток в поиске домашней директории на сервере [apache-nohome] enabled = true port = http,https filter = apache-nohome logpath = /var/log/apache*/*error.log maxretry = 2
В указанных правилах, не определяется действие, при срабатывании триггера, поэтому они будут выполнять действие по-умолчанию. Действие по-умолчанию, можно посмотреть в загляните в /etc/fail2ban/jail.conf
в секции [DEFAULT]
, параметр banaction
.
В моем случае, действие по-умолчанию — это iptables-multiport
(предопределено в /etc/fail2ban/action.d/iptables-multiport.conf
). Это действие блокирует IP адреса используя iptables
с модулем мультипорт multiport module
.
[stextbox id=’warning’]Любой заданный параметр в конфигурации правила перепишет соответствующий параметр по-умолчанию, определённый файлами настроек fail2ban. И наоборот, любой отсутствующий параметр будет взят из значения по-умолчанию, определённый в секции [DEFAULT]
.[/stextbox]
После включения правил, необходимо перезапустить fail2ban для загрузки правил:
service fail2ban restart
Проверка и управления статусами и банами Fail2ban
После активации правил jails
, можно просматривать текущее состояние их, а так же управлять банами в них, при помощи fail2ban-client
.
Чтобы посмотреть список активных правил jails
:
fail2ban-client status (прим. вывода) Status |- Number of jail: 6 `- Jail list: apache, apache-noscript, apache-modsecurity, apache-overflows, apache-nohome, apache-multiport
Чтобы посмотреть статус определённого правила jail
:
fail2ban-client status [name-of-jail] (прим. вывода) Status for the jail: apache |- filter | |- File list: /var/www/html/log/error.log | |- Currently failed: 0 | `- Total failed: 6 `- action |- Currently banned: 0 | `- IP list: `- Total banned: 1
Для ручного блокировки IP-адреса, в определенном правиле jail
, выполним команду:
fail2ban-client set [name-of-jail] banip [ip-address]
Для разблокировки IP-адреса, в определенном правиле jail
:
fail2ban-client set [name-of-jail] unbanip [ip-address]
Мы рассмотрели как защитить веб-сервер Apache, использую предустановленные правила jail. Но хочу заметить, что сервис fail2ban очень гибок настройке и поэтому в зависимости от типа ваших веб-сервисов и нужд в защите, можно адаптировать существующие правила jail или написать собственные правила jail и фильтры логов.
Обсуждение
Нет комментариев.