Установка FreeRADIUS & daloRADIUS на Debian 11
RADIUS — расширенный протокол удаленной аутентификации пользователей, представляет собой ключевой элемент в обеспечении безопасности и управлении доступом в сетях.
Разберем как установить FreeRADIUS
и daloRADIUS
на Debian 11 и как настроить его для использования MySQL
. В рамках данной статьи мы рассмотрим лишь только установку и настройку FreeRADIUS
и daloRADIUS
, вариации конфигурации использования freeRADUIS с оборудованием или системами будет рассматриваться в других статьях.
Настройка MySQL
Устанавливаем MySQL сервер.
mysql_secure_installation
.Создаем базу данных для FreeRADIUS.
CREATE DATABASE radius;
CREATE USER 'radius'@'localhost' IDENTIFIED BY 'radpass';
GRANT ALL ON radius.* TO 'radius'@'localhost';
FLUSH PRIVILEGES;
Установка FreeRADIUS
Устанавливаем FreeRADIUS с дополнительными модулями mysql, ldap:
После установки импортируем схему RADIUS MySQL:
Проверим что таблицы в базе данных (radius
), были созданы:
mariadb -e "use radius;show tables;"
+------------------+
| Tables_in_radius |
+------------------+
| nas |
| radacct |
| radcheck |
| radgroupcheck |
| radgroupreply |
| radpostauth |
| radreply |
| radusergroup |
+------------------+
Настройка FreeRADIUS
Выполним настройку на использование MySQL/MariaDB. Для этого правим файл конфигурации /etc/freeradius/3.0/mods-available/sql
.
В секции sql {...}
указываем:
- Изменяем —
dialect = "sqlite"
->dialect = "mysql"
- Закоментируем —
driver = "rlm_sql_null"
- Раскментируем —
driver = "rlm_sql_${dialect}"
По-умолчанию FreeRADIUS предполагает, что будет использоваться шифрование при использовании MySQL. В нашем случае мы не используем шифрование, поэтому в секции mysql {...}
закоментируем выделенные ниже строки:
Далее укажем параметры подключения к СУБД, находим секцию # Connection info:
и под ней раскомментируем строки server
, port
, login
, password
, radius_db
и заменим значения в них на учетные данные, которые задавали при создании базы данных и имя базы данных.
# Connection info:
#
server = "localhost"
port = 3306
login = "radius"
password = "radpass"
...
# Database table configuration for everything except Oracle
radius_db = "radius"
Чтобы разрешить клиентам считывать данные из таблицы nas
, убедимся что строки ниже не закоментированы:
read_clients = yes
client_table = "nas"
Включаем настроенный SQL модуль и применяем соответствующие права на него:
Перезапускаем службу radius:
freeradius -X
Установка и настройка daloRADIUS (FreeRADIUS GUI)
DaloRADIUS — это продвинутый веб-сервер RADIUS, предназначенный для управления точками доступа и развертываниями интернет-провайдеров.
Устанавливаем необходимые пакеты:
Загружаем daloRADIUS из репозитория github:
Импортируем необходимые схемы в ранее созданную базу данных для FreeRADUIS:
"Нет такого файла или каталога"
, то проверяйте в каталоге /var/www/daloradius/contrib/db/
названия файлов. С новыми релизами, возможны изменения в именовании поставляемых файлов sql.Проверим что база данных (radius
), была расширена дополнительными таблицами daloRADUIS:
mariadb -e "use radius;show tables;"
+------------------------+
| Tables_in_radius |
+------------------------+
| batch_history |
| billing_history |
| billing_merchant |
| billing_paypal |
| billing_plans |
| billing_plans_profiles |
| billing_rates |
| cui |
| dictionary |
| hotspots |
| invoice |
| invoice_items |
| invoice_status |
| invoice_type |
| nas |
| node |
| operators |
| operators_acl |
| operators_acl_files |
| payment |
| payment_type |
| proxys |
| radacct |
| radcheck |
| radgroupcheck |
| radgroupreply |
| radhuntgroup |
| radippool |
| radpostauth |
| radreply |
| radusergroup |
| realms |
| userbillinfo |
| userinfo |
| wimax |
+------------------------+
Копируем файл конфигурации daloRADIUS из примера и применяем к нему соответствующие права доступа:
В файле конфигурации /var/www/daloradius/app/common/includes/daloradius.conf.php
, указываем подключение к базе данных FreeRADUIS:
$configValues['CONFIG_DB_ENGINE'] = 'mysqli';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'radpass';
$configValues['CONFIG_DB_NAME'] = 'radius';
Создаем необходимые рабочие каталоги и применяем к ним соответствующие права доступа:
Портал operators
будет работать на порту 8000
, а users
будет работать на 80
, в файле конфигурации портов /etc/apache2/ports.conf
объявляем слушать дополнительный порт — 8000:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
Listen 8000
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Настройка виртуальных хостов для operators и users:
Отключаем сайт по-умолчанию, включаем созданные виртуальные хосты и перезапускаем службу apache:
Система будет доступна по следующим адресам:
- RADIUS management —
http://<ip>:8000/
- User portal —
http://<ip>
Учетные данные по-умолчанию:
- Логин —
administrator
- Пароль —
radius
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Добрый день!Подскажите пожалуйста по следующему вопросу: сделал все по вашей инструкции,все получилось.В админ-панели создаю пользователя,добавляю ip-адрес роутера а разделе NAS, и пытаюсь подключиться к RADIUS через Captive Portal,установленный на роутере Keenetic.При нажатии на сеть переход осуществляется на страницу ввода логина и пароля, но пишет что они некорректны.Прошу помощи в решении данного вопроса.Может что то надо сделать в настройках FreeRadius,может подскажете,куда и какие настройки вводить на Captive Portal-е?
Уже некоторое время пытаюсь поднять сервер радиус, есть проблема которою не смог решить пока. Как сделать чтобы сервер радиус позволял поднимать только одну сессию на пользователя?
GRANT SELECT ON radius.* TO ‘radius’@’localhost’;
Тут ошибка из-за которой нельзя сделать запись в бд, вместо select нужно вписать insert или all
Верно, вчера это упустил при редактировании, т.к. тоже ловил ошибку коннекта к БД, на тестовом стенде поправил. в статье забыл указать. Спасибо.
перед установкой на ubuntu 22.04 и старше нужно добавить репозиторий с php7.4
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
и установить диалог
sudo apt install dialog
А в остальном все супер, спасибо!
Куча ошибок в конфигах все переделывать нужно.
mysql -u root radius < /var/www/daloradius/contrib/db/fr3-mysql-freeradius.sql
mysql -u root radius < /var/www/daloradius/contrib/db/mysql-daloradius.sql — тут mariadb должно быть
Listen 80
Listen 8080 — вместо 8000
Alias /operators /var/www/daloradius/app/operators
— тут 8000
И даже после всех исправлений не работает, любое действие приводит к ошибке 500.
Да действительно, ошибки в мануале были. Пересмотрел, все поправил, теперь все будет ок, если следовать по шагам.