Установка 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.
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
), были созданы:
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
}
Находим секцию # 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
Обсуждение
Нет комментариев.