This is an old revision of the document!
Связка FreeRADIUS + Active Directory
Здесь мы настроим связку FreeRADIUS с контроллерами домена Windows, чтобы авторизовать и аутентифицировать пользователей AD. Для связки с доменом Windows нам потребуется настроить Samba.
1. Обновим информацию о пакетах:
apt-get update
2. Установим freeradius:
sudo apt install freeradius
3. Проверим, что он запущен:
ps -ax | grep free
4. На всякий случай проверим hostname и установим нужный, если требуется:
hostname -f hostnamectl set-hostname new_hostname
5. Устанавливаем самбу и другие необходимые пакеты одной командой:
apt-get install samba samba-common winbind libnss-winbind krb5-user
6. Проверяем - запущена ли самба
ps -ax | grep smb
Если нужно перезапустить самбу, выполняем:
sudo systemctl restart nmbd
7. Настраиваем конфиг самбы в секции global. Здесь workgroup - имя домена Windows, netbios name - имя радиус-сервера. Разрешаем только mschapv2 и ntlmv2 и указываем риалм.
/etc/samba/smb.conf
[global] workgroup = ARASAKA security = ads netbios name = radius1 password server = * realm = arasaka.local ntlm auth = mschapv2-and-ntlmv2-only winbind use default domain = yes
8. Настраиваем kerberos realm в файле:
/etc/krb5.conf
[libdefaults] default_realm = ARASAKA.LOCAL [realms] ARASAKA.LOCAL = { kdc = dc01.arasaka.local kdc = dc02.arasaka.local admin_server = dc01.arasaka.local } [domain_realm] .arasaka.local = ARASAKA.LOCAL arasaka.local = ARASAKA.LOCAL
9. Вводим машину в домен и ОБЯЗАТЕЛЬНО перезагружаемся:
net join -U jp
При этом, есть вероятность, что конфигурирование krb5.conf не потребуется, т.к. информация о домене будет взята из самбы.
10. Проверяем аутентификацию в домене:
wbinfo -a jp%password
Если на п.9 мы не перезагрузились - есть вероятность, что получим ошибку (например, USER NOT FOUND)
11. Проверяем работу NTLM:
ntlm_auth --request-nt-key --domain=ARASAKA --username=jp --password=password
Должны получить ответ:
NT_STATUS_OK: The operation completed successfully. (0x0)
12. Конфигурируем ntlm для freeradius в файле:
/etc/freeradius/3.0/mods-enabled/ntlm_auth
В нём указываем путь к бинарному файлу ntlm_auth и название домена:
exec ntlm_auth { wait = yes program = "/usr/bin/ntlm_auth --request-nt-key --domain=ARASAKA.LOCAL --username=%{mschap:User-Name} --password=%{User-Password}" }
13. В двух (или больше, если есть) файлах добавляем опцию ntlm_auth в секцию authenticate.
/etc/freeradius/3.0/sites-enabled/default /etc/freeradius/3.0/sites-enabled/inner-tunnel
14. Для тестов можно добавить в файл:
/etc/freeradius/3.0/mods-config/files/authorize
Строчку, чтобы все реквесты шли через ntlm_auth:
DEFAULT Auth-Type = ntlm_auth
После чего выполнить проверку:
radtest user password localhost 0 testing123
Успешный результат сообщит нам о предоставлении доступа:
Received Access-Accept Id 88 from 127.0.0.1:1812 to 127.0.0.1:40492 length 20