Базовые понятия и алгоритм работы модуля DialUp

Структура взаимодействия основных частей модуля DialUp изображена на рисунке.

images/download/attachments/43385720/dialup_2.gif

NAS (Network Access Server) - сервер, через который происходит выход клиента в интернет.

В роли NAS может выступать как специализированное оборудование (Cisco, Huawey), так и обычные компьютеры с модемами, либо с программой поддержки VPN.

Основное назначение NAS - осуществлять доступ пользователей к внешней сети, при этом может происходить туннелирование трафика пользователя (VPN), преобразование протокола канального уровня (PPP -> Ethernet) и другие преобразования.

NAS посылает на RADIUS-сервер два типа запросов: авторизационные (запросы с просьбой установки соединения, содержащие логин и пароль) и запросы аккаунта (уведомительные, содержат информацию о начале - Start - или окончании - Stop - соединения, а также о протекании хода соединения - Update).

Базовые сведения о протоколе RADIUS и конфигурировании атрибутов.

Протокол RADIUS основан на UDP, представляет из себя пакет определённого типа с набором атрибутов. Рассмотрим ход типового соединения по логу RADIUS запросов (radius.log):

Код
INFO 17.01.2008 05:37:49 AUTH:
Type=AUTHENTICATION_REQUEST
Attributes:
User-Name=1579
NAS-Identifier=drs1.igs.ufanet.ru
CHAP-Password=^ï.Â.ÆÉ .î麪
«Ó^
NAS-IP-Address=89.189.150.67
NAS-Port=1
Service-Type=2
Framed-Protocol=1
Calling-Station-Id=10.47.33.2
NAS-Port-Type=5
CHAP-Challenge=»^hÃãs&{{2Êi ñÓÕ½åH°vÛÝc^bô..é`¬¯¸o.+.^§
 
 
INFO 17.01.2008 05:37:49 RESPONSE:
Type=AUTHENTICATION_ACCEPT
Process time:113
Attributes:
Service-Type=2
Framed-Protocol=1
Framed-IP-Address=89.189.151.3
mpd-limit=out#1=all shape 128000 pass
mpd-limit=in#1=all rate-limit 10000000 pass
mpd-limit=in#1=all rate-limit 10000000 pass
 
 
INFO 17.01.2008 05:37:49 ACCOUNT:
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=1579
NAS-Identifier=drs1.igs.ufanet.ru
NAS-IP-Address=89.189.150.67
NAS-Port=1
Service-Type=2
Framed-Protocol=1
Framed-IP-Address=89.189.151.3
Acct-Status-Type=1
Acct-Session-Id=530269-p0001
Acct-Authentic=1
Acct-Link-Count=1
Acct-Multi-Session-Id=530269-p0001
NAS-Port-Type=5
Calling-Station-Id=10.47.33.2
 
INFO 17.01.2008 05:37:49 RESPONSE:
Type=ACCOUNTING_RESPONSE
Attributes:
 
INFO 17.01.2008 05:47:49 ACCOUNT:
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=1579
NAS-Identifier=drs1.igs.ufanet.ru
NAS-IP-Address=89.189.150.67
NAS-Port=1
Service-Type=2
Framed-Protocol=1
Acct-Input-Octets=1250
Framed-IP-Address=89.189.151.3
Acct-Output-Octets=1327
Acct-Status-Type=3
Acct-Session-Time=600
Acct-Input-Packets=56
Acct-Session-Id=530269-p0001
Acct-Authentic=1
Acct-Link-Count=1
Acct-Multi-Session-Id=530269-p0001
Acct-Output-Packets=56
Acct-Output-Gigawords=0
Acct-Input-Gigawords=0
NAS-Port-Type=5
Calling-Station-Id=10.47.33.2
 
INFO 17.01.2008 05:47:49 RESPONSE:
Type=ACCOUNTING_RESPONSE
Attributes:
...
INFO 17.01.2008 18:22:16 ACCOUNT:
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=1579
NAS-Identifier=drs1.igs.ufanet.ru
NAS-IP-Address=89.189.150.67
NAS-Port=1
Service-Type=2
Framed-Protocol=1
Acct-Input-Octets=59455380
Framed-IP-Address=89.189.151.194
Acct-Output-Octets=75469553
Acct-Status-Type=2
Acct-Session-Time=39570
Acct-Input-Packets=159904
Acct-Session-Id=536566-p0001
Acct-Authentic=1
Acct-Link-Count=1
Acct-Multi-Session-Id=536566-p0001
Acct-Terminate-Cause=6
Acct-Output-Packets=140465
Acct-Output-Gigawords=0
Acct-Input-Gigawords=0
NAS-Port-Type=5
Calling-Station-Id=10.47.33.2
 
INFO 17.01.2008 18:22:16 RESPONSE:
Type=ACCOUNTING_RESPONSE
Attributes:

Каждый пакет содержит информацию о NASе (NAS-Identifier и/или NAS-IP-Address), на основании которой RADIUS-сервер сопоставляет пришедший пакет NASу в модуле. При сопоставлении сначала производится поиск NASа с названием, идентичным атрибуту NAS-Identifier пакета, затем, если результат отрицательный, идёт поиск NASа c IP-адресом, равным NAS-IP-Address. Если пришедшему пакету NAS не сопоставлен в radius.log, выводится ошибка NAS not found for Packet!!!.

Обмен сообщениями с каждым NASом шифруется определённым кодовым словом - секретом. Секрет должен совпадать для NASа в биллинге и для конфигурации самого NASа. При несовпадении секретов проверка пароля будет все время выдавать неверный результат, т.к. секрет используется при шифровании пароля.

Идентификатором соединения в пределах NASа для RADIUS-сервера выступает атрибут NAS-Port. Обратите внимание, что он идентичен для всех пакетов в пределах сессии. NAS должен контролировать, чтобы в один момент времени одинаковый NAS-Port не проставлялся в RADIUS пакетах, относящихся к разным сессиям.

Далее рассмотрим попакетно обмен данными между NASом и RADIUS-сервером по ходу соединения.

1. AUTHENTICATION_REQUEST

Запрос авторизации отправляется NASом RADIUS-серверу и содержит помимо идентификационной информации соединения, указанной выше, информацию о логине и пароле пользователя. Логин передаётся в открытом виде, пароль шифруется. Поддерживаются протоколы шифрования PAP, CHAP, MS-CHAP v.2 с генерацией 128 битных MPPE ключей. Протокол авторизации определяется RADIUS-сервером автоматически на основании набора атрибутов.

Протокол PAP является самым ненадёжным, пароль шифруется обратимым способом с помощью секрета. RADIUS-сервер дешифрует его и сравнивает с паролем, указанным для логина в базе данных. Данный режим авторизации можно использовать для проверки секретов. При некорректном секрете пароль в PAP режиме не расшифровывается и отображается в radius.log и в мониторе ошибок не в том виде, в котором был введён пользователем.

Протоколы CHAP, MS-CHAP v.2 поддерживают необратимое шифрование, когда RADIUS-сервер сравнивает не открытый пароль, а результаты криптопреобразований открытого пароля, выполненного им самим и NASом.

MPPE ключи, передаваемые в AUTHENTICATION_ACCEPT пакете в режиме MS-CHAP v.2 авторизации, могут использоваться NASом для шифрования VPN-туннеля пользователя.

Порядок обработки авторизационного пакета следующий: запрос -> скрипт предобработки -> антиспам (блокировка) -> биллинг (проверка наличия логина/пароля, баланса и т.д.) -> штатный Reject-To-Accept -> обработка события "RADIUS-аутентификация" -> антиспам (сбор статистики) -> ответ.

2. AUTHENTICATION_REJECT

Отказ в авторизации, данный пакет не содержит атрибутов. Детальную причину отказа в авторизации пользователя можно посмотреть в Мониторе модуля в режиме ошибок.

3. AUTHENTICATION_ACCEPT

Пользователь авторизован. В данном пакете могут содержатся атрибуты, устанавливающие характеристики соединения пользователя (IP адрес, скорость, максимальную длину сессии, частоту UPDATE пактов и т.п.).

4. ACCOUNTING_REQUEST

Запросы аккаунтинга могут быть трёх типов: Start, Stop, Update. Различаются они атрибутом Acct-Status-Type, который равен 1, 2 или 3 соответственно. Данный тип запросов передаёт на RADIUS-сервер информацию о ходе соединения (соединение началось, завершилось или текущее состояние соединения).

5. ACCOUNTING_RESPONSE

Ответ RADIUS сервера о том, что он получил запрос аккаунтинга. Ответ не содержит никаких атрибутов. Исключение составляет ответ MPD серверу, который может содержать атрибут, информирующий NAS о необходимости разрыва соединения.