Установка FreeRADIUS & daloRADIUS на Debian 11
RADIUS — расширенный протокол удаленной аутентификации пользователей, представляет собой ключевой элемент в обеспечении безопасности и управлении доступом в сетях.
Разберем как установить FreeRADIUS
и daloRADIUS
на Debian 11 и как настроить его для использования MySQL
. В рамках данной статьи мы рассмотрим лишь только установку и настройку FreeRADIUS
и daloRADIUS
, вариации конфигурации использования freeRADUIS с оборудованием или системами будет рассматриваться в других статьях.
Настройка MySQL
Устанавливаем MySQL сервер.
sudo apt-get install mariadb-server -y
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:
sudo apt-get install freeradius freeradius-utils freeradius-mysql freeradius-ldap -y
После установки импортируем схему RADIUS MySQL:
mariadb radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
Проверим что таблицы в базе данных (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 {...}
закоментируем выделенные ниже строки:
sed -Ei '/^[\t\s#]*tls\s+\{/, /[\t\s#]*\}/ s/^/#/' /etc/freeradius/3.0/mods-available/sql
Далее укажем параметры подключения к СУБД, находим секцию # 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 модуль и применяем соответствующие права на него:
ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
chown freerad:freerad /etc/freeradius/3.0/mods-enabled/sql
Перезапускаем службу radius:
systemctl restart freeradius
freeradius -X
Установка и настройка daloRADIUS (FreeRADIUS GUI)
DaloRADIUS — это продвинутый веб-сервер RADIUS, предназначенный для управления точками доступа и развертываниями интернет-провайдеров.
Устанавливаем необходимые пакеты:
apt-get install apache2 apache2-utils php7.4 libapache2-mod-php7.4 php7.4-{curl,gd,common,mysql,mbstring,xml} php-gd php-db php-mail php-mail-mime git -y
Загружаем daloRADIUS из репозитория github:
cd /var/www
git clone https://github.com/lirantal/daloradius.git
cd daloradius/
Импортируем необходимые схемы в ранее созданную базу данных для FreeRADUIS:
mysql -u root radius < /var/www/daloradius/contrib/db/fr3-mariadb-freeradius.sql
mysql -u root radius < /var/www/daloradius/contrib/db/mariadb-daloradius.sql
"Нет такого файла или каталога"
, то проверяйте в каталоге /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 из примера и применяем к нему соответствующие права доступа:
cp /var/www/daloradius/app/common/includes/daloradius.conf.php.sample app/common/includes/daloradius.conf.php
chown www-data:www-data /var/www/daloradius/app/common/includes/daloradius.conf.php
chmod 0664 /var/www/daloradius/app/common/includes/daloradius.conf.php
В файле конфигурации /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';
Создаем необходимые рабочие каталоги и применяем к ним соответствующие права доступа:
mkdir -p /www/daloradius/var/{log,backup}
chown -R www-data:www-data /www/daloradius/var
chmod -R 775 /www/daloradius/var
Портал 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:
cat << EOF > /etc/apache2/sites-available/daloradius_operators.conf
<VirtualHost *:8000>
DocumentRoot /var/www/daloradius/app/operators
ErrorLog \${APACHE_LOG_DIR}/daloradius_operators.error.log
CustomLog \${APACHE_LOG_DIR}/daloradius_operators.access.log combined
<Directory /var/www/daloradius/app/operators>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/daloradius>
Require all denied
</Directory>
</VirtualHost>
EOF
cat << EOF > /etc/apache2/sites-available/daloradius_users.conf
<VirtualHost *:80>
DocumentRoot /var/www/daloradius/app/users
ErrorLog \${APACHE_LOG_DIR}/daloradius_users.error.log
CustomLog \${APACHE_LOG_DIR}/daloradius_users.access.log combined
<Directory /var/www/daloradius/app/users>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/daloradius>
Require all denied
</Directory>
</VirtualHost>
EOF
Отключаем сайт по-умолчанию, включаем созданные виртуальные хосты и перезапускаем службу apache:
a2dissite 000-default
a2ensite daloradius_users.conf daloradius_operators.conf
systemctl restart apache2
Система будет доступна по следующим адресам:
- RADIUS management —
http://<ip>:8000/
- User portal —
http://<ip>
Учетные данные по-умолчанию:
- Логин —
administrator
- Пароль —
radius
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Уже некоторое время пытаюсь поднять сервер радиус, есть проблема которою не смог решить пока. Как сделать чтобы сервер радиус позволял поднимать только одну сессию на пользователя?
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.
Да действительно, ошибки в мануале были. Пересмотрел, все поправил, теперь все будет ок, если следовать по шагам.