Оглавление
Установка и настройка Freeradius. 1
Установка и настройка СУБД.. 3
Настройка Freeradius. 4
Установка daloRADIUS. 5
Создание VLAN для аттрибута reply. 7
Настройка 802.1x на коммутаторе Cisco. Аутентификация по мак адресу на порту. 12
Настройка на коммутаторе (H3C S5170-54S-PWR-EI). 15
Настройка интерфейса на аутентификацию по мак адресу. 15
Проверка подключения коммутатора к радиус серверу. 16
Литература: 19
Установка и настройка Freeradius
Отключаем Firewall (по умолчанию он отключен). Потом можно включить и настроить
Отключаем Selinux
nano /etc/selinux/config
Все заремаркируем и вставим строку
SELINUX=disabled
Скачиваем пакет freeradius-server-3.2.3.tar.gz
Распаковываем tar –xzvf freeradius-server-3.2.3.tar.gz
Заходим в директорию freeradius-server-3.2.3 и устанавливаем
Можно назначить любую рабочую директорию в опциях ./configure
./configure
./make
./make install
Добавить пакет freeradius-utils (если не установлен)
Рабочая директория для Freeradius будет /usr/local/etc/raddb
Файлы настройки для радиуса
/usr/local/etc/raddb/radius.conf
/usr/local/etc/raddb/clients.conf
/usr/local/etc/raddb/users
/usr/local/etc/raddb/mods-available/sql
Для проверки радиус-сервера надо запустить его в режиме отладки:
Radiusd -X
Если ошибок нет то можно радиус поставить в загрузку
Systemctl enable radiusd
Или установить вручную:
ln –s /usr/lib/systemd/system/radiusd.service /etc/systemd/system/multi-user.target.wants/radius.service
Файл radius.service выглядит так :
[Unit]
Description=FreeRADIUS high performance RADIUS server.
After=syslog.target network-online.target ipa.service dirsrv.target mariadb.service
[Service]
Type=forking
PIDFile=/usr/local/var/run/radiusd/radiusd.pid
ExecStartPre=-/bin/chown -R radiusd.radiusd /run/radiusd
ExecStartPre=/usr/local/sbin/radiusd -C
ExecStart=/usr/local/sbin/radiusd -d /usr/local/etc/raddb
ExecReload=/usr/local/sbin/radiusd -C
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Установка и настройка СУБД
Устанавливаем MariaDB и модуль mysql для Freeradius:
yum install mariadb-server freeradius-mysql
Разрешаем автозапуск и запускаем MariaDB:
systemctl enable mariadb --now
Создаем пароль для учетной записи mysql-root:
mysqladmin -u root password
Заходим в оболочку mysql:
mysql -uroot -p
Создаем базу данных для freeradius:
> CREATE DATABASE radius DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* данной командой мы создадим базу radius.
Создаем пользователя и даем ему права на созданную базу:
> GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY 'radius123';
* в данном примере мы создали пользователя radius, которому можно подключаться к СУБД с локального сервера; выдали права на любые действия с базой radius; в качестве пароля задали radius123.
Отключаемся от mysql:
> \q
Импортируем схему для базы данных:
mysql -u root -p radius </usr/local/etc/raddb/mods-config/sql/main/mysql/schema.sql
* вводим пароль для пользователя mysql-root.
Создадим первого пользователя:
mysql -u root -p -e "INSERT INTO radius.radcheck (username, attribute, op, value) VALUES ('test', 'Cleartext-Password', ':=', 'test123');"
Настройка Freeradius
Разрешаем модуль sql дляfreeradius:
ln -s /usr/local/etc/raddb/mods-available/sql /usr/local/etc/raddb/mods-enabled/
Открываем его на редактирование:
nano /usr/local/etc/raddb/mods-available/sql
Редактируем следующее:
...
driver = "rlm_sql_mysql"
...
dialect = "mysql"
...
Снимаем комментарии и также редактируем:
server = "localhost"
port = 3306
login = "radius"
password = "radius123"
Перезапускаемfreeradius:
systemctl restart radiusd
Проверяем:
radtest test test123 localhost 1218 testing123
Если авторизация пройдет успешно, мы должны увидеть «Access-Accept»:
...
rad_recv: Access-Accept packet from ...
...
Установка daloRADIUS
Переходим на страницу последнего релиза daloRADIUS. Копируем ссылку на архив с порталом:
С помощью скопированной ссылки загружаем архив на сервере:
wget https://github.com/lirantal/daloradius/archive/1.1-2.tar.gz
Создаем каталог в рутовой папке веб-сервера:
mkdir /usr/share/nginx/html/daloradius
Распаковываем скачанный архив в созданную директорию :
tar zxvf 1.1-2.tar.gz -C /usr/share/nginx/html/daloradius --strip-components 1
Открываем конфигурационный файл daloradius:
nano /usr/share/nginx/html/daloradius/library/daloradius.conf.php
Правим настройки для подключения к базе radius:
...
$configValues['CONFIG_DB_ENGINE'] = 'mysqli';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'radius123';
$configValues['CONFIG_DB_NAME'] = 'radius';
...
Вносим изменения в базу 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
Снова запускаем браузер и переходим по адресу http://<IP-адрес сервера freeradius>/daloradius — мы увидим страницу для входа в систему. Вводим пользователя administrator и пароль radius:
Ошибки и исправление:
При введении мак адреса сплошной строкой может появится ошибка
Типа инвалид мак адрес: Исправляется это в файле -
/usr/share/nginx/html/daloradius/mng-new.php
if (filter_var($macaddress, FILTER_VALIDATE_MAC)) {
на:
if (true) {
Создание VLAN для аттрибута reply
Коммутатор отправляет на сервер радиус запрос , в котором содержится мак адрес клиента. Радиус должен выдать на этот запрос ответный пакет в котором должен содержаться VLAN для пользователя. Благодаря этому ответу , порт пользователя переходит в соответствующий VLAN или блокирует порт если мак адреса нет в базе.
Есть два пути как сделать reply аттрибуты с соответствующим вланом.
1. Создать в самой базе соответствующий VLAN с аттрибутами а потом просто копировать данный профиль для создания других VLAN.
Tunnel-Type = 13,
Tunnel-Medium-Type = 6,
Tunnel-Private-Group-Id = "506"
Входим в базу: mysql –uroot –p radius
INSERT INTO radgroupreply (groupname, attribute, value, op)
VALUES ('vlan506', 'Tunnel-Type', '13', ':=');
INSERT INTO radgroupreply (groupname, attribute, value, op)
VALUES ('vlan506', 'Tunnel-Medium-Type', '6', ':=');
INSERT INTO radgroupreply (groupname, attribute, value, op)
VALUES ('vlan506', 'Tunnel-Private-Group-Id', '506', ':=');
В дало радиусе появится профиль vlan506 и соответствующий VLAN 506
2. Можно создать профиль с соответствующим вланом прямо в далорадиусе
New Profile
Выбираем вендора – dictionary.rfc2868
Аттрибут Tunnel-Type и жмем Add Attribute
Value – 13 , op := , Target – reply
Еще добавляем аттрибут
В аттрибутах в выпадающем окне находим Tunnel-Medium-Type и жмем Add attribute
Ставим 6
Еще добавляем аттрибут
'Tunnel-Private-Group-Id'
И ставим тот влан который должен отдавать радиус ( у меня 506 )
Нажимаем Apply
Это мы создали профиль , который будем при запросе от клиента выдавать ему 506 влан на порт
Создаем нового пользователя и прикрепляем ему профиль VLAN506
У меня пользователи проходят аутентификацию по мак адресу
Запись мак адреса сплошная – xxxxxxxxxxxx
Пример : 047c-166f-e819 исходный , запись в далорадиусе 047c166fe819
Настройка 802.1x на коммутаторе Cisco. Аутентификация по мак адресу на порту.
aaa new-model
!
aaa authentication login default local
aaa authentication dot1x default group radius
aaa authorization exec default local
aaa authorization network default group radius
aaa accounting dot1x default start-stop group radius
radius server radius-cisco
address ipv4 172.20.3.241 auth-port 1812 acct-port 1813
timeout 2
retransmit 1
key <removed>
dot1x system-auth-control
ip radius source-interface Vlan203
Проверка
SWS_RB6_1#test aaa group radius test test123 new-code
User successfully authenticated
USER ATTRIBUTES
tunnel-type 0 13 [vlan]
tunnel-medium-type 0 6 [ALL_802]
tunnel-private-group 0 "214"
Настройка порта
interface GigabitEthernet0/2
switchport mode access
authentication event fail action authorize vlan 100
authentication event server dead action authorize vlan 100
authentication event no-response action authorize vlan 100
authentication port-control auto
authentication periodic
authentication timer reauthenticate server
authentication violation protect
dot1x pae authenticator
dot1x timeout quiet-period 5
dot1x timeout server-timeout 10
dot1x timeout tx-period 5
mab
mab – для станций с мак адресом
Примечание: Для войс влана на порт приходится добавлять войс влан
Switchport voice vlan 220
Проверка на коммутаторе
SWS_RB5_1(config)#do sho authentication sessions interface gi4/0/16
Interface MAC Address Method Domain Status Fg Session ID
--------------------------------------------------------------------------------------------
Gi4/0/16 d0c2.4eca.d815 mab DATA Auth AC14036900000373D7029A10
Key to Session Events Blocked Status Flags:
A - Applying Policy (multi-line status for details)
D - Awaiting Deletion
F - Final Removal in progress
I - Awaiting IIF ID allocation
P - Pushed Session
R - Removing User Profile (multi-line status for details)
U - Applying User Profile (multi-line status for details)
X - Unknown Blocker
Runnable methods list:
Handle Priority Name
8 0 dot1xSup
7 5 dot1x
9 10 mab
10 15 webauth
SWS_RB5_1#sh mac address-table interface gi4/0/16
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
221 d0c2.4eca.d815 STATIC Gi4/0/16
Total Mac Addresses for this criterion: 1
SWS_RB5_1(config)#do Clear authentication sessions interface gi1/0/16
Очистка сессии на порту – требуется если не установилась сесия с первого раза
Отладка на коммутаторе:
IT_OTDEL#sh debug
General OS:
AAA Authentication debugging is on
AAA Authorization debugging is on
Настройка на коммутаторе (H3C S5170-54S-PWR-EI)
radius scheme system
user-name-format without-domain
#
mac-authentication
mac-authentication timer offline-detect 180
mac-authentication timer quiet 180
mac-authentication domain radius-h3c
radius scheme 2000
primary authentication 172.27.5.10
primary accounting 172.27.5.10
key authentication cipher $c$3$2YubkP7OjcWG8zI+6P+8/+O06va0sdF+509pYAws
key accounting cipher $c$3$TXm7reOcOC3FtY8P2YbrjiIfGjS25aIuscA+qYK2
user-name-format without-domain
#
domain radius-h3c
authentication lan-access radius-scheme 2000
authorization lan-access radius-scheme 2000
accounting lan-access radius-scheme 2000
Настройка интерфейса на аутентификацию по мак адресу
interface GigabitEthernet1/0/36
poe enable
mac-authentication
#
Проверка подключения коммутатора к радиус серверу.
Проверку надо делать из непривилегированного режима (не system-view)
Соответственно пользователь test с паролем test123 должны быть заведены на радиусе-сервере в базе mysql.
И общий пароль (preshare key ) между коммутатором и радиус сервером, на коммутаторе строки
Прописаны в - radius scheme 2000, на радиус- сервере в файле /usr/local/etc/raddb/clients.conf
test-aaa user test password test123 radius-scheme 2000 trace
Sent a RADIUS authentication request.
Server IP : 172.27.5.10
Source IP : 172.27.5.3
VPN instance : N/A
Server port : 1812
Packet type : Authentication request
Packet length: 133 bytes
Packet ID : 0
Attribute list:
[User-Name(1)] [6] [test]
[CHAP-Password(3)] [19] [******]
[CHAP-Challenge(60)] [18] [******]
[NAS-IP-Address(4)] [6] [172.27.5.3]
[Service-Type(6)] [6] [2] [Framed-User]
[Framed-Protocol(7)] [6] [1] [PPP]
[NAS-Identifier(32)] [14] [STACK-SWITCH]
[NAS-Port-Type(61)] [6] [15] [Ethernet]
[Acct-Session-Id(44)] [32] [202404080604470000000108100000]
Received a RADIUS authentication response.
Server IP : 172.27.5.10
Source IP : 172.27.5.3
VPN instance : N/A
Server port : 1812
Packet type : Access-Accept
Packet length: 32 bytes
Packet ID : 0
Attribute list:
[Framed-Protocol(7)] [6] [1] [PPP]
[Framed-Compression(13)] [6] [1] [Van-Jacobson-TCP-IP]
Sent a RADIUS start-accounting request.
Server IP : 172.27.5.10
Source IP : 172.27.5.3
VPN instance : N/A
Server port : 1813
Packet type : Start-accounting request
Packet length: 84 bytes
Packet ID : 0
Attribute list:
[User-Name(1)] [6] [test]
[Acct-Status-Type(40)] [6] [1] [Start]
[NAS-IP-Address(4)] [6] [172.27.5.3]
[NAS-Identifier(32)] [14] [STACK-SWITCH]
[Acct-Session-Id(44)] [32] [202404080604470000000108100000]
Received a RADIUS start-accounting response.
Server IP : 172.27.5.10
Source IP : 172.27.5.3
VPN instance : N/A
Server port : 1813
Packet type : Start-accounting response
Packet length: 20 bytes
Packet ID : 0
Sent a RADIUS stop-accounting request.
Server IP : 172.27.5.10
Source IP : 172.27.5.3
VPN instance : N/A
Server port : 1813
Packet type : Stop-accounting request
Packet length: 96 bytes
Packet ID : 0
Attribute list:
[User-Name(1)] [6] [test]
[Acct-Status-Type(40)] [6] [2] [Stop]
[NAS-IP-Address(4)] [6] [172.27.5.3]
[NAS-Identifier(32)] [14] [STACK-SWITCH]
[Acct-Session-Id(44)] [32] [202404080604470000000108100000]
[Acct-Delay-Time(41)] [6] [0]
[Acct-Terminate-Cause(49)] [6] [1] [User-Request]
Received a RADIUS stop-accounting response.
Server IP : 172.27.5.10
Source IP : 172.27.5.3
VPN instance : N/A
Server port : 1813
Packet type : Stop-accounting response
Packet length: 20 bytes
Packet ID : 0
Test result: Successful
Литература:
https://www.opennet.ru/base/cisco/radius.txt.html
https://wifi-hotspot.zp.ua/wp/2009/04/radius-mysql-and-web-interfaces/
https://draculaservers.com/tutorials/install-freeradius-daloradius-debian-9-mysql/
https://draculaservers.com/tutorials/freeradius-centos-7-mysql/
скорее всего это
https://linuskarlsson.se/blog/radius-authentication-and-dynamic-vlan-assignment-for-wpa2-enterprise-using-sqlite-in-freeradius/
https://serverfault.com/questions/1063850/how-can-freeradius-assign-a-vlan-id-to-the-authenticated-client
https://www.experts-exchange.com/questions/24661553/Freeradius-Dynamic-Vlan-Assignment.html
Для коммутатора и порта
https://ipbalance.com/security/security-configuration/basic-8021x-configuration-on-cisco-switch-with-freeradius/