SCROLL
Среднее время на прочтение: 5 мин.

Установка FreeRADIUS & daloRADIUS на Debian 11

RADIUS — расширенный протокол удаленной аутентификации пользователей, представляет собой ключевой элемент в обеспечении безопасности и управлении доступом в сетях.

Разберем как установить FreeRADIUS и daloRADIUS на Debian 11 и как настроить его для использования MySQL. В рамках данной статьи мы рассмотрим лишь только установку и настройку FreeRADIUS и daloRADIUS, вариации конфигурации использования freeRADUIS с оборудованием или системами будет рассматриваться в других статьях.

Настройка MySQL

Устанавливаем MySQL сервер.

sudo apt-get install mariadb-server -y
После установки рекомендуется выполнить базовую настройку безопасности MySQL сервера, выполнив команду — mysql_secure_installation.

Создаем базу данных для FreeRADIUS.

SQL
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), были созданы:

SQL
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 и заменим значения в них на учетные данные, которые задавали при создании базы данных и имя базы данных.

/etc/freeradius/3.0/mods-available/sql
# 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
Чтобы запустить radius сервер в debug режиме, нужно сперва остановить его и выполнить команду — 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:

SQL
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:

/var/www/daloradius/app/common/includes/daloradius.conf.php
$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:

/etc/apache2/ports.conf
# 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
По возможности правильней использовать SSL соединение, но в рамках данной статьи не будет рассмотрено.

Отключаем сайт по-умолчанию, включаем созданные виртуальные хосты и перезапускаем службу 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
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

6 комментариев
  • Уже некоторое время пытаюсь поднять сервер радиус, есть проблема которою не смог решить пока. Как сделать чтобы сервер радиус позволял поднимать только одну сессию на пользователя?

  • 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.

    • Это ответ на комментарий Алибек

      Да действительно, ошибки в мануале были. Пересмотрел, все поправил, теперь все будет ок, если следовать по шагам.