Настройка radius сервера linux

Обновлено: 04.07.2024

Необходимо хоть как-то централизовать управление большим количеством wi-fi точек на предприятии. Для этого принято решение использовать freeradius с web мордой daloradius. Но так как бюджета на эти дела не выделено совсем, а в качестве точек доступа у нас tp-link, dlink и аж одна cisco small office то будем городить костыли ,учетки для авторизации будет вести freeradius а управлять скоростью и фильтрами сайтов , будет mikrotik rb1100ahx4, благо хоть он есть.

И так приступим.

Установим на сервер ubuntu 20.04 сам радиус сервер freeradius.

apt-get install freeradius freeradius-mysql mysql-server mysql-client

Создадим базу данных с именем radius, пользователя MySQL с именем radius, разрешим права доступа на базу данных radius пользователю radius.

CREATE DATABASE radius CHARACTER SET UTF8 COLLATE UTF8_BIN;

CREATE USER 'radius'@'%' IDENTIFIED BY 'PassWord';

GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'%';

Импортируем шаблон базы данных для нашей новой базы.

apt install locate

mysql -u radius -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql

Создадим символическую ссылку для включения модуля Freeradius MySQL.

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

Настроим наш сервер radius на работу с базой данных mysql:

sql <
driver = "rlm_sql_mysql"
dialect = "mysql"
server = "localhost"
port = 3306
login = "radius"
password = "PassWord"
radius_db = "radius"
acct_table1 = "radacct"
acct_table2 = "radacct"
postauth_table = "radpostauth"
authcheck_table = "radcheck"
groupcheck_table = "radgroupcheck"
authreply_table = "radreply"
groupreply_table = "radgroupreply"
usergroup_table = "radusergroup"
delete_stale_sessions = yes
pool <
start = $
min = $
max = $
spare = $
uses = 0
retry_delay = 30
lifetime = 0
idle_timeout = 60
>
read_clients = yes
client_table = "nas"
group_attribute = "SQL-Group"
$INCLUDE $/$/main/$/queries.conf
>

Включим логирование, чтобы понимать кто и когда ломится на наши точки доступа.

Установим WEB морду daloradius.

Установим все зависимости:

apt-get install apache2 php libapache2-mod-php php-mysql unzip php-pear php-db php-mail php-gd php-common php-mail-mime

mv daloradius-master /var/www/html/daloradius

Импортируйте шаблон базы данных Daloradius в MySQL.

mysql -u radius -p radius < fr2-mysql-daloradius-and-freeradius.sql

mysql -u radius -p radius < mysql-daloradius.sql

В моей версии не хватало одного столбца в radacct

ALTER TABLE radacct ADD acctupdatetime datetime NULL default NULL AFTER acctstarttime;

Настроим daloradius на работу с mysql:

Установим правильное разрешение для файла в папке Daloradius.

service freeradius restart
service apache2 restart
systemctl enable freeradius

Проверим доступ к daloradius:

Как же пользоваться этой чудо web мордой я до конца не разбирался, так как оборудование у меня примитивное, поэтому краткие настройки тут:

Управление с помощью daloradius.

На вкладке HOME в разделе Logs в Radius Log можно посмотреть лог радиус сервера, там кто, когда логинелся, кому отказано, кому разрешено, а главное их mac адреса, и если у нас есть клиент который тупит и не правильно пишет пароль мы это видим, если это вип клиент который подключен впервые мы можем взять его мак и по нему дат супер права на Mikrotik.

Вкладка Management -> NAS -> New Nas

Nas IP/host (IP адрес точки доступа)

Nas Secret (секретный ключ, он же указывается и на точке)

Nas Type (модель нашей точки, для ddwrt это other)

NAS Shortname (имя точки, как она будет называться в радиус сервере)

  • Добавим первую группу для ограничение доступа пользователей только на определенные точки доступа.

Вот тут логика "железная" - группа для пользователя создается во вкладке Profiles.

Вкладка Management -> Profiles -> New Profiles

Profile Name (имя профиля, оно же имя группы)

Vendor: dictionary.rfc2865 (словарь)

Attribute: Nas-IP-Address (атрибут который сравнивает ip с которого пришел запрос на авторизацию, ip точки доступа)

Жмем add Attribute, внизу добавится наш атрибут заполняем поля:

Value: (ip адрес точки доступа)

Target: check (проверять запрос на подключение, reply - при ответе)

Добавим еще атрибут:

Vendor: dictionary.freeradius.internal (словарь)

Жмем add Attribute, внизу добавится наш атрибут заполняем поля:

Этим самым создадим правило которое будет отбрасывать логины с точки доступа с ip который мы написали выше. Пользователь может состоять в нескольких группах, тем самым будет заблокирован на нескольких точках доступа.

Вкладка Management -> Users-> New User

Username (login для авторизации)

Password Type (в каком виде хранятся пароли Cleartext-Password)

Group (выбираем группу для пользователя)

Adress Pool: wifi-pool

DNS Server: 192.168.1.2

Ну а про ограничение доступа к ресурсам для этой подсети писать не буду это отдельная тема, так же как и для вип клиентов просто жесткая привязка mac адреса к выдаваемому ip c кусочка этой подсети для которой будет все разрешено.

Цель данной инструкции — показать пример развертывания и использования сервера аутентификации на базе протокола RADIUS с помощью Freeradius. Мы выполним его установку на CentOS 8 — в итоге мы получим:

  • RADIUS-сервер на базе Freeradius 3.
  • Хранение пользователей как в обычном файле, так и СУБД MariaDB/MySQL.
  • Веб-интерфейс для управления записями.

В ходе работ мы выполним:

Подготовка сервера

Для корректной работы Freeradius необходимо настроить брандмауэр и отключить SELinux.

1. Firewalld

Создаем правило для разрешения сервиса radius (порты 1812 и 1813):

firewall-cmd --permanent --add-service=radius

2. SELinux

В нашей инструкции мы просто отключим SELinux

* при желании настроить SELinux может оказаться полезной инструкция Настройка SELinux в CentOS.

Установка и настройка Freeradius

Установка в CentOS выполняется командой:

dnf install freeradius freeradius-utils

* мы установим не только сам freeradius, но и утилиты для работы с ним.

Разрешим автозапуск сервиса и запустим его:

systemctl enable radiusd

systemctl start radiusd

. и в самый низ добавляем:

test Cleartext-Password := "test123"

* мы создали пользователя test с паролем test123.

Перечитываем конфиг radius:

systemctl reload radiusd

Делаем тестовый запрос:

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 правильный. Сервер работает.

Запрос с другого узла

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

Заходим в оболочку mysql:

Создаем базу данных для freeradius:

> CREATE DATABASE radius DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* данной командой мы создадим базу radius.

Создаем пользователя и даем ему права на созданную базу:

* в данном примере мы создали пользователя radius, которому можно подключаться к СУБД с локального сервера; выдали права на любые действия с базой radius; в качестве пароля задали radius123.

Отключаемся от mysql:

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

mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql

* вводим пароль для пользователя mysql-root.

Создадим первого пользователя:

Настройка Freeradius

Разрешаем модуль sql для freeradius:

ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/

Открываем его на редактирование:

Снимаем комментарии и также редактируем:

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

Для установки вводим команду:

dnf install nginx

Разрешаем запуск nginx и стартуем его:

systemctl enable nginx --now

Открываем порты в брандмауэре:

Стартовая страница 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:

rpm -Uvh remi-release*rpm

Теперь можно установить php-pear-DB:

dnf --enablerepo=remi install php-pear-DB

Создаем индексный файл в корневой директории nginx:

Установка daloRADIUS

Переходим на страницу последнего релиза daloRADIUS. Копируем ссылку на архив с порталом:

Копируем ссылку на daloRADIUS

С помощью скопированной ссылки загружаем архив на сервере:

Создаем каталог в рутовой папке веб-сервера:

Распаковываем скачанный архив в созданную директорию :

tar zxvf 1.1-2.tar.gz -C /usr/share/nginx/html/daloradius --strip-components 1

Открываем конфигурационный файл daloradius:

Правим настройки для подключения к базе 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

Лог ошибок и запросов

По умолчанию, Freeradius отправляет лог в файл radius.log — запустить непрерывный просмотр лога можно командой:

tail -f /var/log/radius/radius.log

Если нужен более детализированный отчет о ходе работы RADIUS, можно запустить сервис в режиме отладки. Для этого останавливаем работу службы:

MultiFactor Radius Adapter — программный компонент, RADIUS сервер для Linux.

Компонент доступен вместе с исходным кодом, распространяется бесплатно. Актуальная версия находится на GitHub: код и сборка.

Обратите внимание на лицензию. Она не дает вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.

Требования для установки компонента

Для установки выполните команды:

Инструкция применима к Astra Linux Special Edition (релиз Смоленск) в режиме замкнутой программной среды (ЗПС).

Создайте папку, скачайте и распакуйте актуальную версию компонента из GitHub:

Создайте системного пользователя mfa и дайте ему права на приложение:

Параметры работы компонента хранятся в файле /opt/multifactor/radius/multifactor-radius-adapter.dll.config в формате XML.

Параметры подключения к Active Directory

Для проверки первого фактора в домене применимы следующие параметры:


При включении параметра use-active-directory-user-phone компонент будет использовать телефон, записанный на вкладке General. Формат телефона может быть любым.


При включении параметра use-active-directory-mobile-user-phone компонент будет использовать телефон, записанный на вкладке Telephones в поле Mobile. Формат телефона также может быть любым.

Параметры подключения к внешнему RADIUS серверу

Для проверки первого фактора в RADIUS, например, в Network Policy Server применимы следующие параметры:

Дополнительные RADIUS атрибуты

Можно указать, какие атрибуты будет передавать компонент при успешной аутентификации, в том числе с проверкой вхождения пользователя в группу безопасности

После настройки конфигурации запустите компонент:

Статус можно проверить командой:

Журналы работы компонента находятся в папке /opt/multifactor/radius/logs , а также в системном журнале.

При размещении компонета в кластерной конфигурации придерживайтесь схемы Active/Passive или выбирайте вариант, при котором повторный запрос с клиента будет обрабатываться тем же сервером.

Для наилучшей работы с nginx или HAProxy также укажите в настройках прокси-сервера заголовок proxy_protocol.

Дополнительная информация про Active Directory

  • Linux версия адаптера пока не умеет работать с несколькими доменами, между которыми установлено доверие.
  • Для работы с Active Directory используется простая проверка подлинности пароля пользователя. Настоятельно рекомендуем использовать схему LDAPS для шифрования трафика между адаптером и доменом (на сервере AD должен быть установлен сертификат, в т.ч. самоподписанный).

How To Install FreeRADIUS on Ubuntu 20.04 LTS

Соединение между двумя сторонами (NAC-NAS или сервер аутентификации NAS) инициируется после успешного согласования на сетевом уровне путем обмена пакетами, содержащими необходимую информацию, такую ​​как идентификация NAS, номер порта аутентификации и т. Д.

Проще говоря, можно сказать, что RADIUS обеспечивает аутентификацию, авторизацию и информацию об учетной записи с сервера аутентификации устройству, запрашивающему доступ.

FreeRADIUS также обеспечивает поддержку всех важных баз данных, используемых для учетных записей, пользователей и т. Д., Включая MariaDB / MySQL, PostgreSQL, Microsoft SQL Server, Oracle Database и т. Д.

Что такое далорадиус?

daloRADIUS можно использовать для настройки параметров системы / NAS, создания новых учетных записей пользователей и управления NAS. Это единственный интерфейс, который обеспечивает полное управление пользователями как для конечных пользователей, так и для администраторов.

Почему далорадиус?

Он предоставляет современный веб-интерфейс для сервера FreeRADIUS с новейшими функциями, такими как автоматизация для конечных пользователей и администраторов, и все это в одном месте. Это упрощает сетевым администраторам управление своими сетями с любого устройства, имеющего доступ к Интернету, а конечным пользователям предоставляется возможность управлять своими учетными данными и настройками подключения.

В этом руководстве вы научитесь устанавливать FreeRADIUS на Ubuntu 20.04 LTS и использовать daloRADIUS в качестве веб-интерфейса.

Предпосылки

  • Свежий сервер Ubuntu 20.04 LTS
  • Пользователь с привилегиями sudo

Обновление вашей системы

Подключитесь к серверу как пользователь root через SSH и обновите все пакеты системы, выполнив следующую команду:

Как только ваш сервер обновлен, вы можете переходить к следующему шагу.

Установка веб-сервера Apache

Установите веб-сервер Apache и необходимые модули, выполнив следующую команду:

После завершения установки запустите службу Apache и включите ее запуск с загрузкой системы:

Установка сервера базы данных MariaDB для FreeRADIUS

Установите сервер MariaDB, выполнив следующую команду:

После завершения установки запустите службу MariaDB и включите ее запуск с загрузкой системы:

Чтобы защитить установку MariaDB, вы можете запустить приведенный ниже сценарий mysql_secure_installation, указав свой пароль root при появлении запроса. Это удалит анонимные учетные записи пользователей, отключит удаленный вход в систему root, запретит использование пустых паролей и т.д.

Вы можете проверить статус сервера MariaDB, выполнив следующую команду:

Установка PHP 8 для FreeRADIUS

Нам нужно установить PHP 8, который требуется для веб-интерфейса daloRADIUS. По умолчанию PHP 7 доступен в репозитории Ubuntu 20.04 LTS, но не PHP 8. Нам нужно будет добавить сторонний PPA, чтобы получить последнюю версию PHP.

Обновите свои репозитории, выполнив следующую команду:

После добавления PPA вы можете установить PHP 8 и другие необходимые модули, выполнив следующую команду:

Проверьте версию PHP и проверьте установку, выполнив следующую команду:

Перезагрузите Apache после завершения установки

Установка FreeRADIUS

Теперь, когда все предварительные условия выполнены, вы можете приступить к установке FreeRADIUS. По умолчанию пакет FreeRADIUS доступен в репозиториях, вы можете показать версии freeradius, доступные в вашем Ubuntu, выполнив следующую команду:

Вы получите результат, аналогичный приведенному ниже

Вы можете установить сервер FreeRADIUS, выполнив следующую команду:

Чтобы быстро проверить, что FreeRADIUS запущен и работает, мы запустим FreeRADIUS в режиме отладки.

Чтобы запустить freeRADIUS в режиме отладки, используйте следующую команду:

Результат должен выглядеть примерно так:

Вы можете увидеть строку «Готово обрабатывать запросы» внизу, что означает успешную установку FreeRADIUS.

Создание базы данных для FreeRADIUS

Теперь, когда FreeRADIUS запущен и работает, давайте создадим базу данных для FreeRADIUS. Для этого воспользуемся консолью MariaDB.

Чтобы получить доступ к консоли MariaDB, выполните следующую команду:

Введите пароль root, когда будет предложено пройти аутентификацию на сервере MariaDB.

Выполните следующую команду, чтобы создать базу данных freeRADIUS:

Предоставьте права на новую созданную базу данных, выполнив приведенный ниже запрос, заменив $ trongp @ ss своим паролем.

Перезагрузите привилегии и выйдите из консоли MariaDB, выполнив следующую команду:

После создания базы данных вам необходимо импортировать предварительно созданную схему базы данных, которая включает таблицы FreeRADIUS MySQL.

Теперь вы должны изменить файл daloradius.conf, чтобы настроить базу данных MySQL следующим образом:

Перезапустите сервис FreeRADIUS, используя следующую команду:

Установка веб-интерфейса daloRADIUS

Мы установим веб-интерфейс daloRADIUS, чтобы настроить сервер FreeRADIUS с помощью браузера. Выполните следующую команду, чтобы загрузить daloRADIUS из репозитория Github

После завершения загрузки распакуйте архив.

Переместите извлеченную папку в корневой каталог вашего сайта.

Импортируйте предварительно созданную схему базы данных в базу данных FreeRADIUS, созданную выше.

Затем установите правильные разрешения для файла конфигурации daloradius и измените разрешения для каталога установки daloradius.

Теперь вы должны изменить файл daloradius.conf, указав предпочтительные параметры конфигурации, прежде чем открывать веб-интерфейс daloRADIUS из браузера.

Перезапустите службу FreeRADIUS, используя следующую команду:

Доступ к веб-интерфейсу daloRADIUS

После входа в веб-интерфейс daloradius вы можете начать добавлять пользователей, виртуальные серверы RADIUS, типы EAP и т. Д. Вы также можете создавать новых пользователей и группы, которые будут использоваться для аутентификации пользователей с типами аутентификации EAP, доступными в FreeRADIUS.

Заключение

В этом руководстве мы узнали, как установить FreeRADIUS с веб-интерфейсом daloRADIUS на сервере Ubuntu 20.04 LTS. Далее мы узнали, как импортировать заранее созданную схему базы данных. Хотя это руководство было написано для сервера Ubuntu 20.04 LTS, оно должно работать с другими дистрибутивами Ubuntu или Debian с небольшими изменениями.

Данные о пользователе можно изменить через меню интерфейса, как это сделать показано на скриншоте:


Related posts:

Комментарии

Приветствую автора статьи! У меня появился один вопрос! сделал все как написано, все вроде получилось но веб интерфейс не открывается даже в localhost пишет Not Found

The requested URL /daloradius was not found on this server.

Apache/2.4.7 (Ubuntu) Server at 10.1.0.90 Port 80

В линуксе не очень силен если честно! в чем может быть проблема?

На какой версии ubuntu установлен daloradius?

Веб интерфейс расположен в папке /var/www/daloradius/ ?

Если да, то все должно работать, попробуйте добавить следующие строки в файл /etc/apache2/apache2.conf


Options FollowSymLinks
AllowOverride all
Require all granted

Если в браузере ввести ip сервера, у вас открывается страница приветствия apache?

Добрый день! Добавил ответ в статью.

Просто перестала появляться страница, что страница не найдена!

Добрый день! Извиняюсь за долгий ответ.

Если вместо веб интерфейса вы видите ошибку 404, откройте файл /etc/apache2/sites-available/000-default.conf

измените строку DocumentRoot /var/www/html на DocumentRoot /var/www

Добавил в статью.

У меня Радиус не хочет видеть/принимать пользователей, которые прописаны в mysql базе.
Если прописываю пользователя в файл users, то без проблем проходит, а из базы нет.
Радиус базу видит, данные считывает, но любому пользователю, который прописан в базе, отвечает:
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, length=20

Причем, если прописать пользователей в файл, неважно с == либо как у меня с :=, то все работает без проблем. Именно из базы не хочет принимать пользователей, хотя при запуске, считывает данные из базы.

Читайте также: