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

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

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

Разберем как установить FreeRADIUS и daloRADIUS на Debian 11 и как настроить его для использования MySQL.

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

Все ниже описанные действия будут производиться от root.

Настройка MySQL

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

apt-get install mariadb-server -y

Выполняем базовую настройку безопасности MySQL сервера и входим на сервер.

mysql_secure_installation

mariadb

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

SQL
CREATE DATABASE radius;
CREATE USER 'radius'@'localhost' IDENTIFIED BY 'radius';
GRANT SELECT ON radius.* TO 'radius'@'localhost';
FLUSH PRIVILEGES;

Установка FreeRADIUS

Устанавливаем FreeRADIUS с дополнительными модулями mysql, ldap:

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     |
+------------------+

Создайте символическую ссылку из модуля SQL в каталог /etc/freeradius/3.0/mods с поддержкой:

ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/

Применяем права доступа на файл который только что редактировали:

chown freerad:freerad -R /etc/freeradius/3.0/mods-enabled/sql

Настраиваем FreeRADIUS на использование MySQL/MariaDB.

В файл конфигурации /etc/freeradius/3.0/mods-available/sql вносим следующие изменения:

/etc/freeradius/3.0/mods-available/sql
dialect = "sqlite" на dialect = "mysql"
driver = "rlm_sql_null" на driver = "rlm_sql_mysql"

По-умолчанию FreeRADIUS предполагает, что будет использоваться сертификаты TLS по умолчанию, при использовании MySQL. Использовать TLS не будем, поэтому нужно закоментировать выделенные ниже строки описания TLS:

/etc/freeradius/3.0/mods-available/sql
mysql {
    # If any of the files below are set, TLS encryption is enabled
    tls {
           ca_file = "/etc/ssl/certs/my_ca.crt"
           ca_path = "/etc/ssl/certs/"
           certificate_file = "/etc/ssl/certs/private/client.crt"
           private_key_file = "/etc/ssl/certs/private/client.key"
           cipher = "DHE-RSA-AES256-SHA:AES128-SHA"

           tls_required = yes
           tls_check_cert = no
           tls_check_cert_cn = no
    }

    # If yes, (or auto and libmysqlclient reports warnings are
    # available), will retrieve and log additional warnings from
    # the server if an error has occured. Defaults to 'auto'
    warnings = auto
}

Находим секцию # Connection info: и под ней раскомментируем строки server, port, login, password и заменим значения в них на учетные данные, которые задавали при создании базы данных FreeRADIUS.

/etc/freeradius/3.0/mods-available/sql
# Connection info:
#
server = "localhost"
port = 3306
login = "radius"
password = "radius"

Находим строку radius_db и в ней указываем имя базы данных, которую создали ранее.

/etc/freeradius/3.0/mods-available/sql
# Database table configuration for everything except Oracle
radius_db = "radius"

Находим строку read_clients = yes, которая закомментирована, и раскомментируйте ее.

/etc/freeradius/3.0/mods-available/sql
# Set to 'yes' to read radius clients from the database ('nas' table)
# Clients will ONLY be read on server startup.
read_clients = yes

Перезапускаем службу radius:

systemctl restart freeradius

Для проверки, можно запустить radius сервер в debug режиме:

systemctl stop 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/

Импортируем схему daloRADIUS MySQL в ранее созданую базу данных для FreeRADUIS:

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

Проверим что база данных (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 app/common/includes/daloradius.conf.php.sample app/common/includes/daloradius.conf.php
chown www-data:www-data app/common/includes/daloradius.conf.php

Создаем необходимые рабочие каталоги и применяем к ним права доступа:

mkdir -p var/{log,backup}
chown www-data:www-data -R var

В файле конфигурации /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'] = 'radius';
$configValues['CONFIG_DB_NAME'] = 'radius';

Портал operators будет работать на порту 8000, а users будет работать на 80, в файле конфигурации портов /etc/apache2/ports.conf обьявляем слушать дополнительный порт — 8000. (По возможности правильней использовать SSL соединение, но в рамках данной статьи не будет рассмотрено):

/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 8080

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

Настройка 2 виртуальных хостов (operators и users):

cat <<EOF > /etc/apache2/sites-available/daloradius_operators.conf
  Alias /operators /var/www/daloradius/app/operators
  <VirtualHost *:80>
      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

Включаем созданные виртуальные хосты и отключаем дефолтный сайт:

a2ensite daloradius_users.conf daloradius_operators.conf
a2dissite 000-default

Перезапускаем службу apache

/etc/init.d/apache2 restart

 

Система будет доступна по — http://<ip>:8000/ для приложения RADIUS management или http://<ip> для приложения user portal. Учетные данные по-умолчанию — administrator \ radius

Обсуждение

0 комментариев

Нет комментариев.