• [ GEEKHERO:2021 ]
  • Категории
  • Files 42

Воистину гений

СТАТЬЯ ИЛИ СОН?
Авторизация через Radius на MikroTiK | GEEKHERO
asitnikov 6 марта 2021 г. 17:39

Авторизация через Radius на MikroTiK

Иконка категории
В категории "Телекоммуникации"

Метки: linux, mikrotik, radius, debian, tinkerboard, логирование, daloRADIUS, routerboard


Решил тут сделать авторизацию через радиус на MikroTik, а дома как раз завалялся Asus Tinker Board на нем установлен Debian 9.12(посмотреть можно lsb_release -a).

Настройка Radius на MikroTik

/radius add address=192.168.X.X secret=xxxx service=login src-address=192.168.X.X disabled=no
/user aaa set use-radius=yes

address = 192.168.X.X  — это ip, где установлен наш радиус сервер
src-address=192.168.X.X — это ip откуда будет идти обращение на сервер

Устанавливаем FreeRadius на Debian:

apt -y install freeradius freeradius-mysql freeradius-utils

У меня подсеть на МикроТике 192.168.0.0/16,
Добавляем в /etc/freeradius/3.0/clients.conf

client 192.168.0.0/16 {
secret = xxx
shortname = Network_Devices
}

Затем, добавляем в  /etc/freeradius/3.0/dictionary

VENDOR Mikrotik 14988
BEGIN-VENDOR Mikrotik


ATTRIBUTE Mikrotik-Recv-Limit 1 integer
ATTRIBUTE Mikrotik-Xmit-Limit 2 integer
ATTRIBUTE Mikrotik-Group 3 string
ATTRIBUTE Mikrotik-Wireless-Forward 4 integer
ATTRIBUTE Mikrotik-Wireless-Skip-Dot1x 5 integer
ATTRIBUTE Mikrotik-Wireless-Enc-Algo 6 integer
ATTRIBUTE Mikrotik-Wireless-Enc-Key 7 string
ATTRIBUTE Mikrotik-Rate-Limit 8 string
ATTRIBUTE Mikrotik-Realm 9 string
ATTRIBUTE Mikrotik-Host-IP 10 ipaddr
ATTRIBUTE Mikrotik-Mark-Id 11 string
ATTRIBUTE Mikrotik-Advertise-URL 12 string
ATTRIBUTE Mikrotik-Advertise-Interval 13 integer
ATTRIBUTE Mikrotik-Recv-Limit-Gigawords 14 integer
ATTRIBUTE Mikrotik-Xmit-Limit-Gigawords 15 integer

ATTRIBUTE Mikrotik-Wireless-PSK 16 string
ATTRIBUTE Mikrotik-Total-Limit 17 integer
ATTRIBUTE Mikrotik-Total-Limit-Gigawords 18 integer
ATTRIBUTE Mikrotik-Address-List 19 string
ATTRIBUTE Mikrotik-Wireless-MPKey 20 string
ATTRIBUTE Mikrotik-Wireless-Comment 21 string
ATTRIBUTE Mikrotik-Delegated-IPv6-Pool 22 string


# MikroTik Values

VALUE Mikrotik-Wireless-Enc-Algo No-encryption 0
VALUE Mikrotik-Wireless-Enc-Algo 40-bit-WEP 1
VALUE Mikrotik-Wireless-Enc-Algo 104-bit-WEP 2
VALUE Mikrotik-Wireless-Enc-Algo AES-CCM 3
VALUE Mikrotik-Wireless-Enc-Algo TKIP 4


END-VENDOR Mikrotik

Теперь создаем пользователя в etc/freeradius/3.0/users:

"test" Cleartext-Password := "test123"
MikroTik-Group := "read"

Перезагружаем сервис Freeradius

/etc/init.d/freeradius restart

Посмотреть статус Freeradius

/etc/init.d/freeradius status

Но так как нигде нельзя посмотреть кто и куда заходил, мне посоветовали попробовать Daloradius -это веб-инструмент управления RADIUS, написанный на PHP.

Установим с начала сервер базы данных(MariaDB)

apt -y install mariadb-server mariadb-client

Вводим:

mysql_secure_installation

Везде прожмакиваем «YES»

После установки создаем базу данных и пользователя для FreeRADIUS / daloRADIUS.

mysql -u root -p

CREATE DATABASE radius;

GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "Указываем пароль для радиуса";

FLUSH PRIVILEGES;

\q

 

Убедиться , что пользователь базы данных радиуса может получить доступ к базе данных.

mysql -u radius -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 692
Server version: 10.1.44-MariaDB-0+deb9u1 Debian 9.11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| radius |
+--------------------+
2 rows in set (0.00 sec)


Устанавливаем веб-сервера Apache2 и PHP

apt -y install apache2

apt -y install php libapache2-mod-php php-{gd,common,mail,mail-mime,mysql,pear,mbstring,xml,curl}

 

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

php -v
PHP 7.0.33-0+deb9u7 (cli) (built: Feb 16 2020 15:11:40) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.33-0+deb9u7, Copyright (c) 1999-2017, by Zend Technologies

Настройка FreeRADIUS на Debian 10

Чтобы настроить FreeRADIUS на использование MariaDB, выполним следующие действия.

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

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

2 – настройка радиус:

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

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

Сконфигурируем модуль SQL, изменив параметры подключения к базе данных в соответствии со средой:

nano /etc/freeradius/3.0/mods-enabled/sql

 

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

 

sql {
driver = "rlm_sql_mysql"
dialect = "mysql"

# Connection info:
server = "localhost"
port = 3306

login = "radius"
password = "Указываем пароль для радиуса"

# Database table configuration for everything except Oracle
radius_db = "radius"
}
# Set to ‘yes’ to read radius clients from the database (‘nas’ table)
# Clients will ONLY be read on server startup.

read_clients = yes

# Table to keep radius client info

client_table = "nas"

 

Перезапускаем сервис радиус:

systemctl restart freeradius
 

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

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

Загружаем архив релиза daloradius с Github.

apt -y install wget unzip

cd /usr/src/

wget https://github.com/lirantal/daloradius/archive/master.zip

unzip master.zip

mv daloradius-master/ daloradius

cd daloradius

 

Импорт таблиц Daloradius MySQL

mysql -u root -p radius < contrib/db/fr2-mysql-daloradius-and-freeradius.sql

mysql -u root -p radius < contrib/db/mysql-daloradius.sql

Переместить папку daloradius в путь в /var/www/html

cd ..

mv daloradius /var/www/html/

 

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

chown -R www-data:www-data /var/www/html/daloradius/

chmod 664 /var/www/html/daloradius/library/daloradius.conf.php

 

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

nano /var/www/html/daloradius/library/daloradius.conf.php

 

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

$configValues['CONFIG_DB_HOST'] = 'localhost';

$configValues['CONFIG_DB_PORT'] = '3306';

$configValues['CONFIG_DB_USER'] = 'radius';

$configValues['CONFIG_DB_PASS'] = 'Strong_Radius_Password';

$configValues['CONFIG_DB_NAME'] = 'radius';

 

Чтобы убедиться, что все работает, перезапустим сервисы radius и apache2.

systemctl restart freeradius.service apache2

 

Доступ к Radius-server через веб-интерфейс Daloradius

Веб-интерфейс управления daloRADIUS доступен по адресу http://server_ip_или_hostname/daloradius.

Данные для входа по умолчанию:

Username: administrator
Password: radius

Была ошибка при входе "ошибка 500 Internal Server Error" при попытке отобразить http://192.168.1.20/daloradius/dologin.php

PHP Fatal error: Uncaught Error: Class ‘DB’ not found

Выполнил команду

pear install DB

И это решило проблему.

 

Добавляем MikroTik-Group в таблицу SQL

Войдите на ваш сервер freeRADIUS с пользователем root.

Теперь войдите на ваш сервер MariaDB и выберите базу данных radius.

mysql -uroot -pXXXXXX radius

Чтобы отобразить доступные столбцы в таблице radgroupreply, введите следующую команду

MariaDB [radius]> show columns from radgroupreply;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| groupname | varchar(64) | NO | MUL | | |
| attribute | varchar(64) | NO | | | |
| op | char(2) | NO | | = | |
| value | varchar(253) | NO | | | |
+-----------+------------------+------+-----+---------+----------------+

Чтобы создать группу full,write,read введите команду ниже.

 

MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values ("fullaccess","Mikrotik-Group",":=","full");

MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values ("writeaccess","Mikrotik-Group",":=","write");

MariaDB [radius]> insert into radgroupreply (groupname,attribute,op,value) values ("readaccess","Mikrotik-Group",":=","read");

 

Чтобы отобразить все записи в таблице radgroupreply, введите команду.

MariaDB [radius]> select * from radgroupreply;
+----+-------------+----------------+----+-------+
| id | groupname | attribute | op | value |
+----+-------------+----------------+----+-------+
| 1 | fullaccess | Mikrotik-Group | := | full |
| 2 | writeaccess | Mikrotik-Group | := | write |
| 3 | readaccess | Mikrotik-Group | := | read |
+----+-------------+----------------+----+-------+

 

Три группы с атрибутом ответа были успешно созданы

Вставьте пользователя freeRADIUS в таблицу Radcheck

MariaDB [radius]> show columns from radcheck;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(64) | NO | MUL | | |
| attribute | varchar(64) | NO | | | |
| op | char(2) | NO | | == | |
| value | varchar(253) | NO | | | |
+-----------+------------------+------+-----+---------+----------------+

 

Чтобы вставить пользователя bob, введите следующую команду.

 

MariaDB [radius]> insert into radcheck (username,attribute,op,value) values ("bob","Cleartext-Password",":=","passme");

 

Чтобы отобразить все записи в таблице radcheck, введите следующую команду.

MariaDB [radius]> select * from radcheck;
+—-+———-+——————–+—-+——–+
| id | username | attribute          | op | value  |
+—-+———-+——————–+—-+——–+
|  2 | bob      | Cleartext-Password | := | passme |


Добавление пользователя в группу

MariaDB [radius]> show columns from radusergroup;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| username | varchar(64) | NO | MUL | | |
| groupname | varchar(64) | NO | | | |
| priority | int(11) | NO | | 1 | |
+-----------+-------------+------+-----+---------+-------+

Чтобы отобразить пользователя bob в группу fullaccess, введите следующую команду

MariaDB [radius]> insert into radusergroup (username,groupname,priority) values ("bob","fullaccess",10);

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

select * from radusergroup;
MariaDB [radius]> select * from radusergroup;
+———-+————-+———-+
| username | groupname   | priority |
+———-+————-+———-+
| bob      | fullaccess  |       10 |

Добавление пользователя в группу завершено.

PS. Полезная информация и ссылочки
Настройка радиуса, ссылка хабр, доп ссылка, ссылка 2, ссылка 3
Настройка FreeRADIUS и Daloradius, ссылка 2
Добавление пользователя в Daloradius, ссылка 2
Проблема с SQL, ссылка 2
Полезная презентация
PhpMyadmin
Переустановк

Поделиться записью


Похожие записи:

Card image cap
MikroTik 3G 4G LTE: Мобильный роутер – из LTE в PPP

В данной статье хотелось бы затронуть мобильную тематику в популярной RouterOS, а именно подключение 3G/4G(LTE) модемов к роутерам компании MikroTik

Продолжить Чтение...
Card image cap
Запуск Django сайта на nginx + Gunicorn + SSL

Развернутая инструкция по настройке nginx, Gunicorn и SSL для вашего Django проекта в продакшене.

Продолжить Чтение...
Card image cap
Собираем кластер на ESXI

Кратчайшая минималистичная инструкция по сборке кластера на ESXI и немного про резервирование

Продолжить Чтение...
Категории
Обучение и подготовка (3)
Linux (15)
Телекоммуникации (12)
Программирование (2)
Обзоры на технику (1)
Виртуализация (1)
Web-разработка (5)
Администрирование Windows (0)

Последние записи
Быстро подключаемся к серверам по SSH из терминала
28 Фев 2023
Flask в Docker+Kuberenetes
28 Авг 2022
Готовим образ Docker для Flask приложения
26 Авг 2022

Популярные метки
Copyright 2019-2021  
Обратная связь