Содержание статьи:
Разберем как установить FreeRADIUS
и daloRADIUS
на Debian 11 и как настроить его для использования MySQL / MariaDB.
В рамках данной статьи будет разобрано лишь только установка и настройка FreeRADIUS
и daloRADIUS
, вариации конфигурации использования freeRADUIS с оборудованием или системами будет рассматриваться в других статьях.
# Все ниже описанные действия будут производиться от root
.
Настройка MySQL
# Устанавливаем MySQL сервер.
apt-get install mariadb-server -y
# Выполняем базовую настройку безопасности MySQL сервера и входим на сервер.
mysql_secure_installation mariadb
# Создаем базу данных для FreeRADIUS.
CREATE DATABASE radius; CREATE USER 'radius'@'localhost' IDENTIFIED BY 'radius'; GRANT SELECT 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 | +------------------+
Создайте символическую ссылку из модуля 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
вносим следующие изменения:
dialect = "sqlite"
наdialect = "mysql"
driver = "rlm_sql_null"
наdriver = "rlm_sql_mysql"
По-умолчанию FreeRADIUS предполагает, что будет использоваться сертификаты TLS по умолчанию, при использовании MySQL.
Использовать TLS не будем, поэтому нужно закоментировать строки описания TLS:
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 }
Должно получится вот так:
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.
# Connection info: # server = "localhost" port = 3306 login = "radius" password = "radius"
Находим строку radius_db
и в ней указываем имя базы данных, которую создали ранее.
# Database table configuration for everything except Oracle radius_db = "radius"
Находим строку read_clients = yes
, которая закомментирована, и раскомментируйте ее.
# 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:
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:
$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 соединение, но в рамках данной статьи не будет рассмотрено):
# 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
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Оставить ответ