\\
Níže uvedený návod funguje jen pokud MS AD podporuje NTLMv1 což je zastaralý a nedoporučovaný protokol, viz článek [[https://blogs.technet.microsoft.com/miriamxyra/2017/11/07/stop-using-lan-manager-and-ntlmv1/|Stop using LAN Manager and NTLMv1!]].\\
\\
Pokud jsou účty z MS AD použivány ke kritickým systémům insituce, jako např. mzdové agendy. Je vhodné používat oddělené eduroam heslo od hlavního hesla do MS AD.
Délka hesla nehraje roli.
Nejdůležitějším prvkem zabezpeční je to aby uživatelé ověřovali certifikát a hostname RADIUS serveru, tj. aby používali eduroam CAT. Což hojně nečinní.
====== Nastavení ověřování Freeradiusu přes Windows AD ======
Návod vychází z návodu připraveného pro Debian 8 (Jessie) a distribuční balíček FreeRADIUS v2 od Jana Vondráčka z UPCE. Sekce specifické pro napojení na eduroam.cz byly vypuštěny. Originální {{:cs:spravce:pripojovani:radius:freeradius3:freeradius-ad.pdf|návod je k dispozici}}.
OS se musí nejdříve zaregistrovat ve Windowsové doméně, pomocí samby a winbindu. A potom lze
používat ověření ntlm_auth ze Samby ve Freeradiusu. Hesla v AD jsou uložena jako NT hash a tuto
hash lze použít v MS-CHAPv2 autorizaci (bez potřeby znát plain textové heslo). AD DC musí
povolovat NTLMv1 ověření, což je trochu v rozporu s best practice od Microsoftu.
Nejdříve doinstalujte balíky:
apt-get install samba winbind krb5-config krb5-user
===== Přidání systému do Windows domény =====
Konfigurační soubor ''/etc/krb5.conf'':
[libdefaults]
default_realm = UNIVERZITA.CZ
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
UNIVERZITA.CZ = {
kdc = 192.168.0.2
kdc = 192.168.0.3
admin_server = ldapdc.univerzita.cz
default_domain = univerzita.cz
}
[domain_realm]
.univerzita.cz = UNIVERZITA.CZ
univerzita.cz = UNIVERZITA.CZ
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Pozor na malé a velké znaky, ty je nutno dodržet. Dva kdc jsou zde kvůli zvýšené dostupnosti,
systém je schopen při výpadku přecházet plynule mezi dvěma DC. IP jsou zde použity, aby se
systém zaregistroval na oba DC zároveň, lze také použít unikátní FQDN.
Soubor ''/etc/smb.conf'' (Debian 9 má soubor v ''/etc/samba/smb.conf''):
[global]
workgroup = UNIVERZITA
security = ads
password server = 192.168.0.2, 192.168.0.3
realm = UNIVERZITA.CZ
Pozor, workgroup není doména, jméno musí být uvedeno bez koncovky domény 1. řádu. DC jsou opět dva.
Soubor ''/etc/nsswitch.conf'':
passwd: compat files winbind
group: compat files winbind
shadow: compat files winbind
Tj. ke stávajícím definicím ověřování passwd, group a shadow přidáme winbind.
Samba a winbind musí být spuštěné. Při změně konfigurace je třeba winbind nejdříve zastavit,
restartovat sambu a winbind opět spustit
Následujícími těmito příkazy otestujeme, zda DC vidíme a jsme schopni se přihlásit, vytvoříme si
kerberosový tiket. Identifikátor domény vyplňovat nemusíme, použije se defaultní. Uživatel nemusí
být doménovým administrátorem. Na konci pokusu se musí přihlášení zrušit, krb5 tiket totiž platí 8
hodin. Prostupy FW jsou trochu oříšek, já vypozoroval používání TCP 88, 389, 445 a UDP 88. Ale pak ještě aplikační ping na členy domény, je to volání DCERPC a chodí po dynamických portech 1024-65535, spojení navazují různě obě strany.
kinit bezny_uzivatel
klist
kdestroy -A
Teď můžeme systém zaregistrovat do AD pomocí doménového administrátora. Po zaregistrování
lze krb5 tiket zrušit (hlavně když správce radiusu a doménový admin nejsou jedna osoba a
doménový admin se obává, abyste jeho jménem nepáchali nějaké nepravosti :-) ). Připojení do
domény si samba ukládá do adresáře ''/var/run/samba/''.
~# kinit admin_uzivatel
~# net ads join -U admin_uzivatel
Using short domain name -- UNIVERZITA
Joined 'HONZA-LAB' to dns domain 'univerzita.cz'
~# kdestroy -A
~# systemctl restart winbind.service
Nyní ověříme zda vidíme informace z AD, uživatele a skupiny. Ping na DC doporučuji použít i jako
test v dohledovém systému. Pak můžeme otestovat přihlášení přímo pomocí ntlm, které používá
freeradius. Druhý test je kvůli ověření fungování skupin.
~# wbinfo -u
UNIVERZITA\novak
UNIVERZITA\kocicika
...
~# wbinfo -g
UNIVERZITA\studenti
UNIVERZITA\ucitele
...
~# wbinfo -P
checking the NETLOGON for domain[UNIVERZITA] dc connection to "ldapdc.univerzita.cz" succeeded
~# ntlm_auth --request-nt-key --domain=UNIVERZITA --username=bezny_uzivatel
--require-membership-of="UNIVERZITA\g_eduroam"
Password:
NT_STATUS_OK: Success (0x0)
~# ntlm_auth --request-nt-key --domain=UNIVERZITA --username=bezny_uzivatel
--require-membership-of="UNIVERZITA\g_zakazano"
Password:
NT_STATUS_LOGON_FAILURE: Logon failure (0xc000006d)
Zajištění automatického startu winbind služby:
~# systemctl unmask winbind
~# systemctl enable winbind
===== Konfigurace freeRADIUSu =====
Je třeba povolit procesu freeradius přístup k winbindové pipe
chown root:freerad /var/lib/samba/winbindd_privileged
a nebo přidejte uživatele freerad do skupiny winbindd_priv která má práva čtení a spouštění na dotčeném adresáři. Je třeba zajistit aby změna byla presistentní a přežila i upgrady systému, tj. např. to přidejte do startovacího skriptu FreeRADIUSu.
V souboru ''/etc/freeradius/mods-enabled/mschap'' se nastaví ověření pomocí sambového ntlm_auth. Pozor na nutnost escapování znaku
backslash u verzí =< 3.0.4 musí být dvě lomítka u vyšších verzí jen jedno.
mschap {
use_mppe = yes
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00} --require-membership-of='UNIVERZITA\g_eduroam'"
}
===== Odkazy a zdroje =====
* https://wiki.debian.org/AuthenticatingLinuxWithActiveDirectory
* http://wiki.freeradius.org/guide/FreeRADIUS-Active-Directory-Integration-HOWTO
* https://www.eduroam.us/node/89
* https://wiki.samba.org/index.php/Samba,_Active_Directory_&_LDAP
* teorie vysvětlená Jiřím Benešem v konferenci [[https://random.cesnet.cz/mailman/private/eduroam-admin/2017-March/001244.html|eduroam-admin ve vlákně freeradius a AD]]
* https://technet.microsoft.com/en-us/library/jj852207%28v=ws.11%29.aspx