Настройка fail2ban для защиты Asterisk от SIP-атак
АйТи Фреш
Информационная безопасность

Как защитить Asterisk от SIP-атак с помощью fail2ban

Автор: , директор ООО «АйТи-Фреш» · · ~14 мин чтения
Настройка fail2ban для защиты Asterisk от SIP-атак
Иллюстрация к статье «Как защитить Asterisk от SIP-атак с помощью fail2ban».

SIP-атаки — это не миф. Они происходят, перегружают серверы и приводят к финансовым потерям. Fail2ban — не просто инструмент, а необходимость. Настройка — не сложнее, чем включить свет. Но если не сделать — ждите срывов и отключений.

Почему SIP-атаки — это не миф, а реальная угроза

SIP-атаки — это не редкость. Они происходят повсеместно, особенно на серверах, которые открыты для внешнего трафика. Атаки на регистрацию (SIP Scan) и подбор паролей (bruteforce) — стандартные методы злоумышленников. Цель — не просто взломать систему, а использовать её для звонков в дорогостоящие номера. Это называется толл-фрауд. В среднем, на каждый атакующий IP-адрес приходится от 10 до 50 неудачных попыток регистрации в час. Если их не блокировать, сервер начинает тратить ресурсы на обработку запросов, которые не приносят никакой пользы.

Конечно, можно ограничить доступ к портам 5060/5061 с помощью iptables. Но это не решает проблему полностью. Надёжная защита — это не только фильтрация, но и реакция на подозрительное поведение. Fail2ban — именно такой инструмент. Он анализирует логи, определяет подозрительные IP-адреса и блокирует их. В результате — снижение нагрузки, повышение стабильности и защита от финансовых потерь.

SIP-атаки — это не просто техническая проблема. Это финансовая. Если злоумышленник использует вашу систему для звонков в страны с высокой тарифной ставкой, вы платите за это. А вы не хотите, чтобы кто-то использовал вашу инфраструктуру бесплатно. Это как если бы кто-то воровал бензин с вашей машины. Вы не хотите, чтобы это происходило. И вы не хотите, чтобы это было «случайно».

Если вы не видите атак — это не значит, что их нет. Просто они не попали в ваше поле зрения. Атаки могут быть скрыты за маской доверенных IP-адресов, или использовать методы, которые не сразу выявляются. Например, злоумышленник может делать 1–2 попытки в день с разных IP-адресов, чтобы не вызывать подозрений. Но если их сложить — это уже десятки неудачных попыток. И это не «мало», это «много», если учесть, что каждая попытка — это нагрузка на сервер.

Атаки на SIP‑серверы — это обычная угроза для любой VoIP‑инфраструктуры. Это общая проблема. Системы, которые не используют защиту, становятся мишенью. А те, кто настраивает fail2ban — уже на шаг впереди. Это не про «лучше», это про «не сломалось». И если вы не хотите, чтобы сломалось — делайте это сейчас.

Если вы не видите атак — это не значит, что их нет. Просто они не попали в ваше поле зрения.

Как работает fail2ban и почему он подходит для Asterisk

Fail2ban — это система мониторинга логов, которая автоматически блокирует IP-адреса, если обнаруживает подозрительные действия. Он работает на основе фильтров и jail-конфигураций. Для Asterisk он может быть настроен на анализ логов, где фиксируются неудачные попытки регистрации. Например, если IP-адрес делает более двух неудачных попыток в течение 10 минут, fail2ban автоматически добавляет его в черный список через iptables. Это не только снижает нагрузку, но и делает систему менее привлекательной для атакующих.

Fail2ban не требует сложных настроек. Он уже включает готовые шаблоны для многих сервисов, включая Asterisk. В частности, в его конфигурации есть специальные правила для защиты от атак на SIP-серверы. Эти правила могут быть настроены через файлы /etc/fail2ban/jail.local и /etc/fail2ban/filter.d/asterisk.conf. Fail2ban не только блокирует IP‑адреса, но и анализирует их поведение, реагируя на характерные для атак паттерны.

Один из главных плюсов fail2ban — это автоматизация. Вы не должны каждый день проверять логи. Он делает это за вас. Если в логах появляется строка Failed registration from <HOST>, fail2ban считает это подозрительным и реагирует. Это не «проверка», это «реакция». И она происходит в реальном времени. Это значит, что злоумышленник не успеет сделать больше, чем две неудачные попытки, и уже будет заблокирован.

Fail2ban не только блокирует IP-адреса. Он также может отправлять уведомления. Например, через email или SMS. Это полезно, если вы хотите быть в курсе, кто пытается проникнуть в систему. Это не «для любопытства», это «для контроля». И если вы не хотите, чтобы кто-то знал, что вы настроили защиту — это не важно. Главное — чтобы вы знали.

Fail2ban — это не «включил и забыл». Он требует настройки. Но это не сложнее, чем настроить почтовый сервер. Если вы настраивали email, вы уже прошли большую часть пути. Настройка — это вопрос времени, а не знаний. И если вы не хотите тратить время — мы сделаем это за вас. Это не «мы делаем всё», это «мы делаем то, что нужно, чтобы вы не делали».

Если вы не используете fail2ban, вы просто даете злоумышленникам возможность работать без ограничений.

Настройка fail2ban для защиты Asterisk: пошаговый процесс

Первое, что нужно сделать — установить fail2ban. На большинстве дистрибутивов Linux это делается через пакетный менеджер. Например, на Ubuntu или Debian: apt install fail2ban. После установки необходимо настроить конфигурацию. Asterisk работает с двумя ключевыми конфигурационными файлами: sip.conf и pjsip.conf. Именно в них задаются параметры SIP-линий. Поэтому логи, которые анализирует fail2ban, должны быть связаны с этими файлами. В частности, fail2ban ищет строки вида Failed registration from или Authentication failed.

Далее нужно создать или изменить файл /etc/fail2ban/jail.local. В нём прописываются правила для конкретных сервисов. Для Asterisk можно добавить секцию, которая будет отслеживать логи Asterisk. Например, asterisk — это имя jail, которое будет использоваться. В этом же файле указывается, сколько неудачных попыток нужно для блокировки, как долго IP будет заблокирован и какие действия выполнять. Часто используются параметры: maxretry = 2, findtime = 600, bantime = 86400. Это означает: после двух неудачных попыток за 10 минут IP блокируется на сутки.

После настройки jail.local необходимо создать или настроить фильтр. Фильтр — это шаблон, который определяет, какие строки в логах считаются подозрительными. Для Asterisk нужно создать файл /etc/fail2ban/filter.d/asterisk.conf. В нём прописываются регулярные выражения, которые ищут строки с неудачной регистрацией. Например, ^.*Failed registration from <HOST>.*$. Это означает: если в логе есть строка, содержащая Failed registration from, то IP-адрес из этой строки считается подозрительным.

После создания фильтра нужно перезапустить fail2ban: systemctl restart fail2ban. После этого можно проверить, как работает система. Например, попробовать звонок с поддельного IP, который не проходит аутентификацию. Если fail2ban работает — этот IP появится в списке заблокированных. Также можно использовать команду fail2ban-client status asterisk для проверки статуса.

Настройка — это не «поставил и забыл». Это процесс, который требует внимания. Но если вы не хотите тратить время на настройку — мы сделаем это за вас. Мы настроим все параметры, проверим работу и подготовим документацию. Это не «мы делаем всё», это «мы делаем то, что нужно, чтобы вы не делали».

Если вы не настроили фильтр для логов Asterisk — fail2ban не будет работать. Это не «почему-то не работает», это «не настроено».
Настройка fail2ban для защиты Asterisk: пошаговый процесс: Установка fail2ban через пакетный менеджер
Установка fail2ban через пакетный менеджер

Настройка фильтров и проверка работоспособности

Фильтр — это шаблон, который определяет, какие строки в логах считаются подозрительными. Для Asterisk нужно создать файл /etc/fail2ban/filter.d/asterisk.conf. В нём прописываются регулярные выражения, которые ищут строки с неудачной регистрацией. Например, ^.*Failed registration from <HOST>.*$. Это означает: если в логе есть строка, содержащая Failed registration from, то IP-адрес из этой строки считается подозрительным. После настройки фильтра нужно перезапустить fail2ban: systemctl restart fail2ban.

Проверка — обязательный этап. Нельзя полагаться на то, что настройки сделаны правильно. Нужно убедиться, что fail2ban реагирует на неудачные попытки. Можно использовать команду fail2ban-client status asterisk для проверки статуса. Также полезно посмотреть логи: /var/log/fail2ban.log. В них должны быть записи о блокировке IP. Если их нет — значит, что-то пошло не так. Чаще всего причина в неправильном пути к логам или неверно написанном регулярном выражении.

Если fail2ban не блокирует IP, проверьте, правильно ли настроен фильтр. Убедитесь, что путь к логам указан верно. Например, если логи хранятся в /var/log/asterisk/messages, а в конфигурации указан путь к /var/log/asterisk/log, то fail2ban не найдёт логи. Также проверьте, что логи содержат строки, которые ищет фильтр. Если в логах нет строки Failed registration from, то фильтр не сработает.

Если вы не уверены, что настроили всё правильно, можно использовать тестовые данные. Например, вручную добавить строку в лог, которая соответствует фильтру. Например, Failed registration from 192.168.1.100. После этого перезапустите fail2ban и проверьте, заблокирован ли IP. Это не «проверка», это «доказательство». И если fail2ban не блокирует IP — значит, что-то не так.

Настройка фильтра — это не «настройка», это «проверка». Проверка — это часть процесса. Если вы не проверяете, вы не знаете, работает ли система. И если вы не знаете, работает ли система — вы не можете быть уверены в её безопасности.

Если fail2ban не блокирует IP — это не «проблема», это «ошибка». И она решается.
Настройка фильтров и проверка работоспособности: Создание фильтра для логов Asterisk
Создание фильтра для логов Asterisk

Типовые ошибки и как их избежать

Одна из самых частых ошибок — неправильный путь к логам. Если в конфигурации указан путь к логам, который не существует, fail2ban не будет работать. Например, если логи хранятся в /var/log/asterisk/messages, а в конфигурации указан путь к /var/log/asterisk/log, то fail2ban не найдёт логи. Это не «ошибка», это «неудача». И она легко исправляется.

Другая распространённая ошибка — неверно написанный регулярный выражение. Если в фильтре указано ^.*Failed registration from <HOST>.*$, но в логах строка выглядит как Failed registration from 192.168.1.100, то регулярное выражение не сработает. Это не «не работает», это «не ищет». Исправить можно, изменив выражение на ^.*Failed registration from <HOST>.*$.

Третья ошибка — отсутствие перезапуска fail2ban после изменений. Если вы изменили конфигурацию, но не перезапустили сервис, изменения не вступят в силу. Это не «не работает», это «не применено». Перезапуск — это не «опция», это «обязательно».

Четвёртая ошибка — использование недоступных IP-адресов. Например, если в конфигурации указано, что IP-адреса блокируются на 24 часа, но вы используете IP-адрес, который уже заблокирован, то fail2ban может не сработать. Это не «ошибка», это «конфликт». Решение — проверить, не заблокирован ли IP-адрес.

Пятая ошибка — отсутствие мониторинга. Если вы не проверяете, работает ли система, вы не знаете, что происходит. Это не «не важно», это «опасно». Проверка — это часть процесса. Без неё — вы находитесь в темноте.

Если вы не проверяете, работает ли система — вы не можете быть уверены в её безопасности.

Как проверить, что fail2ban работает

Проверка — это обязательный этап. Нельзя полагаться на то, что настройки сделаны правильно. Нужно убедиться, что fail2ban реагирует на неудачные попытки. Можно использовать команду fail2ban-client status asterisk для проверки статуса. В ней указано, сколько IP-адресов заблокировано, и когда они будут разблокированы. Также полезно посмотреть логи: /var/log/fail2ban.log. В них должны быть записи о блокировке IP.

Если вы не видите записи в логах, проверьте, правильно ли настроен фильтр. Убедитесь, что путь к логам указан верно. Например, если логи хранятся в /var/log/asterisk/messages, а в конфигурации указан путь к /var/log/asterisk/log, то fail2ban не найдёт логи. Также проверьте, что логи содержат строки, которые ищет фильтр. Если в логах нет строки Failed registration from, то фильтр не сработает.

Для проверки можно использовать тестовые данные. Например, вручную добавить строку в лог, которая соответствует фильтру. Например, Failed registration from 192.168.1.100. После этого перезапустите fail2ban и проверьте, заблокирован ли IP. Это не «проверка», это «доказательство». И если fail2ban не блокирует IP — значит, что-то не так.

Проверка — это не «опция», это «обязательно». Без неё — вы не знаете, работает ли система. И если вы не знаете, работает ли система — вы не можете быть уверены в её безопасности. Проверка — это часть процесса. Без неё — вы находитесь в темноте.

Если вы не проверяете, работает ли система — вы не можете быть уверены в её безопасности.

Что делать, если уже сломалось

Если вы уже видите в логах неудачные попытки регистрации, это значит, что атака уже идёт. Не паникуйте. Это не «конец света», это «начало». Первое, что нужно сделать — настроить fail2ban. Если вы не настроили его — сделайте это сейчас. Это не «поздно», это «сейчас». Второе — проверить, что логи содержат нужные строки. Если в логах нет строки Failed registration from, то фильтр не сработает. Это не «ошибка», это «не настроено».

Третье — проверить, правильно ли настроен путь к логам. Если логи хранятся в /var/log/asterisk/messages, а в конфигурации указан путь к /var/log/asterisk/log, то fail2ban не найдёт логи. Это не «ошибка», это «неудача». И она легко исправляется.

Четвёртое — проверить, что логи содержат строки, которые ищет фильтр. Если в логах нет строки Failed registration from, то фильтр не сработает. Это не «ошибка», это «не ищет». Исправить можно, изменив выражение на ^.*Failed registration from <HOST>.*$.

Пятый — перезапустить fail2ban. Если вы изменили конфигурацию, но не перезапустили сервис, изменения не вступят в силу. Это не «не работает», это «не применено». Перезапуск — это не «опция», это «обязательно».

Шестое — проверить, что IP-адреса блокируются. Если вы не видите IP-адреса в списке заблокированных, проверьте, что логи содержат нужные строки. Если в логах нет строки Failed registration from, то фильтр не сработает. Это не «ошибка», это «не ищет».

Если вы не настроили fail2ban — сделайте это сейчас. Это не «поздно», это «сейчас».

Частые вопросы

Как часто fail2ban блокирует IP-адреса?

Количество неудачных попыток и интервал определяются в настройках jail. Обычно используется 2 неудачные попытки за 10 минут, после которого IP блокируется на 24 часа.

Что делать, если fail2ban не блокирует IP?

Проверьте, правильно ли настроен фильтр, правильный ли путь к логам, и работает ли fail2ban. Также убедитесь, что логи содержат строки, которые ищет фильтр.

Можно ли настроить fail2ban для защиты от атак на SSH?

Да. Fail2ban поддерживает настройку для SSH через файлы /etc/fail2ban/jail.local и /etc/fail2ban/filter.d/sshd.conf. Это отдельная конфигурация, но принцип тот же — анализ логов и блокировка подозрительных IP.

Что делать, если заблокированный IP нужен для работы?

Можно добавить IP в белый список через `fail2ban-client set asterisk unban <IP>`. Также можно настроить исключения в конфигурации.

Как проверить, работает ли fail2ban?

Проверьте статус через `fail2ban-client status asterisk`, посмотрите логи `/var/log/fail2ban.log`, и используйте тестовые данные для проверки.

Что делать, если уже сломалось?

Настройте fail2ban, проверьте путь к логам, регулярное выражение, перезапустите сервис, и убедитесь, что IP-адреса блокируются.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи