Как защитить 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 — уже на шаг впереди. Это не про «лучше», это про «не сломалось». И если вы не хотите, чтобы сломалось — делайте это сейчас.
- Атаки на регистрацию (SIP Scan)
- Подбор паролей (bruteforce)
- Толл-фрауд (неоправданные звонки)
- Перегрузка ресурсов сервера
Как работает 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, вы уже прошли большую часть пути. Настройка — это вопрос времени, а не знаний. И если вы не хотите тратить время — мы сделаем это за вас. Это не «мы делаем всё», это «мы делаем то, что нужно, чтобы вы не делали».
- Мониторинг логов на предмет неудачных попыток регистрации
- Автоматическая блокировка подозрительных IP-адресов
- Интеграция с iptables для управления сетевыми правилами
- Поддержка настройки через конфигурационные файлы
Настройка 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 для проверки статуса.
Настройка — это не «поставил и забыл». Это процесс, который требует внимания. Но если вы не хотите тратить время на настройку — мы сделаем это за вас. Мы настроим все параметры, проверим работу и подготовим документацию. Это не «мы делаем всё», это «мы делаем то, что нужно, чтобы вы не делали».
- Установка fail2ban через пакетный менеджер
- Настройка конфигурации через jail.local
- Создание фильтра для анализа логов Asterisk
- Настройка параметров блокировки (maxretry, findtime, bantime)
- Проверка работы через команды и логи
Настройка фильтров и проверка работоспособности
Фильтр — это шаблон, который определяет, какие строки в логах считаются подозрительными. Для 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 — значит, что-то не так.
Настройка фильтра — это не «настройка», это «проверка». Проверка — это часть процесса. Если вы не проверяете, вы не знаете, работает ли система. И если вы не знаете, работает ли система — вы не можете быть уверены в её безопасности.
- Создание фильтра для логов Asterisk
- Настройка регулярных выражений для поиска неудачных попыток
- Перезапуск fail2ban после изменений
- Проверка статуса и логов
- Использование тестовых данных для проверки
Типовые ошибки и как их избежать
Одна из самых частых ошибок — неправильный путь к логам. Если в конфигурации указан путь к логам, который не существует, 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
- Использование недоступных 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-client
- Просмотр логов /var/log/fail2ban.log
- Использование тестовых данных для проверки
- Проверка, что логи содержат нужные строки
- Перезапуск fail2ban после изменений
Что делать, если уже сломалось
Если вы уже видите в логах неудачные попытки регистрации, это значит, что атака уже идёт. Не паникуйте. Это не «конец света», это «начало». Первое, что нужно сделать — настроить 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-адресов
Частые вопросы
Как часто 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-адреса блокируются.
Источники
- GitHub — Asterisk AMI и iptables — https://github.com/topics/asterisk-ami
- LinuxMind — настройка безопасности в FreePBX — https://linuxmind.dev/2025/09/04/complete-os-guide-freepbx-formerly-asterisknow-how-it-works-orientation-and-curiosities
- AsteriskService — настройка VoIP-систем — https://www.asteriskservice.com/blog/how-to-set-up-voip-system-with-asterisk/


