Начиная знакомство с FreePBX, даже опытные системные администраторы зачастую допускают одни и те же ошибки, которые способны серьезно испортить настроение и отбить всякое желание продолжать освоение этой системы.
В первую очередь, безусловно, это ошибки, связанные с безопасностью станции. Помните, что подключаясь к оператору телефонии вы несете полную финансовую ответственность за звонки, даже если на самом деле вы их не совершали! Давайте посмотрим, что нужно сделать в первую очередь, а чего делать категорически нельзя.
Сразу же после установки системы необходимо отключить возможность приема гостевых и анонимных звонков, если, конечно, вы не собираетесь их использовать. В противном случае, вы фактически предоставляете возможность любому человеку осуществлять звонки через вашу станцию, что может привести к значительным финансовым потерям.
Несмотря на то, что FreePBX постоянно обновляется, и разработчики прикладывают большие усилия к обеспечению безопасности системы, периодически обнаруживаются уязвимости в коде, используя которые злоумышленники могут получить, например, параметры доступа к вашим операторам связи. Несмотря на то, что в таком случае звонки будут поступать не с вашей станции, оператор, скорее всего, потребует оплаты именно с вас. Поэтому не следует забывать о защите веб-интерфейса: если сервер установлен в вашей локальной сети, не стоит пробрасывать 80 порт наружу — для удаленной настройки вы можете использовать vpn, ssh-тоннель или любой другой способ доступа. Если же FreePBX установлен на удаленном сервере или по какой-то другой причине имеет прямой доступ в сеть, можно ограничить возможность подключения по 80 порту на уровне iptables, а также использовать парольную защиту Basic Auth как дополнительное средство обеспечения безопасности.
В случае, если вы установили FreePBX с официального образа, вам нужно будет отредактировать файл
В самый конец, перед последней строкой нужно добавить следующее
Обратите внимание на путь к файлу .htpasswd — вы можете задать любой путь для его хранения. Затем потребуется собственно создать аккаунт. Перейдя в выбранную директорию, выполните
и введите пароль для пользователя admin. Не забудьте перезагрузить apache:
И проверьте результат:
Также следует обратиться к вашему оператору связи и ограничить возможность подключения с вашими учетными данными по ip-адресу: в таком случае, даже если злоумышленники получат ваш логин и пароль, воспользоваться ими не получится.
Безусловно, нельзя забывать и о безопасности аккаунтов пользователей на вашей станции. Если возможно (например, все ваши пользователи находятся в локальной сети), обязательно ограничивайте возможность подключения по ip-адресам — даже если пароль определенного пользователя будет скомпрометирован, воспользоваться им извне злоумышленники не смогут.
Бывают ситуации, когда ограничить пользователя по ip не представляется возможным — например, аккаунт используется с мобильного телефона, из разных 3g, 4g, и wifi-сетей. В таком случае, в первую очередь, проверьте надежность ваших паролей. Запомните, даже на “пустой” станции, даже для тестирования, никогда не нужно ставить пароли типа qwerty, ведь забыть впоследствии о таком аккаунте проще простого, как и подобрать такой пароль.
Необходимо задуматься и о переборе паролей. Естественно, если ваш сервер обслуживает клиентов из одной сети и подключается к одному оператору связи, вы можете и даже должны ограничить возможность подключения к sip-порту (обычно, 5060) для всех, кроме известных адресов своих сетей и провайдеров, например, так, если вы устанавливали FreePBX вручную
Или воспользоваться встроенным модулем веб-интерфейса Firewall, если вы установили систему с официального образа. Вы можете задать доверенные и внешние сети вручную в меню
И затем определить, к каким сервисам будет открыт доступ в закладке
Но не всегда возможно оставить только несколько подсетей для sip-порта. В таком случае крайне рекомендуется поставить fail2ban и настроить его на использование с asterisk. Этот демон, основываясь на логах попыток авторизации, блокирует слишком настойчивых на определенное время после заданного числа попыток авторизации, что позволяет пресекать брутфорс. В последних версиях fail2ban правила для asterisk уже включены в поставку, но рекомендуется проверить его работоспособность — выполнить несколько попыток регистрации с заведомо неверным логином и паролем (только обязательно не с того же ip-адреса, с которого вы подключаетесь к серверу!) и проверить, заблокируется ли этот адрес командой
В официальной сборке FreePBX система защиты от перебора паролей уже установлена и настроена. Заблокированные адреса можно найти в закладке
Очень часто, особенно в небольших организациях, когда используется только один провайдер, системные администраторы не уделяют внимания грамотной настройке исходящих маршрутов, ограничиваясь шаблоном X., разрешая таким образом всем пользователям звонить на любой номер телефона. Даже если полностью исключить возможность совершения звонков злоумышленниками, нельзя забывать о том, что пользователь может просто ошибиться и позвонить куда-нибудь в Доминиканскую республику, так что ограничивать исходящие звонки нужно в обязательном порядке. Обычно достаточно добавить шаблоны вызова городских и мобильных номеров телефонов, для РФ маршрут может выглядеть так:
Здесь мы задаем, что номер должен быть 11-значным, начинаться с 8, и вторая цифра должна быть 3,4,8 или 9, что полностью перекрывает все Российские номера, а также разрешаем звонить через этот маршрут только внутренним номерам 100-199. В случае, если кому-то из сотрудников нужно открыть международные звонки, следует добавить дополнительный маршрут для него перед основным, и обязательно в поле CID указать его номер или шаблон номеров, если таких сотрудников несколько.
А также стоит всегда указывать количество одновременных исходящих вызовов в настройках транков, особенно в том случае, если они не ограничены на стороне оператора (10 сотрудников никак не смогут сделать 100 исходящих вызовов), а вот в случае несанкционированных звонков взломщики пытаются звонить в максимальное количество потоков.
Следующая частая ошибка — создание очереди звонков без ограничения по времени и без условия “покидать пустую очередь”. Особенно опасно такое действие, если вы используете номер 8-800 с оплатой за входящие — определенный отдел может остаться без связи (завис свитч, пропал свет, крысы съели витую пару), а входящие звонки для него будут продолжать поступать на очередь, и особо упорные звонящие могут ждать на линии часами.
Неприятности могут возникнуть и в том случае, если вы не используете 8-800, но оператор связи ограничивает количество одновременных входящих звонков, или используются медные линии или поток. В таком случае ресурс канала будет расходоваться просто на проигрывание музыки вызывающим абонентам, и в итоге может возникнуть ситуация, когда все ваши входящие каналы заняты ожидающими в пустой очереди. Именно поэтому нужно всегда ограничивать время ожидания в очереди и не допускать звонков в пустых очередях.
Голосовые приветствия и голосовые меню — безусловно, полезные и нужные функции, используемые почти каждой организацией, решившей перейти на FreePBX, но и при их настройке часто допускаются ошибки. Во-первых, модуль Приветствие, то есть просто воспроизведение голосового ролика, который нельзя пропустить (или можно пропустить по нажатию клавиши, о чем обычно забывают уведомить пользователя), стоит использовать только тогда, когда в этом есть насущная необходимость. Мне доводилось видеть как в Приветствие помещают ролик длительностью одна минута, и только после него следует IVR с предложением выбрать нужный отдел. Когда клиент звонит в первый раз, это воспринимается нормально, но когда он перезванивает пятый раз за час, и пятый раз подряд слушает о том, как компания рада его звонку, он начинает сомневаться в этом. Клиент уже точно знает, что ему нужно нажать кнопку 2 и переключиться на нужный отдел, но его раз от раза заставляют прослушать приветствие целиком. По максимуму сократите использование Приветствий, используйте IVR и разрешите прямые наборы — это позволит сократить время ожидания клиента и не раздражать его.
Еще при создании Интерактивного меню IVR часто забывают сменить настройки по умолчанию, касающиеся неверного набора — при нажатии клавиши, которая не описана в правилах, ролик повторяется несколько раз. Такое поведение уместно только в случае, если выбор должен быть сделан обязательно (крайне редкий случай), и совершенно неуместно в первом, приветственном голосовом меню. Отключайте повторы голосового меню и переводите звонок на назначение, используемое по умолчанию: на секретаря, в очередь менеджеров и так далее. То же касается и тайм-аута набора.
Если вы не уверены в том, что на вашем FreePBX исключены эти и другие ошибки, и хотите чувствовать себя в безопасности, обратитесь к нам, и профессионалы с многолетним опытом работы в сфере ip-телефонии проведут аудит системы и исправят все допущенные ошибки.
В первую очередь, безусловно, это ошибки, связанные с безопасностью станции. Помните, что подключаясь к оператору телефонии вы несете полную финансовую ответственность за звонки, даже если на самом деле вы их не совершали! Давайте посмотрим, что нужно сделать в первую очередь, а чего делать категорически нельзя.
Сразу же после установки системы необходимо отключить возможность приема гостевых и анонимных звонков, если, конечно, вы не собираетесь их использовать. В противном случае, вы фактически предоставляете возможность любому человеку осуществлять звонки через вашу станцию, что может привести к значительным финансовым потерям.
Настройки > Установки Asterisk для SIP > Общие настройки SIP
Настройки > Установки Asterisk для SIP > Установки канала SIP
Несмотря на то, что FreePBX постоянно обновляется, и разработчики прикладывают большие усилия к обеспечению безопасности системы, периодически обнаруживаются уязвимости в коде, используя которые злоумышленники могут получить, например, параметры доступа к вашим операторам связи. Несмотря на то, что в таком случае звонки будут поступать не с вашей станции, оператор, скорее всего, потребует оплаты именно с вас. Поэтому не следует забывать о защите веб-интерфейса: если сервер установлен в вашей локальной сети, не стоит пробрасывать 80 порт наружу — для удаленной настройки вы можете использовать vpn, ssh-тоннель или любой другой способ доступа. Если же FreePBX установлен на удаленном сервере или по какой-то другой причине имеет прямой доступ в сеть, можно ограничить возможность подключения по 80 порту на уровне iptables, а также использовать парольную защиту Basic Auth как дополнительное средство обеспечения безопасности.
В случае, если вы установили FreePBX с официального образа, вам нужно будет отредактировать файл
/etc/httpd/conf.d/freepbx.conf
В самый конец, перед последней строкой нужно добавить следующее
AuthType Basic
AuthName "Administrative zone"
AuthUserFile /.htpasswd
Require valid-user
Обратите внимание на путь к файлу .htpasswd — вы можете задать любой путь для его хранения. Затем потребуется собственно создать аккаунт. Перейдя в выбранную директорию, выполните
htpasswd -c .htpasswd admin
и введите пароль для пользователя admin. Не забудьте перезагрузить apache:
service httpd reload
И проверьте результат:
Также следует обратиться к вашему оператору связи и ограничить возможность подключения с вашими учетными данными по ip-адресу: в таком случае, даже если злоумышленники получат ваш логин и пароль, воспользоваться ими не получится.
Безусловно, нельзя забывать и о безопасности аккаунтов пользователей на вашей станции. Если возможно (например, все ваши пользователи находятся в локальной сети), обязательно ограничивайте возможность подключения по ip-адресам — даже если пароль определенного пользователя будет скомпрометирован, воспользоваться им извне злоумышленники не смогут.
Приложения > Внутренние номера > Внутренний номер > Расширенный
Бывают ситуации, когда ограничить пользователя по ip не представляется возможным — например, аккаунт используется с мобильного телефона, из разных 3g, 4g, и wifi-сетей. В таком случае, в первую очередь, проверьте надежность ваших паролей. Запомните, даже на “пустой” станции, даже для тестирования, никогда не нужно ставить пароли типа qwerty, ведь забыть впоследствии о таком аккаунте проще простого, как и подобрать такой пароль.
Приложения > Внутренние номера > Внутренний номер > Общие
Необходимо задуматься и о переборе паролей. Естественно, если ваш сервер обслуживает клиентов из одной сети и подключается к одному оператору связи, вы можете и даже должны ограничить возможность подключения к sip-порту (обычно, 5060) для всех, кроме известных адресов своих сетей и провайдеров, например, так, если вы устанавливали FreePBX вручную
-A INPUT -s xxx.xxx.xxx.xxx/32 -p udp -m udp --dport 5060 -j ACCEPT
-A INPUT -s yyy.yyy.yyy.yyy/32 -p udp -m udp --dport 5060 -j ACCEPT
-A INPUT -p udp -m udp --dport 5060 -j DROP
Или воспользоваться встроенным модулем веб-интерфейса Firewall, если вы установили систему с официального образа. Вы можете задать доверенные и внешние сети вручную в меню
Подключения > Firewall > Zones > Network
И затем определить, к каким сервисам будет открыт доступ в закладке
Подключения > Firewall > Services
Но не всегда возможно оставить только несколько подсетей для sip-порта. В таком случае крайне рекомендуется поставить fail2ban и настроить его на использование с asterisk. Этот демон, основываясь на логах попыток авторизации, блокирует слишком настойчивых на определенное время после заданного числа попыток авторизации, что позволяет пресекать брутфорс. В последних версиях fail2ban правила для asterisk уже включены в поставку, но рекомендуется проверить его работоспособность — выполнить несколько попыток регистрации с заведомо неверным логином и паролем (только обязательно не с того же ip-адреса, с которого вы подключаетесь к серверу!) и проверить, заблокируется ли этот адрес командой
iptables -L
В официальной сборке FreePBX система защиты от перебора паролей уже установлена и настроена. Заблокированные адреса можно найти в закладке
Подключения > Firewall > Статус
Очень часто, особенно в небольших организациях, когда используется только один провайдер, системные администраторы не уделяют внимания грамотной настройке исходящих маршрутов, ограничиваясь шаблоном X., разрешая таким образом всем пользователям звонить на любой номер телефона. Даже если полностью исключить возможность совершения звонков злоумышленниками, нельзя забывать о том, что пользователь может просто ошибиться и позвонить куда-нибудь в Доминиканскую республику, так что ограничивать исходящие звонки нужно в обязательном порядке. Обычно достаточно добавить шаблоны вызова городских и мобильных номеров телефонов, для РФ маршрут может выглядеть так:
Подключения > Исходящая маршрутизация > Маршрут > Правила набора
Здесь мы задаем, что номер должен быть 11-значным, начинаться с 8, и вторая цифра должна быть 3,4,8 или 9, что полностью перекрывает все Российские номера, а также разрешаем звонить через этот маршрут только внутренним номерам 100-199. В случае, если кому-то из сотрудников нужно открыть международные звонки, следует добавить дополнительный маршрут для него перед основным, и обязательно в поле CID указать его номер или шаблон номеров, если таких сотрудников несколько.
А также стоит всегда указывать количество одновременных исходящих вызовов в настройках транков, особенно в том случае, если они не ограничены на стороне оператора (10 сотрудников никак не смогут сделать 100 исходящих вызовов), а вот в случае несанкционированных звонков взломщики пытаются звонить в максимальное количество потоков.
Подключения > Транки > Настройки Транка > Общие
Следующая частая ошибка — создание очереди звонков без ограничения по времени и без условия “покидать пустую очередь”. Особенно опасно такое действие, если вы используете номер 8-800 с оплатой за входящие — определенный отдел может остаться без связи (завис свитч, пропал свет, крысы съели витую пару), а входящие звонки для него будут продолжать поступать на очередь, и особо упорные звонящие могут ждать на линии часами.
Неприятности могут возникнуть и в том случае, если вы не используете 8-800, но оператор связи ограничивает количество одновременных входящих звонков, или используются медные линии или поток. В таком случае ресурс канала будет расходоваться просто на проигрывание музыки вызывающим абонентам, и в итоге может возникнуть ситуация, когда все ваши входящие каналы заняты ожидающими в пустой очереди. Именно поэтому нужно всегда ограничивать время ожидания в очереди и не допускать звонков в пустых очередях.
Приложения > Очереди > Настройки очереди > Параметры времени и операторов
Приложения > Очереди > Настройки очереди > Параметры емкости очереди
Голосовые приветствия и голосовые меню — безусловно, полезные и нужные функции, используемые почти каждой организацией, решившей перейти на FreePBX, но и при их настройке часто допускаются ошибки. Во-первых, модуль Приветствие, то есть просто воспроизведение голосового ролика, который нельзя пропустить (или можно пропустить по нажатию клавиши, о чем обычно забывают уведомить пользователя), стоит использовать только тогда, когда в этом есть насущная необходимость. Мне доводилось видеть как в Приветствие помещают ролик длительностью одна минута, и только после него следует IVR с предложением выбрать нужный отдел. Когда клиент звонит в первый раз, это воспринимается нормально, но когда он перезванивает пятый раз за час, и пятый раз подряд слушает о том, как компания рада его звонку, он начинает сомневаться в этом. Клиент уже точно знает, что ему нужно нажать кнопку 2 и переключиться на нужный отдел, но его раз от раза заставляют прослушать приветствие целиком. По максимуму сократите использование Приветствий, используйте IVR и разрешите прямые наборы — это позволит сократить время ожидания клиента и не раздражать его.
Еще при создании Интерактивного меню IVR часто забывают сменить настройки по умолчанию, касающиеся неверного набора — при нажатии клавиши, которая не описана в правилах, ролик повторяется несколько раз. Такое поведение уместно только в случае, если выбор должен быть сделан обязательно (крайне редкий случай), и совершенно неуместно в первом, приветственном голосовом меню. Отключайте повторы голосового меню и переводите звонок на назначение, используемое по умолчанию: на секретаря, в очередь менеджеров и так далее. То же касается и тайм-аута набора.
Приложения > Интерактивное меню (IVR) > Настройки IVR
Если вы не уверены в том, что на вашем FreePBX исключены эти и другие ошибки, и хотите чувствовать себя в безопасности, обратитесь к нам, и профессионалы с многолетним опытом работы в сфере ip-телефонии проведут аудит системы и исправят все допущенные ошибки.
Поделиться с друзьями
Комментарии (10)
davydt
25.10.2016 07:49Еще при создании Интерактивного меню IVR часто забывают сменить настройки по умолчанию, касающиеся неверного набора — при нажатии клавиши, которая не описана в правилах, ролик повторяется несколько раз
Уже около полугода разработчики сломали «неверное назначение» в IVR. И чинить пока особо не хотят. Вот тут багрепорт http://issues.freepbx.org/browse/FREEPBX-12577sfw
25.10.2016 07:56http://issues.freepbx.org/browse/FREEPBX-12577?focusedCommentId=89751&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-89751
Пишут, что буквально вчера выкатили исправление, и скоро зальют в Stable. Хотя, конечно, несколько месяцев править то, что сами же и сломали — это своеобразноdavydt
25.10.2016 07:58Получился вещий комментарий, исправление выкатили сразу после написания поста вчера вечером (долго одобряли) :)
VR4
25.10.2016 14:35Весной 2016 года, впервые пришлось поднимать FreePBX, читал эту статью и повышал ЧСВ, потому что всё что тут описано, у меня уже настроено, ровно так, как в картинках. Считаю для новичка вполне не плохо справился с этой задачей.
640509-040147
> Помните, что подключаясь к оператору телефонии вы несете полную финансовую ответственность за звонки, даже если на самом деле вы их не совершали!
На самом деле, при взломе, через суд можно добиться обнуления счета за звонки, совершенные не вами. Был прецедент такой с Ростелекомом.
sfw
Мне тоже знакомы пара случаев, когда удалось не платить за звонки после «угона» аккаунта, но это скорее исключение.
Sleuthhound
Это не исключение, просто нужно добиваться правды в суде и не сдаваться. Да, это геморойно, но если речь о счете на 100+ тыс. руб. от оператора за звонки которые Вы не совершали, то несомненно стоит подавать в суд и Вы его выиграете. Мы судились с ТТК и выиграли.
sfw
В крайнем случае, конечно, стоит попытаться. Но все-таки, думаю, лучше постараться предотвратить взлом, чем потом ходить по судам. Кстати, думаю, будет интересно, если Вы расскажете, как именно взломали станцию
Sleuthhound
А никак не взломали, мы доказали в суде, что нас не взламывали и что звонили не мы, не с наших IP адресов => что мы тут не при делах