Аутентификация на оборудовании на основе Radius + AD

Для удобства организации доступа к сетевым устройствам удобно использовать централизованную схему аутентификации на основе протокола Radius или tacacs+ (DIAMETER не рассматриваем в принципе, я не видел устройств с его поддержкой для наших целей).
Поскольку tacacs+ поддерживается не таким большим количеством оборудования (например, его нет в Mikrotik, я НЕГОДУЮ!), то будем авторизовываться через radius.
Radius — сетевой протокол, предназначенный для обеспечения централизованной аутентификации, авторизации и учёта (Authentication, Authorization, and Accounting, AAA) пользователей, подключающихся к различным сетевым службам, FreeRADIUS — RADIUS сервер с открытым исходным кодом.
Рассмотрим настройку сервера FreeRADIUS для работы с доменом Active Directory, для организации доступа к сети на основании учетных записей доменных пользователей. FreeRADIUS устанавливается на сервер под CentOS 6.10, файрвол и selinux отключены.

1. Обязательно указываем DNS, отвечающий за домен

[around@auth ~]$ cat /etc/resolv.conf
search test.local
nameserver 10.0.0.16
nameserver fe80::1

2. Устанавливаем необходимые зависимости:

sudo yum -y install authconfig samba samba-winbind samba-client pam_krb5 krb5-workstation net-tools bind-utils samba-winbind-clients freeradius freeradius-krb5

3. Запускаем интерфейс для настройки источников системной аутентификации

sudo authconfig-tui

Запускается псевдо-графическая оболочка для настройки
На странице «Authentication Configuration» выбираем «User Information->Use Winbind», «Authentication->Use Kerberos»

Далее в меню «Kerberos Settings» указываем «Realm», «KDC» и «Admin Server». Ставим оба переключателя «Use DNS to»

В «Winbind Settings» выбираем «Security Model» -> ads, опять указываем домен (Netbios-имя), контроллер домена, область и оболочку по-умолчанию в зависимости от необходимости.

4. Запускаем демоны и добавляем их в автозагрузку

[around@auth ~]$ sudo service smb start
Starting SMB services: [ OK ]
[around@auth ~]$ sudo service nmb start
Starting NMB services: [ OK ]
[around@auth ~]$ sudo chkconfig smb on
[around@auth ~]$ sudo chkconfig nmb on

5. Присоединяем сервер к домену

[around@auth ~]$ sudo net ads join -U Administrator
Enter Administrator"s password:
Using short domain name -- TEST
Joined "AUTH" to dns domain "test.local"
No DNS domain configured for freeradius. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

6. Запускаем демон winbind

[around@auth ~]$ sudo service winbind start
Starting Winbind services: [ OK ]
[around@auth ~]$ sudo chkconfig winbind on

ОЧЕНЬ ВАЖНО!!! Необходимо добавить права radius’у на доступ к winbind.

sudo usermod -a -G wbpriv radiusd

7. Проверяем доступ к AD

[around@auth ~]$ wbinfo -u
TEST\administrator
TEST\guest
TEST\krbtgt

8. Проверяем аутентификацию ntlm

[around@auth ~]$ ntlm_auth --request-nt-key --domain=TEST.LOCAL --username=Administrator --password=PaSsWoRd
NT_STATUS_OK: Success (0x0)

9. Идем в файл /etc/raddb/modules/ntlm_auth прописываем правильные значения

[around@auth ~]$ sudo cat /etc/raddb/modules/ntlm_auth
exec ntlm_auth {
wait = yes
program = "/usr/bin/ntlm_auth --request-nt-key --domain=TEST.LOCAL --username=%{mschap:User-Name} --password=%{User-Password}"
}

Идём в /etc/raddb/modules/mschap, расскомментируем строку и добавим домен

ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --domain=TEST.LOCAL --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"

Правим конфигурацию виртуальных сервров Freeradius

[around@auth ~]$ sudo cat /etc/raddb/sites-enabled/default
authenticate {
...
ntlm_auth
}

В файл /etc/raddb/users добавляем следующую секцию

DEFAULT Auth-Type = ntlm_auth

Создаем клиента для Freeradius

cat /etc/raddb/clients.conf
client 10.0.0.0/8 {
secret = VeRySeCrEt
nas_type = other
}

10. Проверяем работу. Для этого открываем ещё одну консоль. В первой запускаем freeradius в режиме отладки:

[around@auth ~]$ sudo radiusd -X

А во второй пытаемся авторизоваться

[around@auth ~]radtest -t mschap Administrator "пароль" 10.0.0.1 1812 VeRySeCrEt
Sending Access-Request of id 120 to 10.0.0.1 port 1812
User-Name = "Administrator"
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
MS-CHAP-Challenge = 0xf9bf25a95e383336
MS-CHAP-Response = 0x0001000000000000000000000000000000000000000000000000b66d6382f418a816ea310841a43f80fcc4c7d80a515fe939
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=120, length=84
MS-CHAP-MPPE-Keys = 0x000000000000000052c4e2d09dee0a860679da01746bc1290000000000000000
MS-MPPE-Encryption-Policy = 0x00000001
MS-MPPE-Encryption-Types = 0x00000006

11. Но это ещё не всё. Нехорошо, если под любой учёткой секретаря можно зайти на устройство. Поэтому добавим в файлы /etc/raddb/mods-enabled/ntlm_auth и в /etc/raddb/modules/mschap в строку с указанием ключей для команды ntlm_auth следующую конструкцию

--require-membership-of=S-1-5-21-959380498-1049577799-326254550-28606

ID группы получается с помощью команды wbinfo -n GROUPNAME

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

ipv6 ready