Повышение безопасности FreePBX-14

Безопасность IP-PBX

Цель данного материала обобщение практического опыта корпоративного развертывания IP-АТС FreePBX-14 и создание перечня доступных методов повышения информационной безопасности. Материал не касается аспектов использования IP-АТС у операторов связи.

Представленные ниже методы разделены на два уровня: базовый и расширенный. Базовый уровень безопасности должен быть реализован в системе любого масштаба. Применение методов из расширенного списка зависит от условий конкретного применения.

Базовый уровень безопасности

  1. Ограниченный доступ к админке FreePBX и ssh;
  2. Сложные пароли (для админки, ssh и SIP аккаунтов);
  3. Различные пароли для всех SIP-аккаунтов;
  4. Ограничение доступа к админкам клиентских устройств (IP-телефоны, шлюзы);
  5. Отсутствие открытых портов серверных приложений для внешних подключений;
  6. Выделение для телефонии отдельной подсети;
  7. Использование списков доступа (ACL) на уровне протокола PJSIP (SIP);
  8. Отключение анонимных вызовов;
  9. Функционирование fail2ban и журналов (логов) важных системных служб;
  10. Использование разных контекстов для различных групп абонентов.

 

Расширенный уровень безопасности

  1. Изменение стандартных портов серверных служб;
  2. Отключение админок клиентских устройств, изменение стандартных SIP портов;
  3. Привязка SIP аккаунтов к IP адресу;
  4. Изменение UserAgent для FreePBX;
  5. Установка временных ограничений на международные вызовы;
  6. Ограниченное использование программных телефонов;
  7. Другие дополнительные меры.

 

Базовый уровень безопасности

Предполагает, что выполнение предложенных мер необходимо на IP-АТС любого уровня.

 

1. Ограниченный доступ к админке FreePBX и ssh

Для локальной сети необходимо запретить доступ из любых подсетей кроме IP-адресов администратора. Решается с помощью пакетных фильтров на сетевом оборудовании или используется встроенный firewall (iptables. firewalld).

Для удаленных подключений недопустимо открывать (пробрасывать) порты с публичных адресов в локальную сеть. Для этих целей надо использовать VPN, а в правилах указать только те приложения, которые нужны для удаленного подключения (Например, TCP 443, TCP 22).

Не рекомендуется развертывать IP-АТС на универсальном компьютере с функциями интернет-роутера, http прокси, сервера электронной почты. Это отрицательно сказывается на надежности IT-инфраструктуры в целом. Если так получилось, что IP-АТС размещена на компьютере с несколькими сетевыми картами одна из которых Интернет-подключение, то необходимо тщательно проверить привязки (bindings) приложений к интерфейсам. По умолчанию приложения привязаны ко всем интерфейсам компьютера. Для повышения уровня безопасности необходимо отключить привязку приложений от внешнего (публичного) интерфейса.

Изменение привязки SIP к сетевым интерфейсам

Привязка http apache

В идеале сетевые сканеры не должны "видеть" на публичном IP Вашей АТС ни одного открытого порта. Кроме того, на универсальных системах требуется тонкая настройка встроенного файервола. 

 

2. Сложные пароли (для админки, ssh и SIP-аккаунтов)

Не следует забывать указывать сложные пароли в системе. Для админки (web-интерфейс администратора) и ssh длина пароля не менее 9 символов из цифр, спецсимволов и букв нижнего и верхнего регистров. Для SIP-аккаунтов FreePBX сама генерирует сильные пароли (например, 94dd22615f8f60e7f812893fbde0b887). Не следует менять их на более простые. Для аутентификации ssh удобно использовать ключи. Например, Настройка аутентификации по ключу в PuTTY.

Сильный пароль SIP-аккаунта

После смены администратора необходимо выполнить комплексную смену паролей в системе.

 

3. Различные пароли для всех SIP-аккаунтов

Для каждого SIP-аккаунта надо создавать неповторяющиеся пароли. Если создан сложный пароль, но он общий для всех расширений, то есть риск, что злоумышленник, получив пароль от заблокированного аккаунта сможет легко воспользоваться другим рабочим аккаунтом с таким же паролем. Необходимо помнить о предыдущем пункте. Если пароли разные, но слабые, например, номер расширения и пароль равны,  то это снижает уровень безопасности.

 

4. Ограничение доступа к админкам клиентских устройств (IP-телефоны, шлюзы)

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

Ограничить доступ к клиентским устройствам можно установив сложные неповторяющиеся пароли, разместив их в подсети, недоступной для пользователей компьютеров. Радикальным решением будет полное отключение админки клиентских устройств. В данном случае устройства будут конфигурироваться посредством функции auto provisioning (если устройство поддерживает).

 

5. Отсутствие открытых портов серверных приложений для внешних подключений

Недопустимо делать трансляцию портов серверных приложений (http, ftp, ssh, sip, rdp…) с публичных IP-адресов в локальную сеть. Для предоставления внешнего доступа удаленным клиентам необходимо использовать VPN. Сетевые устройства, обеспечивающие функционал виртуальных частных сетей (Virtual Private Network), стоят сегодня недорого.

 

6. Выделение для телефонии отдельной подсети

Оптимальным решением для повышения безопасности корпоративной телефонии будет выделение отдельной подсети для оборудования VoIP, а доступ из других локальных подсетей должен регламентироваться правилами брандмауэра. Идея в том, что сеть VoIP скрыта от несанкционированного персонала, и даже если злоумышленник получил данные SIP-аккаунтов, то вряд ли сможет ей воспользоваться.

Различные подсети могут существовать даже в одной физической кабельной проводке при условии, что сетевое оборудование (коммутаторы и/или маршрутизаторы) поддерживают тегированные VLAN.

 

7. Использование списков доступа (ACL) на уровне протокола PJSIP (SIP)

Не следует игнорировать стандартные возможности протоколов управления сессиями по отсеиванию ненужного трафика. Вы можете запрещать и разрешать доступ с IP-адресов указывая маски. Такая возможность называется access control list (ACL). Например, корпоративная сеть содержит две подсети с оборудованием VoIP 192.168.199.0/24 и 192.168.200.0/24. Для того, чтобы никто за пределами этих подсетей не мог подключиться к корпоративной телефонии следует сначала запретить все подключения, а затем разрешить нужные.

Создание ACL возможно как на уровне учетных записей SIP, так и для системы в целом. Если адресация клиентских устройств систематизирована, то проще применять общие правила. Если адресация выборочная или следует привязать конкретный SIP-аккаунт к IP-адресу, то следует использовать ACL на уровне учетных записей. Для протокола SIP (модуль chan_sip) все работает из web-интерфейса FreePBX-14. Для протокола PJSIP (модуль chan_pjsip) надо изменять конфигурационные файлы. Для указанного выше примера необходимо в файл pjsip_custom.conf добавить строки:

[acl]
type=acl
deny=0.0.0.0/0.0.0.0
permit=192.168.199.0/255.255.255.0
permit=192.168.200.0/255.255.255.0

 

8. Отключение анонимных вызовов

По умолчанию для FreePBX-14 запрещены входящие анонимные SIP-звонки, но разрешены SIP-вызовы без аутентификации. Из подсказки следует, что это сделано в целях отладки. Для повышения уровня безопасности надо запретить SIP-вызовы без аутентификации и проверить, что анонимные звонки тоже выключены.

Отключение анонимных вызовов

 

9. Функционирование fail2ban и журналов (логов) важных системных служб

По умолчанию для FreePBX-14 включен функционал fail2ban. Это отличный инструмент защиты от попыток несанкционированного доступа. Служба fail2ban анализирует логи, и действует в соответствии со своей конфигурацией. Например, после нескольких неудачных попыток авторизации за короткий срок по ssh, http или pjsip источник проблем блокируется. Для этого вносится соответствующая временная запись в iptables.

Экран блокировок fail2ban

Для неопытных администраторов велик соблазн отключить эту службу, когда что-то не работает, но этого делать не следует. Лучше изучить таблицы блокировки, что является источником проблем. В случае незапланированной блокировки лучше удалить запись из iptables, но не выключать всю службу. Fail2ban очень гибкий инструмент для настройки. Конфигурационные файлы расположены в папке /etc/fail2ban.

 

10. Использование разных контекстов для различных групп абонентов

Для повышения уровня безопасности следует разделить абонентов на несколько групп. Наверняка не всем абонентам нужно использовать международные и междугородние звонки. Более того, не всем нужны городские и мобильные, а достаточно только внутренних вызовов. Можно разделить абонентов на группы и поместить их в соответствующий контекст. Тогда даже если злоумышленник получит доступ к SIP-аккаунту есть вероятность что, у взломанного аккаунта не будет доступа к дорогим звонкам.

Реализовать это удобнее с помощью бесплатного модуля FreePBX Custom Contexts. Администратору необходимо создать несколько правил маршрутизации исходящего вызова, соответствующих каждой группе абонентов. Затем создать пользовательские контексты в модуле Custom Contexts.

Создание пользовательского контекста

В этих контекстах запретить/разрешить нужные маршруты. И наконец в настройках SIP-аккаунтов сделать привязку к созданным контекстам.

Привязка пользовательского контекста к SIP-аккаунту

 

Расширенный уровень безопасности

Должен включать выполненные пункты базового, но иногда это не представляется возможным и тогда требуются дополнительные меры.

 

1. Изменение стандартных портов серверных служб

Иногда изолировать нежелательных пользователей от подсети VoIP затруднительно, и посторонние могут быть потенциальной угрозой для информационной безопасности. Любой может сканировать сеть в целях обнаружения уязвимостей. Одним из методов противодействия этому изменение стандартных портов серверных приложений. Инструментарий FreePBX и Linux допускают изменение портов приложений. Можно изменить стандартные порты SIP 5060, http 80, ssh 22 на другие значения. Важно что бы новое приложение на новом порту не конфликтовало с другим работающим приложением.

Нестандартное значение порта SIP

 

2. Отключение админок клиентских устройств, изменение стандартных SIP-портов

Отключение web-интерфейса ip-телефонов/VoIP шлюзов и изменение стандартного SIP порта 5060 затрудняет их сканирование для злоумышленников, повышая уровень безопасности. Конфигурирование устройств при отключении web-интерфейса можно выполнять посредством функции auto provisioning. Сейчас большинство производителей VoIP оборудования поддерживает эту функцию. Auto provisioning обеспечивает централизованную доставку конфигурации с сервера на клиентские устройства.

 

3. Привязка SIP-аккаунтов к IP-адресу

Если используются SIP-транки, то оптимальным решением для безопасности будет привязка SIP-аккаунта к публичному IP-адресу. Тогда злоумышленник не сможет воспользоваться Вашим аккаунтом из другой точки. Как правило, SIP-провайдер делает это по запросу клиента бесплатно. Условием решения данной задачи является наличие постоянного публичного IP-адреса. Интернет сервис провайдер может взимать за предоставление постоянного IP дополнительную ежемесячную плату.

 

4. Изменение UserAgent для FreePBX

Когда FreePBX располагается в публичной сети и открыта для сканирования, целесообразно изменить UserAgent. При установлении соединения (INVITE) клиента и сервера служебные пакеты содержат наименование UserAgent, который по умолчанию содержит название и версию вашей IP-АТС. Злоумышленник, получив такую информацию, может изучить ресурсы по известным уязвимостям и найти «ключик» к Вашей АТС раньше, чем Вы успеете устранить проблему.

Оптимальным решением для решения проблемы является изменение строки UserAgent. Целесообразно указать строку другого реального UserAgent. Есть вероятность, что злоумышленник пойдет по ложному пути и будет пытаться ломиться в несуществующую дверь.

Для SIP протокола FreePBX-14 изменить UserAgent не составит труда. Для этого на вкладке Settings > Asterisk SIP Settings надо перейти на вкладку Chan SIP и в разделе Other SIP Settings добавить несколько параметров. Например, если Вы решили для SIP протокола установить UserAgent Cisco-SIPGateway/IOS-12.x, необходимо добавить:

useragent = Cisco-SIPGateway/IOS-12.x
sdpowner = voipadmin
sdpsession = Cisco-SIPGateway/IOS-12.x

Здесь же можно добавить еще одну строку, которая усложнит задачу злоумышленнику:

alwaysauthreject = yes

Для PJSIP, как оказалось во FreePBX-14, UserAgent поменять несколько сложнее. В web-интерфейсе ввести дополнительные строки в конфигурацию нет возможности. При добавлении строк об изменении UserAgent в файл pjsip_custom.conf изменение происходит не так как хотелось бы. На FreePBX Community было предложено решение использовать fwconsole. Более того, утверждалось, что использовать Other SIP Settings – ужасное решение (Интересно, что имел ввиду автор? Если для PJSIP - согласен, если для SIP - нормальное решение). Для правильного решения надо в командной строке Linux ввести:

fwconsole setting SIPUSERAGENT Cisco-SIPGateway/IOS

В этом случае изменяется имя UserAgent, но не номер версии. Номер версии подставляется от FreePBX, а в скобках указывается версия Asterisk. Можно предположить, что Cisco-SIPGateway работает на IOS 14 и загрузчике 13 версии :)

Пользовательский UserAgent

Опытного хакера такой UserAgent не введет в заблуждение. Пока довольствуемся тем, что есть.

 

5. Установка временных ограничений на международные вызовы

Логично предположить, что легальные междугородние и международные звонки с корпоративной АТС выполняются в рабочее время, а взломы и хаки в ночное. В целях повышения уровня безопасности можно ввести в конфигурацию FreePBX временные ограничения на использование дальних исходящих маршрутов. Тогда даже если АТС будет взломана, временные ограничения не позволят обокрасть организацию в нерабочее время. Данная задача решается штатными средствами FreePBX.

 

6. Ограниченное использование программных телефонов

В отличие от стационарных IP-телефонов и VoIP шлюзов программные телефоны потенциально опасны. Они установлены в операционных системах компьютеров пользователей, которые могут быть случайно или намерено заражены вирусами или выполнять шпионские программы. Шпионские программы могут получить легальные данные SIP аккаунта и злоумышленник, получив данные аккаунта может использовать их легально.

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

 

7. Другие дополнительные меры

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

Поделитесь ссылкой в сетях