RADIUS сервер

RADIUS (Remote Authentication in Dial-In User Service) — протокол для реализации протокола AAA (аутентификации (Authentication), авторизации (Authorization) и сбора сведений об использованных ресурсах (Accounting)), разработанный для передачи сведений между сервером и клиентским оборудованием. Используется, например, при аутентификации пользователей wi-fi, Раздел VPN: Что это такое VPN, в прошлом, dialup-подключений, и других подобных случаях. Описан в стандартах RFC 2865 и RFC 2866.

Протокол RADIUS согласно стандарту:

  • Базируется на UDP протоколе.
    iptables -A INPUT -p udp -m multiport --dport 1812,1813 -j ACCEPT
  • Без состояний (stateless)
  • Предоставляет более 50 пар атрибут/значение с возможностью создавать специфичные для производителя пары

Существует несколько реализация RADIUS серверов, ниже некоторые из них

  • Internet Authentication Service (IAS) встроенный в Windows Server.
  • FreeRADIUS. Сборка под Windows: FreeRADIUS.net

Инсталляция FreeRADIUS

FreeRADIUS в связке с MySQL

Web интрефейсы для управления пользователями FreeRADIUS

  • Инсталлируем
aptitude install freeradius freeradius-mysql
  • Сделаем резервную копию конфигурационных файлов
cp -r /etc/freeradius /etc/freeradius.backup

Создадим базу данных radius, пользователя и таблицы

mysql -uroot -p
mysql> create database radius;
GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'your_password';
mysql -uroot -p radius < /etc/freeradius/sql/mysql/schema.sql
mysql -uroot -p radius < /etc/freeradius/sql/mysql/nas.sql

Создадим тестового пользователя

INSERT INTO radcheck (UserName, Attribute, VALUE) VALUES ('myuser', 'Password', 'mypassword');

Правим настройки Движок БД MySQL для сервера radius в файле /etc/freeradius/sql.conf.

database = "mysql"
login = "radius"
password = "password"
readclients = yes

Далее в файле /etc/freeradius/sites-enabled/default и файле inner-tunnel указываем, что сервер radius должен подключаться к MYSQL.

        #  See "Authorization Queries" in sql.conf
        sql
        #  See "Accounting queries" in sql.conf
        sql
        #  See "Simultaneous Use Checking Queries" in sql.conf
        sql
        #  See "Authentication Logging Queries" in sql.conf
        sql

в /etc/freeradius/radiusd.conf раскоментируем строку в секции modules, тем самым включая поддержку MYSQL в radius

$INCLUDE sql.conf

Тестируем, что получилось

/etc/init.d/freeradius stop
freeradius -X
  • Тест из консоли как для внешнего устройства
    radtest usertest testpw 192.168.10.10 0 423966
    Sending Access-Request of id 94 to 192.168.10.10 port 1812
    	User-Name = "usertest"
    	User-Password = "testpw"
    	NAS-IP-Address = 127.0.1.1
    	NAS-Port = 0
    	Message-Authenticator = 0x00000000000000000000000000000000
    rad_recv: Access-Accept packet from host 192.168.10.10 port 1812, id=94, length=20
PQ VPS сервера в 28+ странах.