FreePBX: перші кроки по граблях

Починаючи знайомство з FreePBX, навіть досвідчені системні адміністратори часто допускають одні і ті ж помилки, які здатні серйозно зіпсувати настрій і відбити всяке бажання продовжувати освоєння цієї системи.



В першу чергу, безумовно, це помилки, пов'язані з безпекою станції. Пам'ятайте, що при підключенні до оператора телефонії ви несете повну фінансову відповідальність за дзвінки, навіть якщо насправді ви їх не робили! Давайте подивимося, що потрібно зробити в першу чергу, а чого робити категорично не можна.

Відразу ж після установки системи необхідно відключити можливість прийому гостьових і анонімних дзвінків, якщо, звичайно, ви не збираєтеся їх використовувати. В іншому випадку, ви фактично надаєте можливість будь-якій людині здійснювати дзвінки через вашу станцію, що може призвести до значних фінансових втрат.

Установки → Установки 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-телефонії проведуть аудит системи і виправлять всі допущені помилки.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.