Подключение сервера WNAM в домен Windows требуется для:
- проверки учетных данных пользователя сети (логин/пароль)
- получения списка всех групп домена
- проверки членства пользователя в заданной группе
- получение NTML хэша пароля при EAP/MSCHAPv2 авторизации
Внимание! Взаимодействие с другими системами управления доменом, или другими LDAP-серверами, в настоящее время не поддерживается. Если вам это требуется - пишите на support@netams.com
1. Установка необходимого ПО
Внимание: вы можете настроить взаимодействие сервиса авторизации WNAM с доменом как на том же сервере, где работает ПО WNAM, как и на любом другом соседнем Linux-сервере. Именно поэтому взаимодействие производится через веб-скрипт.
Первым делом, установите ПО Samba:
apt-get install samba winbind
Отредактируйте его файл конфигурации /etc/samba/smb.conf:
[global]
workgroup = <имя_вашего_домена>
server string = %h server (Samba, Ubuntu)
dns proxy = no
security = ads
password server = <полное_имя_вашего_контроллера_домена>
realm = <полное_имя_вашего_домена>
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
Проверяем:
testparm
Запускаем:
systemctl unmask samba
systemctl enable samba
systemctl restart samba/etc/init.d/nmbd restart
/etc/init.d/smbd restart
Вносим сервер в домен:
net ads join -U <ваш_логин_в домене>
затем
/etc/init.d/winbind restart
Создаем в домене тестовую учётку wifitest с паролем wifitest
Проверяем авторизацию через Samba и контроллер домена:
ntlm_auth --request-nt-key --domain=<имя_домена> --username=wifitest --password=wifitest
Создаем веб-сервис, через который WNAM будет делать проверку пароля. Для этого ставим nginx (который впрочем должен быть установлен при установке WNAM), и редактируем (например) файл /etc/nginx/sites-available/wnam
server {
listen 80 default_server;root /var/www/html;
server_name _;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 120;
proxy_connect_timeout 120;
}location ~ ^/cgi {
root /home/wnam/cgi;
rewrite ^/cgi/(.*) /$1 break;include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME /home/wnam/cgi$fastcgi_script_name;
}}
Не забудьте поставить модуль FastCGI:
apt install fcgiwrap
Сам скрипт проверки ntlmauth.cgi можно загрузить здесь. Он представляет собой примитивную обёртку над командой /usr/bin/ntlm_auth. Положите его в папку /home/wnam/cgi/ (создайте её при необходимости), дайте скрипту права "на исполнение":
mkdir /home/wnam/cgi
cd /home/wnam/cgi
wget -O ntlmauth.cgi https://netams.com/files/wnam/misc/ntlmauth.cgi
chmod +x ntlmauth.cgi
Убедитесь, скрипт доступен для вызова со стороны FastCGI-движка. Выполните:
chmod a+x /home/wnam && chmod a+x /home/wnam/cgi
Вам также придется добавить пользователя, от которого работает nginx (скорее всего это www-data), и его скрипты, в группу winbindd_priv, а также установить права на каталог, где находится сокет winbindd:
usermod -a -G winbindd_priv www-data
chown root:www-data /var/lib/samba/winbindd_privileged/
Для созданной тестовой учетной записи можно проверить работу локальной утилиты генерации хеша, и работу скрипта-обертки через веб запрос:
/usr/bin/ntlm_auth --request-nt-key --username=wifitest --challenge=89b2cc47d4571192 --nt-response=7413e0e319aa658f2214baadb65c131da88b767ab7771f17
wget -O - 'http://localhost/cgi/ntlmauth.cgi?username=wifitest&challenge=89b2cc47d4571192&nt-response=7413e0e319aa658f2214baadb65c131da88b767ab7771f17'
Должен получиться хэш в виде ответа:
NT_KEY: 535A15A134F3555A8089A772D0591D4C
Если так и происходит, можно продолжать настройку взаимодействия с Active Directory на стороне WNAM. Если нет, попробуйте такой (не очень хороший, тем не менее) способ:
chmod a+s /usr/bin/ntlm_auth
или пишите на support@netams.com.
2. Настройка взаимодействия с доменом
Внимание! WNAM поддерживает работу с несколькими доменами, но для этого вам буден необходимо организовать несколько виртуальных машин (по числу доменов), на которых работает настроенная выше конструкция samba+nginx+ntlmauth.
Для настройки перейдите в административный интерфейс WNAM, меню "Конфигурация - Корпоративная авторизация - Служба Active Directory".
В этом окне укажите параметры взаимодействия к контроллером домена:
Задайте полное FQDN имя домена, имя контроллера домена (только хост, без домена), логин и пароль вашей специальной сервисной учетной записи в домене (любой, которая имеет к нему доступ - с её помощью будет производиться получение списка групп домена).
Также укажите URL веб-сервиса проверки NTML-пароля, подготовленный на предыдущем шаге. Ссылка (по умолчанию) http://localhost/cgi/ntlmauth.cgi
Обязательно сохраните настройки!
Затем нажмите на кнопку "Обновить список групп". При этом с заданными учетными данными контроллер будет запрошен на предмет всех групп домена. Внимание! Эта операция может занять минуту.
Вы получите полный список. Чекбоксами отметьте интересующие вас группы: только их можно будет указывать в профилях аутентификации.
Снова нажмите на "Сохранить".
На этом настройка закончена. Ваша система WNAM сможет общаться к контроллером домена, и использовать его для проведения EAP-PEAP/MSCHAPv2 авторизации абонентов вашей сети.