Active Directory / Freeradius / ntlm_auth / атрибут почты
В настоящее время я настраиваю сервер Linux с Freeradius, чтобы наши клиенты проходили аутентификацию в нашей Active Directory для нашей WiFi-сети.
Цель состоит в том, чтобы наши пользователи использовали адрес электронной почты, который присутствует в Active Directory в качестве атрибута "mail", и пароль их домена для аутентификации в сети WiFi.
Формат нашего AD именования выглядит следующим образом
имя: Джо Джонссен имя пользователя: foo\jjon1 UPN: jjon1@foo.bar.lan почтовый адрес: j.jonssen@company.com
В настоящее время у меня работает ntlm_auth, и я могу войти с помощью jjon1 и пароля. Но мы хотим войти с j.jonssen@company.com и паролем.
Есть ли способ добиться этого, я не привязан к Freeradius как сервер Radius. Нам нужно использовать наш почтовый адрес в качестве имени пользователя для сети WiFi, потому что мы думаем о том, чтобы присоединиться к такой инициативе, как Eduroam, и требуется вход с почтовым адресом.
2 ответа
Вы можете узнать имя пользователя /sAMAccountName, запустив запрос LDAP к AD, а затем выполнив NTLM-аутентификацию.
Очень простой скрипт bash mail_to_username
(без входного фильтра) будет выглядеть так:
#!/bin/bash
MAIL=$1
NTDOMAIN=$2
CHALLENGE=$3
NTRESPONSE=$4
HOST="ldap://ip-adress"
BASE_DN="OU=Users,DC=example,DC=de"
BIND_DN="LDAP-freeradius@example.de"
PASSWORD="x"
FILTER="mail=$MAIL"
sAMAccountName=`ldapsearch -LLL -x -D "$BIND_DN" -w "$PASSWORD" -b "$BASE_DN" -H "$HOST" "$FILTER" sAMAccountName | grep sAMAccountName | awk '{print $2}'`
/usr/bin/ntlm_auth --request-nt-key --username=$sAMAccountName --domain=$NTDOMAIN --challenge=$CHALLENGE --nt-response=$NTRESPONSE
внутри модуля mschap вы вызываете bash-скрипт вместо прямого вызова ntlm_auth
:
ntlm_auth = "/usr/bin/mail_to_username %{mschap:User-Name:-None} %{%{mschap:NT-Domain}:-EXAMPLE} %{mschap:Challenge:-00} %{mschap:NT-Response:-00}"
Сценарий должен быть настроен следующим образом:
MAIL=${2:11}
NTDOMAIN=${3:9}
CHALLENGE=${4:12}
NTRESPONSE=${5:14}