В сегодняшней статье расскажем о первичной защите Вашего Asterisk’a - Fail2ban. На самом деле Fail2ban - это стандартный функционал любой операционной системы на базе Linux, который сканирует лог-файлы и блокирует подозрительные IP –адреса.
На самом деле Fail2ban - это стандартный функционал любой операционной системы на базе Linux, который сканирует лог-файлы и блокирует подозрительные IP –адреса.
Fail2ban - это система предотвращения вторжений (Intrusion Prevention System), которая защищает сервер от атак типа Brute-force (Полный перебор). Написанный на языке программирования Python, Fail2ban может работать поверх систем POSIX, которые оперируют локально установленным брандмауэром (Firewall) или системой контроля пакетов, таких как TCP Wrapper или IPTABLES
Стоит заметить, что Fail2ban является лишь системой предотвращения вторжений, но не в коем случае не системой обнаружения вторжений или анти-хакерским инструментом
Когда речь идёт о работе Fail2ban с Asterisk, необходимо рассказать о роли IPTABLES в данном взаимодействии.
IPTABLES - это административный инструмент оболочки Linux, который предназначается для управления фильтрацией IP адресов и NAT. IPTABLES используется проверки таблиц правил фильтрации пакетов IP в ядре Linux . В IPTABLES могут быть определены несколько различных таблиц. Каждая таблица содержит ряд встроенных цепочек (chains) и может также содержать цепочки, определяемые пользователем. Каждая цепь представляет собой список правил, которым могут совпадать пакеты. Каждое правило определяет, что делать с пакетом, который имеет соответствие правилам.
Для проверки IPTABLES, необходимо ввести следующую команду с правами рута:
# iptables –L Эта команда отобразит список цепочек (chains), которые называются INPUT, FORWARD и OUTPUT, в самом низу ещё есть кастомные цепи, созданные пользователем. Дефолтные IPTABLES выглядят примерно следующим образом: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
По умолчанию , IPTABLES разрешают весь трафик. Когда IPTABLES работает в паре с Fail2ban, то трафик не будет блокироваться, пока Fail2ban не создаст запрещающих правил. Fail2ban , по умолчанию, вставляет правила в верхней части цепи, поэтому они имеют приоритет над правилами, настроенными в IPTABLES пользователем. Это хорошо, потому что можно сначала разрешить весь SIP трафик, а затем Fail2ban будет блокировать отдельных хостов, которые совершили попытку нападения, до тех пор, пока они не будут разрешены этим правилом снова.
Стандартная настройка Fail2ban приведена ниже.
Данные изменения, вносятся в файл /etc/fail2ban/jail.conf
[asterisk-iptables] enabled = true filter = asterisk action = iptables-allports[name=ASTERISK, protocol=all] sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@merionet.ru] logpath = /var/log/asterisk/security maxretry = 5 bantime = 259200
А теперь расшифруем, что же означает данная запись. Это фильтр, который на 3 дня банит любой IP-адрес, который 5 раз пытался неудачно получить доступ к Asterisk, а потом отправляет e-mail, уведомляющий о данном факте.