» » Захист asterisk від злому

Захист asterisk від злому

Фото - Захист asterisk від злому

Як я вже якось раз згадував, довелося мені вивести непідготовлений Астеріск в інтернет і забув про це .. Буквально через кілька тижнів мені про це нагадали рахунки від SIP-провайдера, де красувалися значні суми. Мені знову пощастило, що провайдер заблокував акаунт після досягнення ліміту кредиту і ми не пішли у великий і віддалений ... Хмм ... Мінус :) Щоб уникнути повторення проблем, я опишу приблизний перелік заходів, які я з тих пір проводжу над Астеріск перед виведенням його в інтернет.

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

Оборона динамічними правилами фаервола

Я вже писав про захист програмою fail2ban. Працює теж досить ефективно, втім існує деяка заковика. Астеріск не підтримує таймаут між спробами реєстрації та по-цьому лиходій за дуже малий проміжок часу (кілька секунд), поки реагує fail2ban, може встигати зробити значно більше спроб підбору, ніж ми вказуємо в налаштуваннях. У мене є приклади, коли блокування відбувалася на ~ 95й спробі підбору, що не їсти гуд.

Нестандартний порт замість 5060

Якщо є технічна можливість - ОБОВ'ЯЗКОВО міняйте стандартний порт 5060 на будь-який подібний. Чим він буде більше несхожий на стандартний - тим краще. Зловмисники досить скоро знайдуть ваш Астеріск звичайним скануванням портів за діапазоном адрес. Це відбудеться вкрай скоро - перші спроби підбору пароля у мене виявилися вже через 3 дні після виведення Астеріск в інтернет.

Налаштування порту проводиться у файлі sip. Conf в секції general:

Bindport = 5060 = gt; bindport = 5172

Після таких дій, число підбирачів зменшиться практично попередньо нуля.

Відключаємо guest-дзвінки

Якщо у вас немає необхідності приймати дзвінки без реєстрації, неодмінно вимкніть наступну опцію в sip.conf:

Allowguest = yes = gt; allowguest = no- Allow or reject guest calls (default is yes)

Відключаємо повідомлення про невірному паролі

Практично у всіх існують акаунти asterisk виду 100, 200, 700 і т.п. За замовчуванням Астеріск видає одну помилку про невірний пароль для існуючого облікового запису і іншу для неіснуючого аккаунта. З через спец. Софта для підбору паролів, лиходій може швидко перебрати всі короткі номери і збирати паролі лише до існуючих акаунтів, які відповіли «невірний пароль». Щоб перешкодити цьому, міняємо опцію в sip.conf:

Alwaysauthreject = no = gt; alwaysauthreject = yes

Після такого налаштування, Астеріск буде давати єдиний відбій для будь-яких невірних авторизаций.

Використовуємо складні паролі для акаунтів

Будь пароль можна підібрати, проблема тільки в часі. Оскільки настройка sip-пристроїв проводиться один раз і надовго, не скупіться на складні паролі. Для себе я використовую довгі паролі з комбінаціями великих і маленьких букв + цифр такого виду:

Secret = f64GCD74ssdZ42

НЕОДМІННО приберіть всі паролі збігаються з логінами. Це - перші паролі, використовувані для паролів.

Використовуємо deny / permit для акаунтів

Обов'язковий момент! Вказуємо для всіх акаунтів, які не мають на увазі підключення з інтернету наступні рядки:

100 ...

Deny = 0.0.0.0 / 0.0.0.0

Permit = 10.1.1.1 / 24

Permit = 10.1.2.1 / 24

Де 10.1.1.1,10.1.2.1 - діапазони локальних адрес, з яких буде проводиться підключення. Підключення з інших адрес asterisk приймати не буде.

Встановлюємо ліміт дзвінків

У разі злому, для зменшення витрат, рекомендую встановити ліміт одночасних дзвінків для акаунтів в 1, щоб злочинець не міг відразу телефонувати на безліч напрямків і, тим самим, швидше витрачати ваші кошти.

100

Call-limit = 1 ...

Не використовуємо default-екстеншн без необхідності

Не потрібно воно нам :) Все, що має бути в дефолті:

Default

Exten = gt; _X., 1, Hangup

Не робимо одне універсальне постанову для всіх дзвінків

Скажемо ні правилам види:

Exten = gt; _X., 1, Dial (SIP / $ EXTEN @ operator)

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

Exten = gt; _0X, 1, Dial (SIP / $ EXTEN @ operator)

Exten = gt; _0X, N, Hangup-Москва

Exten = gt; _8495XXXXXXX, 1, Dial (SIP / $ EXTEN @ operator)

Exten = gt; _8495XXXXXXX, N, Hangup

Exten = gt; _8499XXXXXXX, 1, Dial (SIP / $ EXTEN @ operator)

Exten = gt; _8499XXXXXXX, N, Hangup

Exten = gt; _XXXXXXX, 1, Dial (SIP / $ EXTEN @ operator)

Exten = gt; _XXXXXXX, N, Hangup- Міжмісто Росія / Мобільні

Exten = gt; _8XXXXXXXXXX, 1, Dial (SIP / $ EXTEN @ operator)

Exten = gt; _8XXXXXXXXXX, N, Hangup

На цьому мабуть закінчимо :)