- Установка FreeRADIUS на Linux
- FreeRADIUS Server
- Установка и настройка FreeRADIUS
- Настройка FreeRADIUS на Linux
- Установка сервера Freeradius на Linux CentOS 8
- Подготовка сервера
- 1. Firewalld
- 2. SELinux
- Установка и настройка Freeradius
- Запрос с другого узла
- Хранение записей в MariaDB
- Установка и настройка СУБД
- Настройка Freeradius
- Веб-интерфейс
- NGINX
- PHP и PHP-FPM
- Установка daloRADIUS
- Лог ошибок и запросов
Установка FreeRADIUS на Linux
Архитектура современной корпоративной сети имеет сложную структуру. Множество устройств могут подключаться к ней одновременно, что удобно для нарушителей и всех, у кого есть противоправные намерения. Чтобы решить эту проблему, был разработан механизм учета информационных субъектов в сети. RADIUS-сервер, который может обеспечивать 3 функции защиты: аутентификацию, авторизацию и учет. Каждый шаг в системе будет регистрироваться, и все записи и точки входа будут находиться под контролем.
FreeRADIUS Server
FreeRADIUS — это исключительный RADIUS—сервер, предоставляющий услуги централизованной аутентификации и авторизации для устройств, включая коммутаторы, маршрутизаторы, VPN—шлюзы и точки доступа Wi-Fi. Его уникальная способность управлять доступом пользователей к сетевым ресурсам на основе различных параметров, таких как личность, местоположение, характеристики устройства и время суток, что делает его универсальным решением для корпоративных, учебных и сетей провайдеров.
Сервер поддерживает несколько методов аутентификации и может интегрироваться с внешними базами данных, такими как SQL, LDAP и Kerberos, для эффективного хранения и извлечения информации о пользователях и устройствах. Благодаря своей масштабируемости, гибкости и надежности FreeRADIUS остается лучшим выбором для организаций, которым требуется надежное и настраиваемое RADIUS решение.
Установка и настройка FreeRADIUS
Перед установкой любого программного обеспечения нам необходимо обновить индексы и пакеты в AlmaLinux:
Установите необходимый пакет для RADIUS—сервера:
После установки вам необходимо настроить сервер в соответствии с вашими задачами. Конфигурационные файлы можем найти с помощью приведенной ниже команды:
Вы все равно можете использовать удобный текстовый редактор. Откройте файл и посмотрите на параметры: ведение журнала, протокол аутентификации и порты. Все настройки могут быть изменены в соответствии с вашими целями.
Далее создайте файл с именем «user.conf» в том же каталоге:
Откройте файл в вашем текстовом редакторе, используя следующую команду:
В конфигурации добавьте клиентские устройства и ключ, используя следующий синтаксис:
Вместо «client IP or hostname» введите необходимые вам учетные данные и то же самое с «shared secret», вместо этого введите надежный пароль хоть у ААА—сервера, много ступень защита эта так же важна!
Внимание: файл конфигурации определяет правила для клиентского устройства!
Теперь мы переходим к настройке конфигурации для учетной записи пользователя: настройка учетных записей и групп для аутентификации на стороне сервера, реализация протокола RADIUS с открытым исходным кодом. Это включает в себя создание учетных записей пользователей и присвоение им членства в группах в базе данных.
Замените на желаемое имя пользователя, а на соответствующий пароль в открытом текстовом формате. Аналогичным образом откройте файл groups в вашем текстовом редакторе, используя следующую команду:
Запустите AAA—сервер. Как только настройка будет завершена, запустите сервер, выполнив соответствующую команду. Например, вы можете использовать строчку приведенную ниже:
Настройка FreeRADIUS на Linux
Настройка сервера AAA в AlmaLinux—это простой процесс, который включает в себя несколько простых шагов. Выполнив основные шаги по настройке, описанные в этой статье, вы сможете запустить свой сервер FreeRADIUS в кратчайшие сроки. Однако важно отметить, что в программном обеспечении доступны более продвинутые параметры конфигурации и функции, которые не были рассмотрены в этой статье.
Установка сервера Freeradius на Linux CentOS 8
Обновлено: 17.01.2022 Опубликовано: 21.03.2020
- RADIUS-сервер на базе Freeradius 3.
- Хранение пользователей как в обычном файле, так и СУБД MariaDB/MySQL.
- Веб-интерфейс для управления записями.
Подготовка сервера
Для корректной работы Freeradius необходимо настроить брандмауэр и отключить SELinux.
1. Firewalld
Создаем правило для разрешения сервиса radius (порты 1812 и 1813):
firewall-cmd —permanent —add-service=radius
2. SELinux
В нашей инструкции мы просто отключим SELinux
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
* при желании настроить SELinux может оказаться полезной инструкция Настройка SELinux в CentOS.
Установка и настройка Freeradius
Установка в CentOS выполняется командой:
dnf install freeradius freeradius-utils
* мы установим не только сам freeradius, но и утилиты для работы с ним.
Разрешим автозапуск сервиса и запустим его:
test Cleartext-Password := «test123»
* мы создали пользователя test с паролем test123.
Перечитываем конфиг radius:
radtest test test123 localhost 1218 testing123
- test — учетная запись, которую мы проверяем.
- test123 — пароль от учетной записи test.
- localhost — сервер, к которому мы обращаемся (в нашем случае, локальный).
- 1218 — порт, на котором слушает запросы freeradius.
- testing123 — пароль для подключения клиентом к серверу radius. Данный пароль создается по умолчанию для локальных запросов.
Мы должны увидеть ответ на подобие:
.
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. Открываем на сервере файл:
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
Использование базы данных в качестве хранилища логинов и паролей позволит управлять ими без необходимости перезапускать сервис. Но самое главное — дает возможность использовать различные графические панели управления.
Установка и настройка СУБД
Устанавливаем MariaDB и модуль mysql для Freeradius:
dnf install mariadb-server freeradius-mysql
Разрешаем автозапуск и запускаем MariaDB:
systemctl enable mariadb —now
Создаем пароль для учетной записи mysql-root:
mysqladmin -u root password
Создаем базу данных для freeradius:
> CREATE DATABASE radius DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* данной командой мы создадим базу radius.
Создаем пользователя и даем ему права на созданную базу:
> GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY ‘radius123’;
* в данном примере мы создали пользователя radius, которому можно подключаться к СУБД с локального сервера; выдали права на любые действия с базой radius; в качестве пароля задали radius123.
Импортируем схему для базы данных:
* вводим пароль для пользователя mysql-root.
Создадим первого пользователя:
mysql -u root -p -e «INSERT INTO radius.radcheck (username, attribute, op, value) VALUES (‘testsql’, ‘Cleartext-Password’, ‘:=’, ‘test123’);»
Настройка Freeradius
Разрешаем модуль sql для freeradius:
ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/
Открываем его на редактирование:
.
driver = «rlm_sql_mysql»
.
dialect = «mysql»
.
Снимаем комментарии и также редактируем:
server = «localhost»
port = 3306
login = «radius»
password = «radius123»
systemctl restart radiusd
radtest testsql test123 localhost 1218 testing123
Если авторизация пройдет успешно, мы должны увидеть «Access-Accept»:
.
rad_recv: Access-Accept packet from .
.
Веб-интерфейс
Один из популярных графических интерфейсов для работы с Freeradius — daloRADIUS. Это веб-приложение, написанное на PHP. Соответственно, для его работы мы настроим веб-сервер.
NGINX
Для установки вводим команду:
Разрешаем запуск nginx и стартуем его:
systemctl enable nginx —now
Открываем порты в брандмауэре:
firewall-cmd —permanent —add-service=http
firewall-cmd —permanent —add-service=https
Запускаем браузер и переходим по адресу http:// — должна запуститься стартовая страница NGINX:
PHP и PHP-FPM
Устанавливаем php с компонентами:
dnf install php php-fpm php-mysqlnd php-gd php-xml php-mbstring
На момент написания инструкции, в репозитории CentOS 8 не было пакета php-pear-DB, который необходим для работы daloRADIUS. Для его установки загружаем пакет установки репозитория REMI:
Теперь можно установить php-pear-DB:
dnf —enablerepo=remi install php-pear-DB
Создаем индексный файл в корневой директории nginx:
Снова запускаем браузер и переходим по адресу http:// — должна запуститься страница с информацией о PHP:
Установка daloRADIUS
Переходим на страницу последнего релиза daloRADIUS. Копируем ссылку на архив с порталом:
С помощью скопированной ссылки загружаем архив на сервере:
Создаем каталог в рутовой папке веб-сервера:
Распаковываем скачанный архив в созданную директорию :
tar zxvf 1.1-2.tar.gz -C /usr/share/nginx/html/daloradius —strip-components 1
Открываем конфигурационный файл daloradius:
Правим настройки для подключения к базе 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:
Снова запускаем браузер и переходим по адресу http:///daloradius — мы увидим страницу для входа в систему. Вводим пользователя administrator и пароль radius:
Лог ошибок и запросов
По умолчанию, Freeradius отправляет лог в файл radius.log — запустить непрерывный просмотр лога можно командой:
tail -f /var/log/radius/radius.log
Из коробки, логирование запросов отключено. Для включения открываем файл:
И приводим к виду директиву:
Данный параметр включит логирование удачных и неудачных авторизаций. Также мы можем ограничить вывод с помощью параметров:
auth_accept = yes
auth_reject = yes
* где auth_accept — только успешные запросы, auth_reject — неудачные.
Если нам нужно, чтобы в лог попадали пароли, то используем:
auth_badpass = yes
auth_goodpass = yes
* где auth_badpass — для неудачных запросов, auth_goodpass — выполненных успешно.
Не забываем перезапустить сервис:
Если нужен более детализированный отчет о ходе работы RADIUS, можно запустить сервис в режиме отладки. Для этого останавливаем работу службы: