Литмир - Электронная Библиотека
Содержание  
A
A

Если требуется принимать вызовы из сети Free World Dialup, в Asterisk есть предопределенный защитный ключ, который гарантирует невозможность для анонимных соединений сымитировать звонок Free World Dialup. Для этого потребуется настроить канал iaxfwd:

[iaxfwd] type=user context=incoming auth=rsa

inkeys=freeworlddialup Если имеются ресурсы, опубликованные в сети DUNDi, в файле iax. conf должен быть описан соответствующий пользователь:

[dundi] type=user

dbsecret=dundi/secret context=dundi-incoming

Если имеются устройства, работающие по протоколу IAX (такие, как IAXy), или IAX-пользователи на удаленном сервере, возможно, вы захотите обеспечить их собственным описанием пользователя, посредством которого они будут соединяться с системой.

Допустим, на удаленном сервере имеется пользователь, для которого решено определить IAX-канал типа user. Назовем этого гипотетического пользователя sushi. Описание этого канала может быть примерно таким:

[sushi] type=user

context=local_users

auth=md5,plaintext,rsa

secret=wasabi

transfer=no

jitterbuffer=yes

callerid="Happy Tempura" <(800) 555-1234>

accountcode=seaweed

deny=0.0.0.0/0.0.0.0

permit=192.168.1.100/255.255.255.0

language=en

Asterisk™: будущее телефонии Второе издание - img_125.png

Входящие звонки от этого пользователя будут поступать в контекст local_users и передавать системе Caller ID (ID звонящего) Happy Tempura <(800) 555-1234>. Система ожидает от этого пользователя аутентификации с использованием простого текстового пароля или алгоритмов MD5 и RSA, поскольку предоставлен пароль wasabi и звонок поступил с IP- адреса 192.168.1.100. Всем звонкам, поступившим по этому каналу,

Аутентификация по протоколу IAX

IAX предоставляет механизмы аутентификации для обеспечения достаточного уровня безопасности между конечными точками. Это не означает, что аудиоинформацию нельзя захватить и декодировать, но свидетельствует о том, что можно более тщательно управлять правами доступа к вашей системе. В IAX-ка- налах поддерживается три уровня безопасности. Опция auth определяет, какой метод аутентификации используется в канале: plaintext, md5 или rsa.

Параметр plaintext в IAX обеспечивает очень низкий уровень защиты. Хотя он разрешает соединение с каналом только при условии введения правильного пароля, но тот факт, что пароль хранится в файле iax.conf как простой текст и передается и принимается в таком же незашифрованном виде, делает этот метод аутентификации очень ненадежным.

md5 обеспечивает большую безопасность сетевого соединения, однако по-прежнему в файле iax.conf на обоих концах соединения должен быть задан текстовый secret. Вот как происходит аутентификация в данном случае: сервер А запрашивает соединение с сервером В, который, в свою очередь, отвечает запросом на авторизацию, включающим сгенерированный случайным образом номер. Сервер А генерирует хеш MD5, используя значение, заданное в поле secret файла iax.conf, и случайный номер, полученный от сервера В. Этот хеш возвращается в ответе на запрос на авторизацию, и сервер В сравнивает его с локально сгенерированным хешем. Если хеши совпадают, предоставляется разрешение на доступ.

Метод rsa обеспечивает самый высокий уровень безопасности. Чтобы использовать RSA-аутентификацию, каждый конец соединения с помощью сценария astgenkey, обычно находящегося в папке /usr/src/asterisk/contrib/scripts/, должен создать пару ключей - открытый и закрытый. После этого открытый ключ передается на дальний конец. Каждый конец соединения в свое описание канала должен включить открытый ключ противоположного конца, используя для этого параметры inkeys и outkey. RSA-ключи хранятся в папке /var/lib/asterisk/keys/. Открытым ключам присваиваются имена имя.риЬ; закрытым ключам - имя. key. Закрытые ключи должны быть зашифрованы по алгоритму 3DES[143].

будет присваиваться код учетной записи seaweed. Поскольку для параметра transfer (переадресация) задано значение no, медиа-поток этого канала всегда будет проходить через Asterisk; он не может быть перенаправлен на другой IAX-узел.

Если вы сами являетесь удаленным узлом и вам необходимо устанавливать соединения с другим узлом, главный узел был бы определен для вас как равноправный участник (peer):

[sashimi_platter]

type=peer

username=sushi

secret=wasabi

host=192.168.1.101

qualify=yes

trunk=yes

peer вызывается из диалплана с помощью приложения Dial(), в которое передается имя, указанное в квадратных скобках. Если равноправный участник требует от вас аутентификации с использованием имени пользователя, имя пользователя и секрет можно задать в полях username и secret.

Помните, аутентификация входящего звонка от пользовате-0% ля, заданного в iax.conf, должна выполняться с использовани- Л * ем имени, заданного в квадратных скобках. Однако если ™ Asterisk сама вызывает внешнего равноправного участника сети, имя пользователя, используемое при аутентификации, можно задать с помощью настройки username.

Для описания host используется или запись IP-адреса с точками-разделителями, или полное доменное имя (fully qualified domain name, FQDN). Задавая параметр qualify=yes, можно определить задержку соединения между вами и удаленным хостом и проверку, активен ли он. Чтобы свести до минимума количество издержек при поступлении множества звонков к одному равноправному участнику сети, их можно объединить (trunk).

Объединение каналов является уникальной возможностью IAX. Благодаря ей между двумя большими сайтами можно устанавливать множество одновременных VoIP-соединений. Объединение каналов, предоставляемое IAX, обеспечивает сокращение количества переносимой служебной информации за счет загрузки в каждый сигнальный пакет аудиоданных нескольких параллельных вызвов[144]. Чтобы активировать

Asterisk™: будущее телефонии Второе издание - img_126.png

Рис. A.1. Объединение каналов деактивировано

Asterisk™: будущее телефонии Второе издание - img_127.png

Рис. A.2. Объединение активировано

объединение для канала, необходимо задать для него параметр trunk=yes в файле iax.conf.

На рис. А.1 показан канал с отключенной возможностью объединения, а на рис. А.2 - канал, для которого эта возможность активирована.

Параметры канала

Теперь рассмотрим параметры канала:

callerid

С помощью параметра callerid можно задать рекомендуемый строковый Caller ID (ID звонящего) для каналов типа user или peer. Если для user задано значение в поле Caller ID, всем звонкам, поступающим по этому каналу, будет присвоен этот Caller ID, независимо от того, что посылает вам дальний конец соединения. Если Caller ID задан для peer, вы посылаете запрос дальнему концу на использование его как вашего идентификатора (хотя не располагаете средствами, чтобы проконтролировать это). Если вы хотите, чтобы вызывающие абоненты могли использовать собственные Caller ID (то есть для гостей), убедитесь, что значение в поле callerid не задано: callerid=John Smith <(800) 555-1234> defaultip

Настройка defaultip дополняет host=dynamic. Если хост еще не зарегистрирован на вашем сервере, вы будете пытаться отправлять сообщения по указанному здесь IP-адресу по умолчанию:

defaultip=192.168.1.101

inkeys

Опция inkeys может использоваться для аутентификации пользователя с помощью RSA-ключа. Чтобы связать с описанием канала типа user более одного RSA-ключа, имена ключей записываются через

двоеточие (:). Для подтверждения допустимости соединения может использоваться любой из заданных ключей. Inkey - это открытый ключ, который вы раздаете своим пользователям:

вернуться

143

Из соображений безопасности файл закрытого ключа должен быть защищен от несанкционированного копирования. - Примеч. науч. ред.

вернуться

144

Можно провести аналогию между объединением VoIP-пакетов, реализуемым с помощью IAX, и объединением вагонов, принадлежащих различным компаниям, в один состав. Это очень полезно во многих ситуациях, поскольку объем служебных данных IP (UDP-заголовки, IP-заголовки и т. д.) часто превышает объем полезной нагрузки (аудиоинформации). Если между двумя серверами Asterisk выполняется несколько параллельных вызовов, вы обязательно захотите включить объединение каналов!

104
{"b":"282856","o":1}