Thank you for reading this post, don't forget to subscribe!
Иногда для удобства организации доступа к сети, удобно использовать централизованную схему аутентификации на основе протокола Radius. В этой статье мы рассмотрим настройку сервера Freeradius для работы с доменом Active Directory, для организации доступа к сети на основании учетных записей доменных пользователей.
FreeRADIUS — RADIUS сервер с открытым исходным кодом.
Radius - сетевой протокол, предназначенный для обеспечения централизованной аутентификации, авторизации и учёта (Authentication, Authorization, and Accounting, AAA) пользователей, подключающихся к различным сетевым службам. Используется, например, при аутентификации пользователей WiFi, VPN
Настройка сервера Freeradius будем производить на сервере CentOs7, в качестве контроллера домена выступает машина Windows Server 2012R2 с именем test-dc, домен test.un.
Настройка сервера Centos
Отключение Selinux
sudo sed -i "s/SELINUX=enforcing/SELINUX=disabled/" \ /etc/selinux/config
Указываем DNS сервер отвечающий за домен
cat /etc/resolv.conf
1 2 3 4 |
# Generated by NetworkManager search test.un nameserver 172.20.1.78 |
На файерволе разрешаем порт udp 1812
Устанавливаем необходимые зависимости:
sudo yum install authconfig samba samba-winbind samba-client \ pam_krb5 krb5-workstation net-tools bind-utils samba-winbind-clients
Запускаем интерфейс для настройки источников системной аутентификации
sudo authconfig-tui
Запускается псевдо-графическая оболочка для настройки
На странице "Конфигурация аутентификации" выбираем "Информация пользователя->Использовать Winbind", "Аутентификация->Использовать Kerberos"
Далее в меню "Настройка Kerberos указываем область и сервер KDC"
"Настройка Winbind" выбираем "Модель защиты"->ads, указываем домен (Netbios имя),контроллер домена, область и оболочку по-умолчанию в зависимости от необходимости
Запускаем демоны и добавляем их в автозагрузку
sudo systemctl start smb
sudo systemctl start nmb
sudo systemctl enable smb
sudo systemctl enable nmb
Присоединяем сервер к домену
sudo net ads join -U Administrator
1 2 3 4 5 |
Enter Administrator"s password: Using short domain name -- TEST Joined "FREERADIUS" to dns domain "test.un" No DNS domain configured for freeradius. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER |
Запускаем демон winbind
sudo systemctl start winbind
sudo systemctl enable winbind
Проверяем доступ к AD
wbinfo -u
1 2 3 4 5 |
TEST\administrator TEST\guest TEST\krbtgt |
Проверяем аутентификацию ntlm
ntlm_auth --request-nt-key --domain=TEST.UN \
--username=Administrator --password=*
1 2 |
NT_STATUS_OK: Success (0x0) |
Установка и настройка Freeradius сервера
sudo yum install freeradius freeradius-krb5
Идем в файл /etc/raddb/mods-enabled/ntlm_auth прописываем правильные значения
cat /etc/raddb/mods-enabled/ntlm_auth
[codesyntax lang="php"]
1 2 3 4 5 |
exec ntlm_auth { wait = yes program = "/usr/bin/ntlm_auth --request-nt-key --domain=TEST.UN --username=%{mschap:User-Name} --password=%{User-Password}" } |
[/codesyntax]
Правим конфигурацию виртуальных сервров Freeradius
cat /etc/raddb/sites-enabled/default
[codesyntax lang="php"]
1 2 3 4 5 |
authenticate { ... ntlm_auth ... } |
[/codesyntax]
cat /etc/raddb/sites-enabled/inner-tunnel
[codesyntax lang="php"]
1 2 3 4 5 |
authenticate { ... ntlm_auth ... } |
[/codesyntax]
в файл /etc/raddb/users добавляем следующую секцию
1 2 |
DEFAULT Auth-Type = ntlm_auth |
Создаем клиента для Freeradius
cat /etc/raddb/clients.conf
[codesyntax lang="php"]
1 2 3 4 5 6 |
client test { ipaddr = указываем ip-адрес клиента secret = testing123 nas_type = other } |
[/codesyntax]
Запускае Freeradius сервер в режиме Debug
radiusd -X
И проверяем аутентификацию на Freeradius сервере с другой машины для которой был создан клиент
radtest radius "пароль" 172.20.1.210 1812 testing123
1 2 3 4 5 6 7 8 9 |
Sending Access-Request of id 20 to 172.20.1.210 port 1812 User-Name = "radius" User-Password = "******" NAS-IP-Address = 127.0.1.1 NAS-Port = 1812 Message-Authenticator = 0x00000000000000000000000000000000 rad_recv: Access-Accept packet from host 172.20.1.210 port 1812, id=20, length=20 |
Аутентификация прошла удачно.
Если вы хотети ограничить аутентификацию для пользователей на основании принадлежности их к доменной группе, то в файле /etc/raddb/mods-enabled/ntlm_auth в строке с указанием ключей для команды ntlm_auth добавляем следующую конструкцию
1 |
--require-membership-of="DOMAIN\GROUP_NAME" |