пятница, 3 февраля 2017 г.

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

  Иногда нужно выбросить наружу 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 минуту, что существенно скажется на работе этой функции в положительную сторону.


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

Подписаться на новые статьи.

Комментариев нет:

Отправить комментарий