Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Berkeley Humanoid Lite (Onshape, GitHub) je open source humanoidní robot. V amerických cenách jej lze sestavit do 5000 dolarů.
Jakub Jelínek oznámil vydání verze 15.1 (15.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 15. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Staronovým vedoucím zůstává Andreas Tille.
Jason Citron končí jako CEO Discordu. Od pondělí 28. dubna nastupuje nový CEO Humam Sakhnini, bývalý CSO Activision Blizzard.
Článek na Libre Arts představuje baskytarový multiefekt Anagram od společnosti Darkglass Electronics. S Linuxem uvnitř (licence, GitHub).
Městský soud v Praze vyhlásil rozsudek, který vyhověl žalobě novináře Jana Cibulky, který s podporou spolku IuRe (Iuridicum Remedium) požadoval omluvu od státu za to, že česká legislativa nařizuje operátorům uchovávat metadata o elektronické komunikaci. To je přitom v rozporu s právem. Stát se musí novináři omluvit a zaplatit náklady řízení. Především je ale součástí přelomové rozhodnutí o nelegálnosti shromažďování dat a o
… více »Americké technologické firmy Apple a Meta Platforms porušily pravidla na ochranu unijního trhu, uvedla včera Evropská komise (EK). Firmám proto vyměřila pokutu – Applu 500 milionů eur (12,5 miliardy Kč) a Metě 200 milionů eur (pět miliard Kč). Komise to oznámila v tiskové zprávě. Jde o první pokuty, které souvisejí s unijním nařízením o digitálních trzích (DMA). „Evropská komise zjistila, že Apple porušil povinnost vyplývající z nařízení
… více »Dnešní díl je o tom, jak si s Kerberem rozumí Samba. Ukážu vám, že si s ním rozumí docela dobře. Nakonfigurujeme si jednoduchý Samba server a pokusíme se k němu přistoupit pomocí linuxového i windowsového klienta. To vše samozřejmě s podporou SSO. Konfigurace Samby, kterou se vám chystám ukázat, je poněkud netypická a myslím, že i dost neznámá.
Jako server použíjeme stroj srv-file1.firma.local
, který již dobře posloužil v předchozím dílu jako souborový server NFS4. Kerbera máme na tomto stroji již nakonfigurovaného, takže si jeho "recyklováním" ušetříme práci.
Instalace Samby je opravdu banální záležitost na každé moderní linuxové distribuci. Jeden příkaz je obvykle víc než dost. Nainstalovala se mi verze 3.0.24.
urpmi samba-server
Stejně jako v předchozích případech bude serverová strana služby potřebovat svůj vlastní principal (SPN - Service Principal Name). Vytvoříme principal cifs/srv-file1.firma.local
nám dobře známým nástrojem kadmin
. Principal vytvoříme s náhodným klíčem...
kadmin: addprinc -randkey cifs/srv-file1.firma.local WARNING: no policy specified for cifs/srv-file1.firma.local@FIRMA.LOCAL; defaulting to no policy Principal "cifs/srv-file1.firma.local@FIRMA.LOCAL" created. kadmin:
...a vyexportujeme jej do "keytabu" na stroji:
srv-file1.firma.local
kadmin: ktadd cifs/srv-file1.firma.local Entry for principal cifs/srv-file1.firma.local with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal cifs/srv-file1.firma.local with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5.keytab.
Výsledný "keytab" vypadá následovně."
[root@srv-file1 ~]# klist -ek /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 4 nfs/srv-file1.firma.local@FIRMA.LOCAL (Triple DES cbc mode with HMAC/sha1) 4 nfs/srv-file1.firma.local@FIRMA.LOCAL (DES cbc mode with CRC-32) 3 cifs/srv-file1.firma.local@FIRMA.LOCAL (Triple DES cbc mode with HMAC/sha1) 3 cifs/srv-file1.firma.local@FIRMA.LOCAL (DES cbc mode with CRC-32)
Zde je třeba poznamenat, že Windows podporují šifrování RC4-HMAC se 128bitovým klíčem, DES-CBC-CRC a DES-CBC-MD5 s 56bitovým klíčem. Pro pokusy doporučuji používat DES-CBC-CRC.
Stroj srv-file1.firma.local
je konfigurován proti Kerberos realmu FIRMA.LOCAL, Samba má v tomto realmu svůj principal. Stroj "zná" UNIXové identity (UID, GID) svých uživatelů z LDAPu přes NSS. Samba není členem žádné domény. Jedná se v podstatě o samostatný (stand alone) server v režimu "security = server". "NT Password Hash", který bývá obvykle uložen v lokálním souboru nebo v LDAP adresáři, se v této konfiguraci vůbec nepoužívá. Možné metody autentizace jsou tudíž omezeny pouze na Kerberos. Jiné ověřovací mechanizmy (např. NTLM) fungovat nebudou.
[global] security = user realm = FIRMA.LOCAL use kerberos keytab = yes use spnego = yes encrypt passwords = yes workgroup = FIRMA unix extensions = yes case sensitive = yes delete readonly = yes ea support = yes log file = /var/log/samba/%m.log max log size = 50 log level = 1 auth:3 map to guest = bad user printing = bsd [cifs_share] path = /nfs4exports/data read only = no
Jako linuxového klienta použijeme opět stroj pc1.firma.loal
, připravený v předchozích dílech seriálu. Stroj má již nakonfigurováno vše potřebné, co se týká podpory Kerbera a základních systémových nastavení.
Řádkový klient SMB/CIFS klient smbclient
není zrovna uživatelsky nejpohodlnější, ale za to je poměrně užitečný pro testování. Klient používá stejný konfigurační soubor /etc/smb.conf
jako démony Samby. V našem případě není prakticky žádná konfigurace potřeba. Obešli bychom se i bez uvedeného konfiguračního souboru.
# Soubor /etc/samba/smb.conf na stroji pc1.firma.local [global] workgroup = FIRMA
Abychom otestovali použití SSO, přihlásíme se nejprve jako uživatel frantisek_hnipirdo
k počítači pc1.firma.local
. Při procesu přihlášení ke klientskému počítači jsme získali TGT, tudíž se můžeme směle vrhnout na použití další kerberizované služby v naší pokusné síti. Parametr -k
zajistí použití Kerberos autentizace, parametr -d 3
se postará o bohatší výstup pro případ, že bychom narazili na nějaký problém.
[frantisek_hnipirdo@pc1 ~]$ smbclient -k -d 3 //srv-file1.firma.local/cifs_share lp_load: refreshing parameters Initialising global parameters params.c:pm_process() - Processing configuration file "/etc/samba/smb.conf" Processing section "[global]" added interface ip=172.16.51.130 bcast=172.16.51.255 nmask=255.255.255.0 Client started (version 3.0.24). resolve_lmhosts: Attempting lmhosts lookup for name srv-file1.firma.local<0x20> resolve_wins: Attempting wins lookup for name srv-file1.firma.local<0x20> resolve_wins: WINS server resolution selected and no WINS servers listed. resolve_hosts: Attempting host lookup for name srv-file1.firma.local<0x20> Connecting to 172.16.51.12 at port 445 Doing spnego session setup (blob length=114) got OID=1 2 840 113554 1 2 2 got OID=1 2 840 48018 1 2 2 got OID=1 3 6 1 4 1 311 2 2 10 got principal=cifs/srv-file1.firma.local@FIRMA.LOCAL Doing kerberos session setup ads_cleanup_expired_creds: Ticket in ccache[FILE:/tmp/krb5cc_10001_hsWMH6] expiration Ne, 22 čen 2008 01:47:18 CEST OS=[Unix] Server=[Samba 3.0.24] dos_clean_name [] smb: \>
Za povšimnutí stojí, že do "Kerberos credential cache" uživatele josef_hnipirdo
přibyl ticket pro použití služby cifs
na stroji srv-file1.firma.local
. To odpovídá fungování Kerbera, jak bylo posáno v úvodu tohoto seriálu.
[frantisek_hnipirdo@pc1 ~]$ klist Ticket cache: FILE:/tmp/krb5cc_10001_hsWMH6 Default principal: frantisek_hnipirdo@FIRMA.LOCAL Valid starting Expires Service principal 06/21/08 15:47:18 06/22/08 01:47:18 krbtgt/FIRMA.LOCAL@FIRMA.LOCAL renew until 06/22/08 15:47:18 06/21/08 15:47:35 06/22/08 01:47:18 cifs/srv-file1.firma.local@FIRMA.LOCAL renew until 06/22/08 15:47:18
Konqueror vám naservítruje vzdálená data ve formě uživatelsky výrazně příjemnější, než to dokáže smbclient
. Žádnou zvlástní konfiguraci nevyžaduje. Jakmile máme TGT, stačí zadat použe URL ve tvaru smb://jméno_serveru/sdílení
.
Daleko zajímavější je možnost vzdálený souborový systém "přimountovat". Proti použití řádkového klienta získáme možnost otevírat a editovat sdílené soubory bez nutnosti otravného kopírování mezi klientem a serverem. K zahození není ani možnost udržovat domácí adresáře uživatelů na souborovém serveru a připojovat je na klientském PC při přihlášení uživatele. V jádře existuje podpora pro dva různé virtuální souborové systémy smbfs
a cifs
. Tj. v jádře je podpora klienta realizována dvakrát. Virtuální souborový systém smbfs
obsahuje podporu Kerbera, ale s cifs
, který má smbfs
nahradit, je to horší. Podpora Kerbera v cifs
byla plánována někde kolem verze 1.48. Na stroji pc1.firma.local
(kernel 2.6.17, cifs v. 1.43) toho ohledně cifs
mnoho nevyzkoušíme, ale smbfs
s Kerberos autentizací chodit bude. Co se týká cifs
a Kerbera, tak ani na Mandrivě 2008.1 (kernel 2.6.24, cifs
v. 1.52) jsem nebyl úspěšný. Zřejmě si budeme muset ještě počkat.
Na následujícím příkladu ukážeme, jak uživatel josef_vosahlo
připojí vzdálený souborový systém pomocí SSO. V domácím adresáři uživatele vytvoříme adresář pro připojení vzdáleného souborového systému. Nazvěme jej třeba "smbfs". Adresář musí být vlastněn uživatelem, který bude souborový systém připojovat.
[josef_vosahlo@pc1 ~]$ mkdir smbfs
Souborový systém připojíme příkazem smbmount
. Parametr -o krb
zajistí použití Kerberos autentizace.
[josef_vosahlo@pc1 ~]$ smbmount //srv-file1/cifs_share ./smbfs/ -o krb,debug=3 Warning: kerberos support will only work for samba servers mount.smbfs started (version 3.0.24) added interface ip=172.16.51.130 bcast=172.16.51.255 nmask=255.255.255.0 resolve_lmhosts: Attempting lmhosts lookup for name srv-file1<0x20> resolve_wins: Attempting wins lookup for name srv-file1<0x20> resolve_wins: WINS server resolution selected and no WINS servers listed. resolve_hosts: Attempting host lookup for name srv-file1<0x20> Connecting to 172.16.51.12 at port 445 Doing spnego session setup (blob length=114) got OID=1 2 840 113554 1 2 2 got OID=1 2 840 48018 1 2 2 got OID=1 3 6 1 4 1 311 2 2 10 got principal=cifs/srv-file1.firma.local@FIRMA.LOCAL Doing kerberos session setup ads_cleanup_expired_creds: Ticket in ccache[FILE:/tmp/krb5cc_10002_CRxQxM] expiration Po, 23 ?en 2008 00:04:12 CEST
Pomocí příkazů mount
a ls
ověříme, že naše počínání bylo úspěšné.
[josef_vosahlo@pc1 ~]$ mount ... //srv-file1/cifs_share on /home/josef_vosahlo/smbfs type smbfs (0)
[josef_vosahlo@pc1 ~]$ ls -l /home/josef_vosahlo/smbfs/ celkem 8 drwxr-xr-x 1 josef_vosahlo firma_users 4096 kv? 18 14:50 finance/ drwxr-xr-x 1 josef_vosahlo firma_users 4096 kv? 19 22:05 vyroba/
To samé jako v předchozím příkladě lze provést pomocí šikovného programu Smb4K pohodlně z GUI. Nastavíme autentizaci pomocí Kerbera a použití smbfs
(ne cifs
).
...a po pár mrštných kliknutích se můžeme kochat výsledkem v Konqueroru.
Když si hrajeme se Sambou, nevyhnutelně musí přijít řeč i na Windows. Můžeme použít Windows jako klienta pro takto nakonfigurovanou Sambu? Můžeme! Vytvoříme si nový testovací stroj pc3.firma.local
s nainstalovanými Windows XP.
V našem testovacím prostředí jsme dosud nezavedli DNS, musíme tedy i na Windows vyřešit překlad jmen na IP adresy pomocí lokálního souboru hosts
.
# Soubor C:\WINDOWS\system32\drivers\etc\hosts na stroji pc3.firma.local 127.0.0.1 localhost 172.16.51.10 srv-infra1.firma.local srv-infra1 172.16.51.12 srv-file1.firma.local srv-file1
Každý ví, že Windows mouhou být členem domény, ale ne každý ví, že Windows mohou být také členem Kerberos realmu. Zřejmě proto, protože pro druhou možnost neexistuje žádné "klikátko". Budeme postupovat podle návodu přímo od Microsoftu.
Vytvoříme pro náš Windows stroj principal host/pc3.firma.local
opět pomocí nástroje kadmin
. Principal vytvoříme s heslem, které si musíme pamatovat. Budeme jej potřebovat při konfiguraci Windows.
kadmin: addprinc -e des-cbc-crc:normal -pw P@ssw0rd host/pc3.firma.local@FIRMA.LOCAL WARNING: no policy specified for host/pc3.firma.local@FIRMA.LOCAL; defaulting to no policy Principal "host/pc3.firma.local@FIRMA.LOCAL" created.
K nastavení Kerbera slouží ve Windows příkaz ksetup
. Tento nástroj je součástí Windows Support Tools, jejichž instalační balík najdeme na instalačním CD Windows XP ve složce \Support\Tools
. Support Tools jsem nainstaloval do složky C:\Program Files\Support Tools
. Příkaz ksetup
pochopitelně spouštíme pod účtem s administrátorským oprávněním. To, že jsou Windows členem realmu FIRNA.LOCAL, jim řekneme následujícím příkazem.
C:\Program Files\Support Tools>ksetup /setdomain FIRMA.LOCAL Setting Dns Domain NOTE: /SetDomain requires a reboot to take effect
Také musíme Windows sdělit, kde mají hledat KDC...
C:\Program Files\Support Tools>ksetup /addkdc FIRMA.LOCAL srv-infra1.firma.local NOTE: /AddKdc requires a reboot to take effect on pre-SP1 Win2000 computers
...a také heslo k principalu stroje zadané v kroku 1.
C:\Program Files\Support Tools>ksetup /setmachpassword P@ssw0rd Setting computer password NOTE: /SetMachPassword requires a reboot to take effect.
Restart samozřejmě nesmí chybět .
Nyní máme Windows nastaveny tak, aby zvládly autentizaci uživatele pomocí Kerbera. Nicméně, uživatel se ještě přihlásit nemůže, neboť nemá žádný uživatelský účet. Windows si bohužel umějí vzít infomrace o uživatelských účtech pouze z řadiče domény, který nemáme, a naše Windows nejsou ani jako člen domény konfigurovány. Zbývají tedy pouze lokální účty. Následující konfigurace je v podstatě analogická ke konfiguraci klienta v 2. dílu seriálu. Windows umožňují vytvořit asociaci mezi principalem a lokálním uživatelským účtem. Můžeme buď vytvořit asociaci mezi konkrétním principalem a konkrétním lokálním účtem, nebo můžeme asociovat všechny principaly a lokální účty stejného jména. My si vybereme druhou variantu. Ke slovu přijde opět příkaz ksetup
.
C:\Program Files\Support Tools>ksetup /mapuser * *
Příkazem ksetup
bez parametrů lze prohlédnout aktuální konfiguraci Kerbera ve Windows.
C:\Program Files\Support Tools>ksetup default realm = FIRMA.LOCAL (external) FIRMA.LOCAL: kdc = srv-infra1.firma.local Realm Flags = 0x0 none Mapping all users (*) to a local account by the same name (*).
Nyní zbývá vytvořit zmíněné lokální účty pro jednotlivé uživatele. Lokální uživatelský účet má pochopitelně také své heslo, ale to my využívat nechceme, proto jej nastavíme na něco pekelného, co uživatel nikdy neuhodne. Tím máme Windows nakonfigurované a můžeme začít směle experimentovat.
Přihlásíme se do Windows jako uživatel josef_vosahlo
. Uživatel se autentizuje proti Kerberos realmu FIRMA.LOCAL
.
Připojíme vzdálený souborový systém s UNC cestou \\srv-file1.firma.local\cifs_share
jako jednotku Z:
. Pokud jsem někde neudělali chybu, můžeme procházet disk vzdáleného serveru.
Hrát si s Kerberem na Windows nemusí být vždy úplně bez problémů. Důležité je vědět, jak Windows donutit logovat Kerberos operace. To hravě zajistí několik odvážných kliků v ďábelském nástroji regedit
.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos] "LogLevel"=dword:00000001 "KerbDebugLevel"=dword:c0000043 "LogToFile"=dword:00000001
Detailnější výpis můžeme mít, pokud nastavíme KerbDebugLevel
na hodnotu ffffffff
. Log najdeme v souboru C:\Windows\System32\lsass.log
.
Řekněme, že používáme nástroj Místa v síti. Proklikáme celou dlouhou cestu Místa v síti\Celá síť\Síť Microsoft Windows
, klikneme na náš server srv-file1
a posledním mocným klikem se snažíme otevřít složku cifs_share
. Místo obsahu složky nás Windows odmění autentizačním dialogem.
To jsme sice v našem SSO prostředí nečekali, nicméně pokorně vyplníme přihlašovací údaje uživatele josef_vosahlo
v bláhové naději, že toto snažení nebude marné. Samozřejmě marné je. Proč? Odpověď najdeme v logu našeho KDC (/var/log/kerberos/krb5kdc.log
).
... Jul 17 02:20:44 srv-infra1.firma.local krb5kdc[2977](info): AS_REQ (7 etypes {23 -133 -128 3 1 24 -135}) 172.16.51.133: ISSUE: authtime 1216254044, etypes {rep=3 tkt=16 ses=1}, josef_vosahlo@FIRMA.LOCAL for krbtgt/FIRMA.LOCAL@FIRMA.LOCAL Jul 17 02:20:44 srv-infra1.firma.local krb5kdc[2977](info): TGS_REQ (7 etypes {23 -133 -128 3 1 24 -135}) 172.16.51.133: UNKNOWN_SERVER: authtime 1216254044, josef_vosahlo@FIRMA.LOCAL for cifs/srv-file1@FIRMA.LOCAL, Server not found in Kerberos database ...
Zdá se, že při "klikání na ikony počítačů" Windows XP pracují s krátkým jménem počítače. Principaly v databázi Kerbera mají na pozici instance plné doménové jméno počítače, není tedy divu, že principal služby v zadaném tvaru nemůže být v databázi nalezen. Pokud v adresním řádku zadáme plné doménové jméno serveru, vše funguje správně.
V dnešním dílu jsem od Linuxu zabrousil poněkud k Windows. Doufám, že se na mě nebudou čtenáři zlobit. Činil jsem tak ve snaze po nalezení Svatého grálu naprosté a ničím nerušené interoperability a kompatibility mezi operačními systémy dneška. V příštím dílu seriálu si budeme povídat o webových službách. Ukážeme si, jak si s Kerberem rozumí Apache, Firefox, Konqueror a Internet Explorer ;-).
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
ksetup /mapuser * *
funguje i na uživatele z NT4 domény (Samba PDC). Mám Samba PDC, což funguje bezvadně a takhle by se to dalo "bezbolestně" rozšířit o Kerberos. (Samozřejmě vím o Active Directory.)
Zajimalo by me jak zajistit, aby se lokalni ucet vytvoril sam.