Протокол RADIUS.
Remote Authentication Dial In User Service. RFC 2058 и RFC 2059. Для работы использует протокол UDP и стандартным является порт 1812.
Формат пакета Acess-Accept
Поле “Аутентификатор” = MD5(Код + Идентификатор + Длина + Аутентификационный запрос + Атрибуты + Ключ)
Формат пакета Access-Request
Поле “Аутентификатор” 16 байтовое случайное число.
Должно содержать атрибуты:
- имя пользователя
- Nas-IP или Nas-идентификатор
- User-password или CHAP-пароль
- Желательно Nas-порт или Nas-Port-Type
Формат атрибутов
- 8 бит - Тип
- 8 бит - Длина
-
Значение, которое может принимать следуюзие значения:
- text - от 1 до 253 байт, символы в UTF-8
- string - от 1 до 253 байт
- address - 32 битовое значение, первые 8 бит являются старшими
- integer - 32 битовое
- time - 32 бита, стандартный радиус не использует. Для будующий расширений.
Формат сообщения
- 8 бит. Код - тип передаваемого макета.
- 8 бит. Идентификатор - для сопоставления запросов с откликами.
- 16 бит. Длина сообщения - информация о размере всего пакета. Если длина превышает указанную, то излишки считаются заполнением без информационной нагрузки. Если размер пакета меньше указанного, то пакет отбрасывается без уведомления.
- 128 бит. Аутентификатор.
- 20 бит и более. Атрибуты их 63 вида.
Значения кодов:
- 1 Access-Request
- 2 Access-Accept
- 3 Access-Reject
- 4 Accounting-Request
- 5 Accounting-Response
- 11 Access-Challenge
- 12/13 Status server/client (эксперементально)
- 40 Disconnect-Request (RFC 3576)
- 41 Disconnect-ACK (RFC 3576)
- 42 Disconnect-NAK (RFC 3576)
- 255 Зарезервировано
Реализация на базе FreeRadius
Использую для аутентификации клиентов прокси сервера SQUID 3.
Установка
sudo apt-get install freeradius
Режим отладки
freeradius -x
Проверка конфигов
radiusd -c
radiusd.conf
Главный конфиг, указывает пути к другим конфигам, устанавливает глобальные переменные.
dictionary
Статический файл определяющий все возможные атрибуты используемые в других конфигах
/etc/freeradius/3.0/users
Определяет пользователей, их настройки и сочетания логин\пароль
88 Cleartext-Password := "password"
/etc/freeradius/3.0/client.conf
Определяет Nas, порты доступа и клиентов, т.е. сущности которая обьединяет пользователей
client 192.168.0.100 {
secret = passwd
shortname = server
}
Определяется для squid, чтобы он имел канал взаимодействия с radius.