Май 202012
 

IAX протокол

 

IAX — транспортный протокол, разработанный компанией Digium, для обмена информацией с другими серверами на Asterisk.

IAX — открытый протокол, использует единственный UDP порт 4569 для обмена сигналами и медиа данными, что упрощает работу с NAT. Он может объединять несколько сеансов в один поток, что приводит к экономии пропускной способности. В безопасносте он так же выигрывает у SIP, в него включены такие возможности как аудентификация открытым текстом, хеширование MD5 и обмен ключами RSA. Его поддерживают меньше программных и аппаратных устройств чем SIP, но все идет к тому, что его начинают все больше и больше использовать.

Май 202012
 

Защита asterisk от взлома

Вот этой статьи мне как раз немного не хватало в разделе про 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

Источник: http://plutonit.ru/view_post.php?id=238

Дек 232011
 

Установка Asterisk на CentOS
И так приступаем к сборке Asterisk 1.4

Посмотрим на релиз ядра:

# uname -r
2.6.18-53.1.4.e15
Сперва устанавливаем пакеты необходимые для работы.

yum -y install kernel-devel gcc ncurses-devel openssl-devel gcc-c++ gnutls-devel make
ln -s /usr/src/kernels/2.6.18.-53.1.4.e15-i686/ /usr/src/linux
yum -y install iftop
yum -y install libtool-ltdl libtool-ltdl-devel
yum -y install iksemel
yum -y install curl curl-devel newt newt-devel net-snmp net-snmp-libs
yum -y install glibc-devel kernel-header db-devel gcc cpp binutils bison expat-devel ncurses openssl openssl-devel
ВНИМАНИЕ: у Вас может быть другой путь к исходникам ядра

Устанавливаем Zaptel

cd /usr/src/zaptel-1.4.7.1/
make clean
make
make install
make install-udev
make config

Во время зборки может произойти ошибка пофиксить ее просто заменив в файле /usr/src/zaptel-1.4.7.1/xpp/xbus-core.c следущющую строку

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) на
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)

Запускаем zaptel

/etс/init.d/zaptel start
Устанавливаем LibPRI

cd /usr/src/libpri-1.4.1/
make clean
make
make install
Устанавливаем Asterisk

cd /usr/src/asterisk-1.4.11/
make clean
./configure
make
make install
make samples
make progdocs
make config
скачиваем с сайта http://asterisk.gnuinter.net/files/ последнюю версию asterisk-perl-0.10

cd /usr/src/asterisk-perl-0.10
perl Makefile.PL
make all
make install
Далее собираем дополнения

cd /usr/src/asterisk-addons-1.4.5
./configure
make
make install
Всё готово, просматриваем всё-ли стартует при старте системы, команда «setup»