\\ 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