Шрифт:
language=en
Входящие звонки от этого пользователя будут поступать в контекст 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] .
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] . Чтобы активировать
144
Можно провести аналогию между объединением VoIP-пакетов, реализуемым с помощью IAX, и объединением вагонов, принадлежащих различным компаниям, в один состав. Это очень полезно во многих ситуациях, поскольку объем служебных данных IP (UDP-заголовки, IP-заголовки и т. д.) часто превышает объем полезной нагрузки (аудиоинформации). Если между двумя серверами Asterisk выполняется несколько параллельных вызовов, вы обязательно захотите включить объединение каналов!
Рис. A.1. Объединение каналов деактивировано
Рис. A.2. Объединение активировано
объединение для канала, необходимо задать для него параметр trunk=yes в файле iax.conf.
На рис. А.1 показан канал с отключенной возможностью объединения, а на рис. А.2 - канал, для которого эта возможность активирована.