Дата:2011-09-27
Вот этой статьи мне как раз немного не хватало в разделе про Asterisk. Набрел на нее случайно и решил просто добавить в свою коллекцию.
Как я уже как-то раз рассказывал, довелось мне вывести
неподготовленный астериск в интернет и забыть об этом..
Буквально через пару недель мне об этом напомнили счета от
SIP-провайдера, где красовались значительные суммы.
Мне еще повезло, что провайдер заблокировал аккаунт по достижении
лимита кредита и мы не ушли в глубокий и далекий… минус.
Защита asterisk от взлома Во избежание повторения проблем, я опишу
примерный список мероприятий, которые я с тех пор провожу над asterisk
перед выводом его в интернет.
В интернете гуляет много историй о взломах астериска и
последующей кары от оператора. Где-то лежала байка о некой маленькой
компании в Австралии, которую угораздило залететь на $15000-20000.
Думаю никто не хочет оказаться в подобной ситуации. Гораздо лучше, не
дожидаясь беды, провести некоторый комплекс мероприятий, который
значительно сократит количество вариантов взлома и минимизирует
опасность.
Нестандартный порт вместо 5060
Если имеется техническая возможность – ОБЯЗАТЕЛЬНО меняйте стандартный
порт 5060 на любой другой. Чем он будет больше непохож на стандартный –
тем лучше. Злоумышленники очень быстро найдут ваш астериск обычным
сканированием портов по диапазону адресов. Это произойдет очень быстро
– первые попытки подбора пароля у меня обнаружились уже через 3 дня
после вывода asterisk в интернет.
Настройка порта производится в файле sip.conf в секции [general]:
bindport=5060 => bindport=5172
После таких действий, количество подборщиков уменьшится практически до
нуля.
Отключаем guest-звонки
Если у вас нет необходимости принимать звонки без регистрации,
обязательно выключите следующую опцию в sip.conf:
allowguest=yes => allowguest=no ; Allow or reject guest calls
(default is yes)
Отключаем оповещение о неверном пароле
Практически у всех существуют аккаунты asterisk вида 100, 200, 700 и
т.п. По умолчанию астериск выдает одну ошибку о неверном пароле для
существующего аккаунта и другую для несуществующего аккаунта. С помощью
спец. софта для подбора паролей, злоумышленник может быстро перебрать
все короткие номера и подбирать пароли только к существующим аккаунтам,
которые ответили «неверный пароль». Чтобы препятствовать этому, меняем
опцию в sip.conf:
alwaysauthreject = no => alwaysauthreject = yes
После такой настройки, астериск будет давать одинаковый отбой для любых
неверных авторизаций.
Используем сложные пароли для аккаунтов
Любой пароль можно подобрать, вопрос только во времени. Поскольку
настройка sip-устройств производится один раз и надолго, не скупитесь
на сложные пароли. Для себя я использую длинные пароли с комбинациями
больших и маленьких букв + цифр такого вида:
1
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-экстеншн без необходимости
Не надо оно нам. Защита asterisk от взлома Все, что должно быть в
дефолте:
[default]
exten => _X.,1,Hangup
Не делаем одно универсальное правило для всех звонков
Скажем нет правилам вида:
exten =>
_X.,1,Dial(SIP/${EXTEN}@operator)
Прописываем четко все необходимые комбинации номеров, передаваемых
оператору. Если нет необходимости использовать международную связь – не
описывайте правила для нее вообще. Практически все случаи взломов
используются для звонков заграницу.
;Экстренные службы
exten => _0X,1,
Dial(SIP/${EXTEN}@operator)
exten => _0X,n, Hangup
;Москва
exten => _8495XXXXXXX,1,
Dial(SIP/${EXTEN}@operator)
exten => _8495XXXXXXX,n, Hangup
exten => _8499XXXXXXX,1,
Dial(SIP/${EXTEN}@operator)
exten => _8499XXXXXXX,n, Hangup
exten => _XXXXXXX,1,
Dial(SIP/${EXTEN}@operator)
exten => _XXXXXXX,n, Hangup
;Межгород Россия/Мобильные
exten => _8XXXXXXXXXX,1,
Dial(SIP/${EXTEN}@operator)
exten => _8XXXXXXXXXX,n, Hangup
Количество просмотров: 8218
Комментарии к статье:
Добавить комментарий