Используемые термины: Freeradius, CentOS.
Цель данной инструкции — показать пример развертывания и использования сервера аутентификации на базе протокола RADIUS с помощью Freeradius. Мы выполним его установку на CentOS 8 — в итоге мы получим:
В ходе работ мы выполним:
Для корректной работы Freeradius необходимо настроить брандмауэр и отключить SELinux.
Создаем правило для разрешения сервиса radius (порты 1812 и 1813):
firewall-cmd –permanent –add-service=radius
firewall-cmd –reload
В нашей инструкции мы просто отключим SELinux
setenforce 0
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
* при желании настроить SELinux может оказаться полезной инструкция Настройка SELinux в CentOS.
Установка в CentOS выполняется командой:
dnf install freeradius freeradius-utils
* мы установим не только сам freeradius, но и утилиты для работы с ним.
Разрешим автозапуск сервиса и запустим его:
systemctl enable radiusd
systemctl start radiusd
Открываем файл:
vi /etc/raddb/users
… и в самый низ добавляем:
test Cleartext-Password := “test123”
* мы создали пользователя test с паролем test123.
Перечитываем конфиг radius:
systemctl reload radiusd
Делаем тестовый запрос:
radtest test test123 localhost 1218 testing123
* где:
Мы должны увидеть ответ на подобие:
…Received Access-Accept Id 87 from 127.0.0.1:1812 to 127.0.0.1:56554 length 20
Access-Accept говорит нам о том, что пароль для пользователя test правильный. Сервер работает.
Следующим этапом добавим возможность делать запросы к серверу RADIUS с другого узла сети. Предположим, что мы хотим отправить запрос на проверку с другого сервера Linux (Windows, Ubuntu или CentOS — не важно). Если мы попытаемся проверить данные для аутентификации командой:
radtest test test123 192.168.1.15 1218 testing123
* где 192.168.1.15 — IP-адрес сервера RADIUS.
… то мы не получим ответ. Для этого нужно добавить узел, с которого отправляются запросы к клиенты freeradius. Открываем на сервере файл:
vi /etc/raddb/clients.conf
Добавим:
client client1 { ipaddr = 192.168.1.17 secret = password}
* где client1 — произвольное название для клиента; ipaddr — его IP-адрес; secret — пароль для авторизации на freeradius.
Перезапускаем службу radiusd:
systemctl restart radiusd
Теперь можно выполнить запрос на удаленном узле командой:
radtest test test123 192.168.1.15 1218 password
Использование базы данных в качестве хранилища логинов и паролей позволит управлять ими без необходимости перезапускать сервис. Но самое главное — дает возможность использовать различные графические панели управления.
Устанавливаем MariaDB и модуль mysql для Freeradius:
dnf install mariadb-server freeradius-mysql
Разрешаем автозапуск и запускаем MariaDB:
systemctl enable mariadb –now
Создаем пароль для учетной записи mysql-root:
mysqladmin -u root password
Заходим в оболочку mysql:
mysql -uroot -p
Создаем базу данных для freeradius:
> CREATE DATABASE radius DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* данной командой мы создадим базу radius.
Создаем пользователя и даем ему права на созданную базу:
> GRANT ALL ON radius.* TO [email protected] IDENTIFIED BY ‘radius123’;
* в данном примере мы создали пользователя radius, которому можно подключаться к СУБД с локального сервера; выдали права на любые действия с базой radius; в качестве пароля задали radius123.
Отключаемся от mysql:
Импортируем схему для базы данных:
mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql
* вводим пароль для пользователя mysql-root.
Создадим первого пользователя:
mysql -u root -p -e “INSERT INTO radius.radcheck (username, attribute, op, value) VALUES (‘testsql’, ‘Cleartext-Password’, ‘:=’, ‘test123’);”
Разрешаем модуль sql для freeradius:
ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/
Открываем его на редактирование:
vi /etc/raddb/mods-available/sql
Редактируем следующее:
…driver = “rlm_sql_mysql”…dialect = “mysql”…
Снимаем комментарии и также редактируем:
server = “localhost”port = 3306login = “radius”password = “radius123”
Перезапускаем freeradius:
Проверяем:
radtest testsql test123 localhost 1218 testing123
Один из популярных графических интерфейсов для работы с Freeradius — daloRADIUS. Это веб-приложение, написанное на PHP. Соответственно, для его работы мы настроим веб-сервер.
Для установки вводим команду:
dnf install nginx
Разрешаем запуск nginx и стартуем его:
systemctl enable nginx –now
Открываем порты в брандмауэре:
firewall-cmd –permanent –add-service=http
firewall-cmd –permanent –add-service=https
Запускаем браузер и переходим по адресу http://<IP-адрес сервера freeradius> — должна запуститься стартовая страница NGINX:
Устанавливаем php с компонентами:
dnf install php php-fpm php-mysqlnd php-gd php-xml php-mbstring
На момент написания инструкции, в репозитории CentOS 8 не было пакета php-pear-DB, который необходим для работы daloRADIUS. Для его установки загружаем пакет установки репозитория REMI:
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/remi-release-8.1-2.el8.remi.noarch
Устанавливаем его:
rpm -Uvh remi-release*rpm
Теперь можно установить php-pear-DB:
dnf –enablerepo=remi install php-pear-DB
Создаем индексный файл в корневой директории nginx:
vi /usr/share/nginx/html/index.php
<?php
phpinfo();
?>
Снова запускаем браузер и переходим по адресу http://<IP-адрес сервера freeradius> — должна запуститься страница с информацией о PHP:
Переходим на страницу последнего релиза daloRADIUS. Копируем ссылку на архив с порталом:
С помощью скопированной ссылки загружаем архив на сервере:
wget https://github.com/lirantal/daloradius/archive/1.1-2.tar.gz
Создаем каталог в рутовой папке веб-сервера:
mkdir /usr/share/nginx/html/daloradius
Распаковываем скачанный архив в созданную директорию :
tar zxvf 1.1-2.tar.gz -C /usr/share/nginx/html/daloradius –strip-components 1
Открываем конфигурационный файл daloradius:
vi /usr/share/nginx/html/daloradius/library/daloradius.conf.php
Правим настройки для подключения к базе radius:
…$configValues[‘CONFIG_DB_ENGINE’] = ‘mysqli’;$configValues[‘CONFIG_DB_HOST’] = ‘localhost’;$configValues[‘CONFIG_DB_PORT’] = ‘3306’;$configValues[‘CONFIG_DB_USER’] = ‘radius’;$configValues[‘CONFIG_DB_PASS’] = ‘radius123’;$configValues[‘CONFIG_DB_NAME’] = ‘radius’;…
* мне пришлось поменять значения для CONFIG_DB_USER и CONFIG_DB_PASS.
Вносим изменения в базу radius:
mysql -u root -p radius < /usr/share/nginx/html/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
mysql -u root -p radius < /usr/share/nginx/html/daloradius/contrib/db/mysql-daloradius.sql
Снова запускаем браузер и переходим по адресу http://<IP-адрес сервера freeradius>/daloradius — мы увидим страницу для входа в систему. Вводим пользователя administrator и пароль radius:
По умолчанию, Freeradius отправляет лог в файл radius.log — запустить непрерывный просмотр лога можно командой:
tail -f /var/log/radius/radius.log
Если нужен более детализированный отчет о ходе работы RADIUS, можно запустить сервис в режиме отладки. Для этого останавливаем работу службы:
systemctl stop radiusd
… и запускаем:
radiusd -X
Другие инструкции, связанные с Freeradius:
1. Как настроить Freeradius для работы с LDAP (Active Directory) и MySQL одновременно
2. Настройка Freeradius для хранения radpostauth в альтернативной базе MySQL
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies