Меню
Контакты
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Защита SIP-порта с помощью Mikrotik

 07 Фев 2017    MikroTik, О настройках и установке оборудования производителя Mikrotik, Scripts

Иногда нужно выбросить наружу SIP-порт для клиентов, которые подключаются к вашей IP-телефонии. Открытый SIP-порт, особенно стандартный (5060 UDP), очень уязвим и рано или поздно вас начнут взламывать, подбирать пароли и т.д. Это чревато не только возможностью угадать пароль, но и нагрузкой на ваш сервер телефонии и интернет-канал. Есть несколько рекомендаций для защиты.

Общая рекомендация - не использовать стандартный порт. В дополнение, на стандарнтый порт можно повесить ловушку:

/ip firewall filter add action=add-src-to-address-list address-list=sip_drop address-list-timeout=30m chain=input comment=sip_add_list dst-port=5060 in-interface=ether1-wan log=yes log-prefix=Sip-Attack protocol=udp add action=drop chain=input comment=sip_list_drop in-interface=ether1-wan src-address-list=sip_drop

Когда кто-то попытается подключиться на стандартный порт, который вы не используете - он попадает в блэк-лист на 30 минут. Простая, но эффективная уловка.

Иногда, стандартный порт менять нельзя - это связанно с тем ,что некоторые sip-клиенты не хотят или не могут работать с другим портом (например, ограничение бесплатной версии) - тогда возможно выбросить наружу порт, но ограничить его проброс по подсетям.

/ip firewall nat add action=dst-nat chain=dstnat comment="SIP" disabled=no dst-port=5060 in-interface=ether1-wan protocol=udp src-address-list=udalennie_telefoni to-addresses=10.0.0.150 to-ports=5060

Как видим правило действует только для внешних IP, которые занесенны в адрес-лист udalennie_telefoni. Но и это тоже не всегда возможно - иногда внешние клиенты просто не имеют реального статического адреса. В таком случае можно ограничить действие правила по всей подсети того провайдера, IP-адреса которого использует клиент.

Довольно часто клиенты хотят пользоваться SIP-телефонией когда находятся в командировках - тут помогает поднятый VPN (например с Android-телефона). А уже внутри VPN клиент без проблем может подключиться к вашему серверу телефонии. В таком случае даже пробрасывать порт не нужно. Хотя сам по себе метод с VPN с Android довольно не удобный. Так же, для подключения с таких мест можно пользоваться методом Port Knocking. Когда определенной последовательностью пакетов на роутер вы открываете порт для вашего IP. Сейчас довольно много программ (в т.ч. и для Android), которые позволяют это реализовать.

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

/ip firewall filter add chain=forward in-interface=ether1-wan src-address-list="SIP Hacker" action=drop
/ip firewall filter add chain=forward protocol=udp dst-port=5060 connection-state=new src-address-list="SIP Trial" in-interface=ether1-wan action=add-src-to-address-list address-list="SIP Hacker" address-list-timeout=1d
/ip firewall filter add chain=forward src-address=0.0.0.0/0 protocol=udp dst-port=5060 in-interface=ether1-wan connection-state=new action=add-src-to-address-list address-list="SIP Trial" address-list-timeout=00:00:15

Данный метод основан на том, что ваш легитимный клиент при подключении передает логин и пароль и подключение происходит успешно. Если же злоумышленник пытается подобрать ваш пароль, то он будет пробовать подключатся снова и снова с новыми данными - тут то мы его и ловим. Если в течении 15 секунд sip-клиент не успел зарегистрироваться и отправил неверные данные входа - при следующем обращении он банится на 1 день. Регистрация происходит не дольше 2 секунд, поэтому все "ваши клиенты" будут зарегистрированы без проблем и смогут спокойно пользоваться телефонией. Данный метод может плохо отрабатывать, когда с одного IP будет регистрироваться большое количество устройств (например 10-20 телефонов). Но, вполне логично, если есть такой удаленный обьект смысла использовать данный метод нет, проще прокинуть VPN.

В дополнение хочу сказать, начиная с версии 6.38.1 ввели таймаут для sip-соединений:

*) winbox - allow to specify "sip-timeout" under ip firewall service-ports;

Теперь сервис SIP ALG (IP > Firewall Service Ports), у которого стоял таймаут для sip-соединений 60 минут, можно не отключать. Это была общая рекомендация, что-бы не возникало проблем в работе удаленных подключений к серверу телефонии. Например, отвал интернета, переключение на резервный канал приводили к зависанию соединения на 1 час, и телефон не мог регистрироваться. Теперь возможно поставить таймаут хоть 1 минуту, что существенно скажется на работе этой функции в положительную сторону.

Используемый материал