Сразу перейду к делу. Пользователями FreePBX 14 замечен крайне серьёзный баг в утилите fail2ban.
Версия fail2ban, на которой замечен баг - 0.8.14-11 и ниже. Проверить можно командой rpm -qa | grep fail2ban
:
fail2ban-fpbx-0.8.14-11.sng7.noarch
Данный баг заключается в том, что после установки чистой FreePBX Distro 14 сервис fail2ban хоть и в активном статусе, однако никаких “тюрем" (jails) он не подгружает и их количество = 0.
Проверить можно командой fail2ban-client status
, если Ваш сервер подвержен багу, то Вы увидите:
[root@merionlab]# fail2ban-client status Status |- Number of jail: 0 `- Jail list:
Это значит, что например, максимальное число попыток ввода пароля для доступа к вэб-интерфейсу FreePBX или попыток регистрации SIP-клиента с неверным паролем - не ограничено, а IP-адрес, с которого приходят эти запросы не блокируется. Естественно, что модуль Intrusion Detection во FreePBX также не будет работать.
"Тюрьмы" или jails - это такие секции в файле /etc/fail2ban/jail.local
, в которых указано, логи какого сервиса необходимо мониторить, чтобы выявлять и блокировать несанкционированные попытки доступа к этому сервису, а также такие параметры как время блокировки, максимальное число попыток и действие, которое необходимо предпринять в случае выявления.
Например, вот секция [asterisk-iptables]
:
[asterisk-iptables] enabled = true filter = asterisk-security action = iptables-allports[name=SIP, protocol=all] sendmail[name=SIP, dest=none@yourpbx.com, sender=none@yourpbx.com] logpath = /var/log/asterisk/fail2ban maxretry = 5 bantime = 1800
В ней указано, что нужно мониторить лог /var/log/asterisk/fail2ban
, искать в нём 5 попыток неуспешной регистрации (например SIP телефон пытается зарегистрироваться с неверным паролем) и банить IP-адрес на 30 минут. Ну и ещё можно отправку по email настроить о данном факте.
По умолчанию, в файле /etc/fail2ban/jail.local
должно быть 7 таких секций - [apache-tcpwrapper], [recidive], [ssh-iptables], [apache-badbots], [pbx-gui], [asterisk-iptables], [vsftpd-iptables]. В каждой указан путь к логам соответствующего сервиса.
Решение
Итак, есть два решения данной проблемы. Первое – остановить сервис fail2ban командой systemctl stop fail2ban
и внести следующие изменения в файл /usr/lib/systemd/system/fail2ban.service
:
[Unit] Description=Fail2Ban Service After=httpd.service [Service] Type=forking ExecStartPre=/bin/mkdir -p /var/run/fail2ban ExecStart=/usr/bin/fail2ban-client -x start ExecStop=/usr/bin/fail2ban-client stop ExecReload=/usr/bin/fail2ban-client reload PIDFile=/var/run/fail2ban/fail2ban.pid Restart=always [Install] WantedBy=default.target
Затем запустить сервсис fail2ban командой systemctl start fail2ban
и сделать так, чтобы сервис включался после ребута автоматически systemctl enable fail2ban
.
И вторая – обновить сам fail2ban. Для этого вводим следующие команды:
yum install sangoma-devel yum update
Проверяем версию fail2ban после обновления - rpm -qa | grep fail2ban
:
fail2ban-fpbx-0.8.14-75.sng7.noarch
После данных действий, команда fail2ban-client status
должна отобразить верное количество jails и fail2ban с Intrusion Detection должны вновь встать на стражу Вашего сервера:
[root@merionlab]# fail2ban-client status Status |- Number of jail: 7 `- Jail list: apache-tcpwrapper, recidive, ssh-iptables, apache-badbots, pbx-gui, asterisk-iptables, vsftpd-iptables
Чтобы случайно не заблокировать свой адрес и игнорировать любые неуспешные попытки доступа к серверу с адресов, находящихся в локальной сети или других доверенных адресов, внесите их или всю доверенную подсеть в секцию[DEFAULT]
в полеignoreip
в том же файле/etc/fail2ban/jail.local