Аутентификация пользователей xl2tpd на Freeradius

В данной инструкции пойдет речь только о настройке связки xl2tpd + Freeradius, которая позволит отправлять запросы проверки логинов и паролей на сервер по протоколу RADIUS. Для настройки самого сервера VPN можно воспользоваться инструкциями Настройка сервера L2TP VPN на CentOS 8 или Установка и настройка L2TP VPN-сервера на Ubuntu Server. Для настройки сервера RADIUS — Установка сервера Freeradius на Linux CentOS 8 (настраиваем сервер для хранения пользователей в MySQL/MariaDB).
Установка freeradius client
Установку клиента будем выполнять из исходника. Рассмотрим процесс установки на Linux CentOS или Ubuntu.
Устанавливаем gcc, необходимый для сборки клиента.
а) на Linux CentOS:
yum install gcc
б) на Linux Ubuntu:
apt-get install gcc
Скачиваем исходник клиента:
wget https://github.com/FreeRADIUS/freeradius-client/archive/master.tar.gz
Распаковываем скачанный пакет:
tar zxvf master.tar.gz
Переходим в распакованный каталог:
cd freeradius-client-master/
Конфигурируем исходник:
./configure --prefix=/
Собираем его и устанавливаем:
make
make install
Настройка клиента radius
На сервере Freeradius мы должны добавить клиента xl2tpd. О том, как это делать рассказано в инструкции Установка сервера Freeradius на Linux CentOS 8.
Открываем на редактирование файл:
vi /etc/radiusclient/servers
Добавляем в него:
192.168.1.10 passpass
* где 192.168.1.10 — IP-адрес сервера Freeradius; passpass — клиентский пароль для подключения к серверу RADIUS.
Открываем настройки клиента:
vi /etc/radiusclient/radiusclient.conf
С конфигом по умолчанию у меня не заработал xl2tpd — удаляем все содержимое и вставляем:
auth_order radius,local
login_tries 4
login_timeout 60
nologin /etc/nologin
issue /etc/radiusclient/issue
authserver 192.168.1.10
acctserver 192.168.1.10
servers /etc/radiusclient/servers
dictionary /etc/radiusclient/dictionary
login_radius /usr/sbin/login.radius
seqfile /var/run/radius.seq
mapfile /etc/radiusclient/port-id-map
default_realm
radius_timeout 10
radius_retries 3
login_local /bin/login
* где 192.168.1.10 — IP-адрес сервера Freeradius;
Следующим этапом настроим словари — открываем на редактирование:
vi /etc/radiusclient/dictionary
В моем случае, xl2tpd отказался работать со следующими строками (комментируем их):
...
#ATTRIBUTE Framed-IPv6-Prefix 97 ipv6prefix
...
#ATTRIBUTE Framed-IPv6-Address 168 ipv6addr
#ATTRIBUTE DNS-Server-IPv6-Address 169 ipv6addr
#ATTRIBUTE Route-IPv6-Information 170 ipv6prefix
...
Также добавляем в самый низ:
INCLUDE /etc/radiusclient/dictionary.microsoft
Загружаем словарь dictionary.microsoft:
wget https://www.dmosk.ru/files/dictionary.microsoft -O /etc/radiusclient/dictionary.microsoft
Настройка xl2tpd
Открываем файл с настройками ppp:
vi /etc/ppp/options.xl2tpd
* точный путь до данного файла нужно посмотреть в конфиге /etc/xl2tpd/xl2tpd.conf.
Добавляем:
plugin radius.so
plugin radattr.so
Перезапускаем сервис xl2tpd:
systemctl restart xl2tpd
Создаем нового пользователя на сервере радиус (в базе данных):
mysql -u root -p -e "INSERT INTO radius.radcheck (username, attribute, op, value) VALUES ('vpn1', 'Cleartext-Password', ':=', 'vpn12345');"
* данной командой мы создадим пользователя vpn1 с паролем vpn12345.
Подключаемся к VPN.