Поддержка RADIUS
Поддержка RADIUS появилась в NeTAMS 3.3.0 (CURRENT) начиная с номера билда 2378 (8 апреля 2005г.)
Что именно поддерживается
В NeTAMS реализована поддержка авторизации доступа к ресурсам внешний сервер–доступа и радиус– сервер, когда последний обращается за паролем и атрибутами к внутренним структурам netams через его Telnet API. Также возможно использование RADIUS–сервера для контроля доступа к статическим веб– страницам. Таким образом, с точки зрения организации провайдерства NeTAMS является базой данных для радиус–сервера. Прозрачно поддерживаются любые методы проверки паролей (PAP/CHAP/MS–CHAP/EAP), т.к. это дело FreeRADIUS а не NETAMS; любое число внешних серверов доступа.
Поддерживается отправка аккаунтинга (данных о трафике) в сторону радиус–сервера через новый тип сервиса storage… type radius (документация).
С версии 3.4.0 появилась поддержка получения аккаунтинга радиус–сервером со стороны NAS, с последующей обратоткой через data–source raw.
Что не поддерживается
Не поддерживается контроль доступа и проверка паролей для пользователей NeTAMS посредством радиус–сервера (т.е. функциональность радиус–клиента; по всей видимости этого и не требуется).
Как работает
Новые функции сосредоточены в:
поддержке авторизации через telnet–интерфейс и/или командную строку
модуле rlm_netams, расширяющего сервер FreeRADIUS
поддержке авторизации доступа к HTML–страницам через mod_auth_radius+новая команда сервиса html (опционально)
В качестве сервера доступа, используемого в качестве клиента нового механизма авторизации, проверялись pppoe+ppp (FreeBSD 5.3) и Windows 2003 RRAS. Таким образом, NeTAMS может успешно авторизовывать и контролировать трафик dialup–и pppoe–и прочих коммутируемых соединений, без необходимости дублировать логины/пароли/настройки в текстовых конфигах и базах данных.
Порядок работы с сервером доступа:
При поступлении запроса на соединение сервер доступа осуществляет проверку прав звонящего (логин/пароль) у радиус–сервера.
Радиус–сервер вызывает код модуля rlm_netams, который извлекает требуемые атрибуты из запроса аутентификации, формирует сообщение, и передает его работающему демону NeTAMS посредством Telnet API.
На основании полученного запроса демон NeTAMS разрешает или запрещает доступ. Если доступ разрешен, в сторону rlm_netams (т.е. радиус–сервера) передаются ряд атрибутов, в частности IP–адрес клиента и набор фильтров. Если сервер передал параметр «Caller–ID» (для PPPoE это МАС–адрес звонящего), и для юнита установлен параметр «mac …», будет проводиться дополнительный контроль и по этому признаку.
rlm_netams копирует ответ демона, формируя RADIUS–ответ для сервера доступа.
сервер доступа отвергает или принимает клиента, устанавливая необходимые параметры соединения.
Порядок работы при авторизации веб–доступа:
Сервис HTML генерирует статические HTML–страницы с данными о трафике, админскую часть и пользовательскую часть. При этом создаются также файлы .htaccess со списком «правильных» пользователей данного URI, файл паролей .htpasswd не поддерживается — заместо него в глобальном конфигурационном файле apache присутствуют записи о RADIUS–авторизации.
HTTP–клиент (бровзер) пытается обратиться к защищенному при помощи .htaccess ресурсу. Происходит запрос пароля (через код 401)
Apache вызывает модуль mod_auth_radius, сообщая тому логин–пароль клиента. Запрос на авторизацию передается радиус–серверу.
Радиус–сервер вызывает код модуля rlm_netams, который извлекает логин–пароль из запроса аутентификации, формирует сообщение, и передает его работающему демону NeTAMS посредством Telnet API.
На основании полученного запроса демон NeTAMS проверяет свою базу пользователей и юнитов, разрешает или запрещает доступ. Ответ пересылается в RADIUS–сервер.
rlm_netams копирует ответ демона, формируя RADIUS–ответ для Apache.
Apache пускает пользователя (бровзер) на страницу, или не пускает его.
Порядок работы при получении accounting пакетов (Start, Stop, Alive) радиус–сервером:
радиус–сервер вызывает код модуля rlm_netams, который извлекает требуемые атрибуты из пакета, формирует сообщение, и передает его работающему демону NeTAMS посредством Telnet API.
Если в пакете Start присутствует In Out, они записываются as–is, если для юнита типа user в пакете присутствует Framed–IP–Address, этот IP–адрес будет установлен данному юниту.
Если в пакете Stop присутствует In Out, они записываются incremental, для юнита типа user IP–адрес обнуляется.
При поступлении пакета Alive, данные In Out записываются incremental.
Если в любом из трех пакетов присутствует Filter–ID=Policy данные будут записаны в эту политику.
Как настроить
Настройка PPPoE/PPP
Очень рекомендуем почитать теорию и примеры и настроить доступ безо всякого netams+radius, для начала.
Допустим что NeTAMS, FreeRADIUS, PPP, PPPoE крутятся на одной машине 192.168.0.1, внешний интерфейс fxp0.
### /etc/ppp/ppp.conf #####################################
default:
enable dns # request DNS info (for resolv.conf)
pppoe:
set log Phase Chat LCP IPCP CCP tun command
set radius /etc/ppp/radius.conf
set speed sync
set timeout 240
set ctsrts off