Всем привет!
Вторая часть материала по настройке FreeRADIUS сервера
Первая часть материала рассказала, как настроить RADIUS сервер для авторизации на WI-FI точках доступа с хранением пользователей в текстовом файле.
В этой части мы настроим связку FreeRADIUS с базой данных MySQL, установим NGINX, PHP и web-интерфейс для добавления-удаления пользователей.
Итак мы имеем настроенный FeeRADIUS с хранением пользователей в текстовом файле users
Считаем, что на сервере больше ничего не установлено, пойдем с конца и установим в таком порядке:
- NGINX — как WEB-сервер
- PHP с PHP-FPM — сам PHP и CGI модуль для обработки PHP в NGINX
- MySQL — база данных в которой будем хранить пользователей RADIUS
- DaloRADIUS — WEB-интерфейс к базе данных RADIUS
Как и в прошлой статье все будем ставить через порты FreeBSD
Обновляем порты:
# portsnap fetch update
Ставим NGINX:
# cd /usr/ports/www/nginx # make install clen
В конфиге в принципе оставляем все по умолчанию, я лично убираю поддержку IPv6 и модули проксирования для почты
Т.к. DaloRADIUS давно не разрабатывается, в PHP7.2 мне не удалось его запустить, т.к. синтаксис языка изменился, ковыряться в исходниках желания у меня не было, поэтому ставим PHP версии 5.6:
# cd /usr/ports/lang/php56 # make install clean
В опциях оставляем все по умолчанию, я снимаю только поддержку IPv6
Ставим модули PHP:
# cd /usr/ports/lang/php56-extension # make install clean
В опциях указываем поддержку
[X] CURL
[X] GD
[X] MySQLi
[X] SESSION
[X] GD
[X] MBSTRING
Ставим еще модуль для PHP:
# cd /usr/ports/databases/pear-DB # make install clean
Настроим PHP:
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Укажем нашу timezone (указываем свою:))
# vi /usr/local/etc/php.ini date.timezone = Europe/Moscow
Разрешаем запуск php-fpm:
# echo php_fpm_enable=\"YES\" >> /etc/rc.conf
Стартуем php_fpm:
# /usr/local/etc/rc.d/php-fpm start
Проверим:
# sockstat | grep 9000 www php-fpm 11229 0 tcp4 127.0.0.1:9000 *:* www php-fpm 11228 0 tcp4 127.0.0.1:9000 *:* root php-fpm 11227 8 tcp4 127.0.0.1:9000 *:*
Настроим NGINX и создадим конфигурацию виртуального WEB-сервера для обслуживания DaloRADIUS:
Добавим в конфигурационный файл NGINX информацию откуда брать дополнительные конфигурации хостов:
# vi /usr/local/etc/nginx/nginx.conf В САМОМ КОНЦЕ ПЕРЕД ЗАКРЫВАЮЩЕЙ СКОБКОЙ ПИШЕМ include /usr/local/etc/nginx/conf.d/*.conf;
Теперь NGINX будет брать дополнительные конфигурации из директории usr/local/etc/nginx/conf.d/ с расширением .conf, на мой взгляд так удобней нежели писать все хосты в один nginx.conf, один конфиг — один хост.
Создаем директорию для конфигураций:
# mkdir /usr/local/etc/nginx/conf.d
Создаем файл конфигурации:
# vi /usr/local/etc/nginx/conf.d/freeradius.conf
В который пишем примерно следующее, вам собственно только имя сервера поменять (MYNAME) придется, в остальном конфиг рабочий:
server { listen 80; server_name radius.MYNAME.ru; root /usr/local/www/daloradius/; error_log /var/log/nginx/daloradius/error.log info; access_log /var/log/nginx/daloradius/access.log; location / { index index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Создадим директорию для лог файлов нашего виртуального хоста:
# mkdir /var/log/nginx/daloradius/
Небольшое отступление, для следующего шага нам необходим установленный unzip (экстрактор zip файлов) в системе, проверьте пожалуйста вывод команды unzip
Если не найдено, то надо поставить:
# cd /usr/ports/archivers/zip && make install clean
Создадим временную директорию в своем профиле, скачаем DaloRADIUS, распакуем, переименуем, перенесем в нужное место и удалим хвосты:
# mkdir ~username/tmp # cd ~username/tmp # fetch https://github.com/lirantal/daloradius/archive/master.zip # unzip master.zip # mv daloradius-master/ daloradius # mv daloradius /usr/local/www # chown -R www:www /usr/local/www/daloradius # cd ../ && rm -rf tmp
Проверим корректность конфигурации NGINX:
# nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Разрешим и запустим NGINX:
# echo nginx_enable=\"YES\" >> /etc/rc.conf # /usr/local/etc/rc.d/nginx start
Ставим MySQL:
# cd /usr/ports/databases/mysql57-server # make install conf
Разрешаем запуск MySQL и стартуем:
# echo mysql_enable=\"YES\" >> /etc/rc.conf # /usr/local/etc/rc.d/mysql-server start
В версии MySQL 5.7 для пользователя root создается рандомный пароль, который можно посмотреть:
# less /root/.mysql_secret
Создаем базу radius и пользователя radius с паролем radiuspassword в MySQL:
# mysql -u root -p CREATE DATABASE radius; GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "radiuspassword"; FLUSH PRIVILEGES; \q
Импортируем схемы базы данных:
# mysql -u radius radius -p < /usr/local/etc/raddb/mods-config/sql/main/mysql/schema.sql # mysql -u radius radius -p < /usr/local/www/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql # mysql -u radius radius -p < /usr/local/www/daloradius/contrib/db/mysql-daloradius.sql
Связываем FreeRADIUS с MySQL:
# ln -s /usr/local/etc/raddb/mods-available/sql /usr/local/etc/raddb/mods-enabled/
# vi /usr/local/etc/raddb/mods-enabled/sql driver = "rlm_sql_mysql" dialect = "mysql" server = "localhost" port = 3306 login = "radius" password = "radiuspassword" radius_db = "radius" read_clients = yes
Передергиваем FreeRADIUS:
# /usr/local/etc/rc.d/radiusd restart
Проверяем корректность просмотром лога:
# tail -n 1 /var/log/radius.log Thu Sep 20 16:14:32 2018 : Info: Ready to process requests
Связываем DaloRADIUS с базой данных:
# vi /usr/local/www/daloradius/library/daloradius.conf.php $configValues['CONFIG_DB_HOST'] = 'localhost'; $configValues['CONFIG_DB_PORT'] = '3306'; $configValues['CONFIG_DB_USER'] = 'radius'; $configValues['CONFIG_DB_PASS'] = 'radiuspassword'; $configValues['CONFIG_DB_NAME'] = 'radius';
Заходим по адресу http://radius.MYNAME.ru
Авторизуемся:
login: Administrator
password: radius
В CONFIG—>Language Settings можно установить русский язык
Идем в Management добавляем пользователя и пробуем авторизоваться
Ну собственно все:)
P.S.
На мой взгляд решение ставить DaloRADIUS так себе:)
Во первых проект заброшен, во вторых для меня он избыточен.
С моим количеством пользователей, я спокойно могу обойтись хранением пользователей в файле, но с наличием базы и фронтенда к ней, появляется возможность легко делегировать управление пользователями любому лицу. Будет время напишу свою мини-админку.
UPDATE 17.10.2019 Проект Daloradius ожил, выкатили новый билд version 1.1-2 / 08 Aug 2019
В поставке с ним идут обновленные схемы sql contrib/db/mysql-daloradius.sql при установке этой версии используйте эту схему для MySQL (иначе будут ошибки при использовании схем из поставок FreeRadius3)