Повторение чужих шагов чтобы понять принцип работы и после уже на основе приобретенного опыта иметь свой собственный. Только так я могу учиться чему-то новому. Зачем с головой уходить в то что уже другими помногу раз используется, проще взять что-то за основу и использовать согласно своим задачам. Вот и сейчас выдалось свободное время и я решил, а почему бы не попробовать посмотреть что такое Radius — сервис, на сколько я понял это сервис на который можно завязать авторизацию на различных устройствах посредством предопределенных учетных записей и прав. Вот и попробую. Только сперва разберу как FreeRadius установить в системе вокруг которой я строю все сервисы: Ubuntu Trusty 14.04.5 Server amd64
Характеристики данной виртуальной машины: CPU = 1, RAM = 1Gb, HDD = 20Gb
ekzorchik@srv-server:~$ uname -a && lsb_release -a
Linux srv-server 4.4.0-57-generic #78~14.04.1-Ubuntu SMP Sat Dec 10 00:14:47 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
Не забываю указать настройки Локали:
ekzorchik@srv-server:~$ sudo nano /etc/profile
export LC_ALL="en_US.UTF-8"
ekzorchik@srv-server:~$ source /etc/profile
Для работы сервиса FreeRadius необходимы следующие пакеты, это Apache2 & MySQL & PHP.
ekzorchik@srv-server:~$ sudo apt-get install apache2 mysql-server php5 libapache2-mod-php5 php5-mysql php5-gd php-pear php-db -y
New password for the MySQL "root" user: 712mbddr@
Repeat password for the MySQL "root" user: 712mbddr@
ekzorchik@srv-server:~$ sudo nano /etc/apache2/apache2.conf
ServerName srv-server
Сам пакет (FreeRadius) вокруг которого строится заметка я буду устанавливать из дефолтных репозитариев:
ekzorchik@srv-server:~$ apt-cache show freeradius | grep Version
Version: 2.1.12+dfsg-1.2ubuntu8.1
Version: 2.1.12+dfsg-1.2ubuntu8
ekzorchik@srv-server:~$ sudo apt-get install freeradius -y
После того, как пакет установлен, в автоматическом режиме запускается демон слушающий дефолтный порт (udp/1812):
ekzorchik@srv-server:~$ sudo netstat -tulpn | grep :1812
udp 0 0 127.0.0.1:18120 0.0.0.0:* 15348/freeradius
udp 0 0 0.0.0.0:1812 0.0.0.0:* 15348/freeradius
Т.к. все настройки FreeRadius удобнее хранить в базе, то вот под это дело и создаю базу данных и специализированного пользователя:
ekzorchik@srv-server:~$ mysql -u root -p712mbddr@
mysql> create database dbradius character set utf8 collate utf8_general_ci;
mysql> grant all on dbradius.* to radius@localhost identified by "612mbddr@";
mysql> flush privileges;
mysql> exit;
Для связки FreeRadius и MySQL нужен пакет ориентированный на сопряжение, ставлю его (freeradius-mysql) также из дефолтных репозитариев релиза Ubuntu Trusty:
ekzorchik@srv-server:~$ sudo apt-get install freeradius-mysql -y
ekzorchik@srv-server:~$ sudo bash -c "mysql -u root -p712mbddr@ dbradius < /etc/freeradius/sql/mysql/schema.sql"
ekzorchik@srv-server:~$ sudo bash -c "mysql -u root -p712mbddr@ dbradius < /etc/freeradius/sql/mysql/nas.sql"
Чтобы оценить, что FreeRadius работает, делаю как делаю в примерах интернета, а именно добавляю в таблицу radcheck такие атрибуты, как: UserName,Attribute,Value
ekzorchik@srv-server:~$ mysql -u root -p712mbddr@
mysql> use dbradius;
mysql> insert into radcheck (UserName,Attribute,Value) VALUES ('sqltest','Password','testpwd');
mysql> exit
где
- insert → для добавления данных в таблицу
- values → добавление значений
Теперь нужно объяснить сервису FreeRadius все настройки брать из базы данных:
ekzorchik@srv-server:~$ sudo nano /etc/freeradius/sql.conf
sql {
database = "mysql"
driver = "rlm_sql_${database}"
server = "localhost"
port = 3306
login = "radius"
password = "612mbddr@"
radius_db = "dbradius"
readclients = yes
}
Теперь приводим настройки файла сайта FreeRadius к виду:
ekzorchik@srv-server:~$ sudo nano /etc/freeradius/sites-enabled/default
# See "Authorization Queries" in sql.conf
sql
# See "Accounting queries" in sql.conf
sql
# See "Simultaneous Use Checking Queries" in sql.conf
sql
# See "Authentication Logging Queries" in sql.conf
sql
Далее правим конфигурационный файл freeradius и включаем поддержку mysql:
ekzorchik@srv-server:~$ sudo nano +700 /etc/freeradius/radiusd.conf
$INCLUDE sql.conf
Теперь протестируем настройки сервера, для этого понадобится два консольных соединения с сервером или два окна окна терминала: В первом следует остановить демон FreeRadius и после запустить в режим отладки, а уже во втором будем посылать данные на обработку сервису дабы в первом консоли пронаблюдать как изменяется поведение сервиса.
Окно №1:
ekzorchik@srv-server:~$ sudo service freeradius stop
ekzorchik@srv-server:~$ sudo freeradius -X mode
Окно №2:
Вывод должен быть таким, как ниже.
ekzorchik@srv-server:~$ radtest sqltest testpwd localhost 18128 testing123
Sending Access-Request of id 22 to 127.0.0.1 port 1812
User-Name = "sqltest"
User-Password = "testpwd"
NAS-IP-Address = 127.0.1.1
NAS-Port = 18128
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=22, length=20
Вывод без ошибок и статус Access-Accept.
Чтобы подключать клиентов/устройства следует изменять файл: /etc/freeradius/clients.conf
ekzorchik@srv-server:~$ sudo service freeradius start
ekzorchik@srv-server:~$ sudo nano /etc/freeradius/clients.conf
client 192.168.1.0/24 {
secret<TAB><TAB>= secretpass
shortname<TAB><TAB>= testclient
nastype<TAB><TAB> = testdevice
}
Теперь обернем FreeRadius Web—интерфейсом DaloRadius, не обязательно для тех кто любит управлять через консоль:
ekzorchik@srv-server:~$ wget https://downloads.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
ekzorchik@srv-server:~$ tar xfz daloradius-0.9-9.tar.gz
ekzorchik@srv-server:~$ sudo mv daloradius-0.9-9 /var/www/html/daloradius
ekzorchik@srv-server:~$ mysql -u root -p712mbddr@ dbradius < /var/www/html/daloradius/contrib/db/mysql-daloradius.sql
Создаю свой файл конфигурации описывающий доступ к панели Администрирования:
ekzorchik@srv-server:~$ sudo unlink /etc/apache2/sites-available/000-default.conf
ekzorchik@srv-server:~$ sudo unlink /etc/apache2/sites-available/default-ssl.conf
ekzorchik@srv-server:~$ sudo unlink /etc/apache2/sites-enabled/000-default.conf
ekzorchik@srv-server:~$ sudo nano /etc/apache2/sites-available/daloradius.conf
<VirtualHost *:80>
DocumentRoot /var/www/html
Alias /daloradius /var/www/html/daloradius/
<Directory /var/www/html/daloradius/>
Options None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
ekzorchik@srv-server:~$ sudo a2ensite daloradius.conf
Enabling site daloradius.
To activate the new configuration, you need to run:
service apache2 reload
ekzorchik@srv-server:~$ sudo service apache2 reload
Затем правлю конфигурационный файл веб-интерфейса: — /var/www/html/daloradius/library/daloradius.conf.php
ekzorchik@srv-server:~$ sudo nano /var/www/html/daloradius/library/daloradius.conf.php
$configValues['CONFIG_DB_PASS'] = '712mbddr@';
$configValues['CONFIG_DB_NAME'] = 'dbradius';
В заключение не забываю поправить права доступа к каталогу Daloraius чтобы он имел такие же права с какими работает сервис apache2:
ekzorchik@srv-server:~$ sudo chown -R www-data:www-data /var/www/html/daloradius/
Стандартные логин и пароль к Web-интерфейсу Daloradius → http://IP&DNS/daloradius:
- Логин — administrator
- Пароль — radius
И нажимаю на Login и вот я внутри Web-панели администрирования собственным FreeRadius сервером:
Задача выполнена, я просто повторил инструкцию из интернета, но для повторения то же нужны определенные знания.
Но если хотим изменить на привычный интерфейс, правда советую лучше разбираться с англоязычным интерфейсом чем с кривым русским, то
Изменяем язык:
Config — Global Settings — Language Settings
Primary Language — изменяем English на Russian и нажимаем Apply
В дальнейших заметках я расскажу, как настроить аутентификацию через данный Radius сервис на различных устройствах, а пока на этом все, с уважением автор блога Олло Александр aka ekzorchik.