Настройка radius сервера linux
Необходимо хоть как-то централизовать управление большим количеством 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-mimemv 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 restartservice 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
Открываем порты в брандмауэре:
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. Копируем ссылку на архив с порталом:
С помощью скопированной ссылки загружаем архив на сервере:
Создаем каталог в рутовой папке веб-сервера:
Распаковываем скачанный архив в созданную директорию :
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 должен быть установлен сертификат, в т.ч. самоподписанный).
Соединение между двумя сторонами (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
Причем, если прописать пользователей в файл, неважно с == либо как у меня с :=, то все работает без проблем. Именно из базы не хочет принимать пользователей, хотя при запуске, считывает данные из базы.
Читайте также: