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í.
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í 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
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
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'" }