Базовые понятия и алгоритм работы модуля DialUp
Структура взаимодействия основных частей модуля DialUp изображена на рисунке.
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 о необходимости разрыва соединения.