Найти в Дзене

Безопасность сети. 802.1x-H3C

Оглавление

Оглавление

Установка и настройка 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', ':=');

-2

В дало радиусе появится профиль vlan506 и соответствующий VLAN 506

2. Можно создать профиль с соответствующим вланом прямо в далорадиусе

New Profile

-3

Выбираем вендора – dictionary.rfc2868

Аттрибут Tunnel-Type и жмем Add Attribute

-4

Value – 13 , op := , Target – reply

Еще добавляем аттрибут

В аттрибутах в выпадающем окне находим Tunnel-Medium-Type и жмем Add attribute

Ставим 6

Еще добавляем аттрибут

'Tunnel-Private-Group-Id'

И ставим тот влан который должен отдавать радиус ( у меня 506 )

-5

Нажимаем Apply

-6

Это мы создали профиль , который будем при запросе от клиента выдавать ему 506 влан на порт

Создаем нового пользователя и прикрепляем ему профиль VLAN506

У меня пользователи проходят аутентификацию по мак адресу

Запись мак адреса сплошная – xxxxxxxxxxxx

Пример : 047c-166f-e819 исходный , запись в далорадиусе 047c166fe819

-7

Настройка 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/