Jak přejít z New Technology PDC na Samba PDC

1. 7. 2004
Doba čtení: 10 minut

Sdílet

V této sérii článků popíši postup při převodu PDC SMB/CIFS domény ze serveru, který běžel pod nejmenovaným, v současné době již nepodporovaným 32bitovým OS jedné velké americké IT firmy, na sambovské PDC a BDC servery. Nejedná se o krok snadný a lehký, ale je to krok proveditelný. Jelikož se jedná o popis podložený praxí, pravděpodobnost, že se vám převod podle tohoto návodu podaří úspěšně dokončit, je nenulová.

Při migraci narazíte na následující technologie, jejichž základy budete muset pro úspěšné dokončení migrace zvládnout:

  • správu Unix-like systémů – bez ní se neobejdete.
  • programování textových převodů – bude se vám hodit Perl, případně AWKčko, znalost regulárního výraziva je výrazným plusem.
  • protokol SMB/CIFS – Server Message Block/Common Internet File System – navržený IBM a převzatý Microsoftem pro sdílení souborů a další služby na lokální síti.
  • protokol LDAP – Light Directory Access Protocol – protokol navržený pro přístup ke službě X.500, který je poměrně vhodný pro distribuci uživatelské databáze.

Některá tajemná místa SMB a LDAPu budou vysvětlena, jiná zůstanou opomenuta.

Rád bych na začátek vyzdvihl přínosy, které vám vykonání podobného netriviálního procesu přinese:

  • Lépe pochopíte, jak funguje doména. Budete schopni ji lépe spravovat, protože z převodu budete vědět, co děláte a co se přesně děje.
  • Nebudete nad sebou mít velkou firmu, která vám říká, co je ve vaší síti dobré a jaké nové HW kousky je dobré zakoupit. Nebudete nuceni z důvodů končící podpory kupovat nové stroje.
  • Za SW pro nový server ušetříte několik málo desítek tisíc. Ty vám ale požere práce spojená s převodem domény. Z dlouhodobého hlediska asi ušetříte více – nebudete muset kupovat nové servery. Navíc Sambu můžete použít i na jiné úkoly – jako fileserver, tiskový server, časem snad i pro pracovní stanice.
  • Nový systém bude zhruba stejně stabilní jako ten starý. Je mylné se domnívat, že se stanou zázraky, vše začne bez dozoru fungovat a vy budete spravovat síť z Kanárských ostrovů (i když zrovna vzdálená správa je díky ssháčku a plné ovladatelnosti/kon­figurovatelnos­ti samby z příkazové řádky podle mě na podstatně lepší úrovni než ve Windows – zkuste si z průměrné internetové kavárny spustit administrátorské nástroje pro vaši doménu).

A co naopak ztratíte:

  • Poměrně přítulné a snadné nástroje pro administraci. Ty Sambě zatím chybí. Na druhou stranu asi nikdy nebudete muset ztrácet nervy s panem Sponkou, rozhodne-li se jej někdo do nástrojů pro správu implementovat.
  • Několik dní času. Pro síť s 50 počítači počítejte minimálně se dvěma týdny – první týden zvládnete konfiguraci serverů, druhý týden konfiguraci stanic. V optimálním případě a snad s tímto návodem po ruce (bez tohoto návodu nám pochopení a zprovoznění celé záležitosti zabralo jeden pracovní měsíc).
  • Pro správu domény přestanete používat produkt, jehož funkcionalitu vám dodavatel OS pro většinu pracovních stanic garantuje. Může se tedy stát, že dojde ke změně protokolu, která zabrání Sambě být správcem domény. Nicméně pokud k této změně dojde, asi nebudete jediný, kdo bude mít problém, a nová funkcionalita bude do Samby s největší pravděpodobností poměrně rychle přidána – vyhnete se tedy úpravám kódu Samby (úpravy si však můžete díky otevřenosti kódu v extrémním případě provést sami).

Postup platí pro Sambu 3.0 rc1, která byla na počátku roku aktuálně v sarge distribuci Debiana. Je psán pro Debiana, takže volání apt-get nahraďte dle libosti podobným příkazem z vaší distribuce – zbytek, kromě možná trochu jiného umístnění konfiguračních souborů, by měl být stejný.

Vzhledem k existenci MS záplaty KB828741 z konce dubna, díky které nebylo možné na sambovském PDC z Win stanic měnit uživatelské heslo, použijte raději Sambu verze 3.0.4. Tu lze získat na www.samba.org. Převod nebyl (například kvůli neexistenci původního PDC) zkoušen s jinou verzí Samby než 3.0 rc1, ale chod domény pod 3.0.4 odzkoušen samo sebou byl.

Konvence

root@pdc:~$ tento text

znamená spustit na PDC příkaz „tento text“ pod rootem. Pokud je stejně formátovaná řádka bez $, značí buďto stdout/stderr v reakci na příkaz, nebo řádku v konfiguračním souboru, kterou je třeba zapsat/změnit.

Řetězce v pre-blocích, které jsou uzavřeny ve

{složených závorkách}

je třeba změnit na nějaký inteligentnější text (například {název domény}).

V textu se mohou vyskytovat registrované a jiné značky.

Terminologie

V doméně se vám vyskytují obyčejně tyto druhy počítačů:

  • Pracovní stanice je uživatelský počítač. Většina slušných pracovních stanic (Win NT a výš, Samba) se do domény nejdříve přihlašuje, teprve pak se snaží přihlásit uživatele. Po přihlášení získá uživatel přístup k službám, které jednotlivé servery (pracovní stanice i PDC nebo BDC) poskytují (vzdálené připojení file systému, sdílení tiskáren). Teprve po přihlášení počítače do domény se z něho mohou hlásit do domény uživatelé. Neslušné stanice (Win 9×, Win Home) se do domény hlásí až při přihlašování uživatele, uživateli umožní přihlásit se bez domény.
  • PDC – Primary Domain Controller je hlavní počítač, který řídí doménu. Obsahuje seznam všech uživatelů a pracovních stanic. Může ověřovat přihlášení pracovních stanic a uživatelů. Poskytuje seznam všech uživatelů a pracovních stanic BDCčkám pro synchronizaci.
  • BDC – Backup Domain Controller ověřuje připojení pracovních stanic a přihlášení uživatelů. Od PDC přijímá seznam připojených pracovních stanic a uživatelů. Pod Win servery zřejmě není možné na BDC měnit údaje o uživatelích (=měnit hesla), pod Sambou hesla na BDC měnit jde (mechanismus, který je pod tím, ale spočívá v tom, že se pro aktualizaci DB použije master LDAP, který údaje rozdistribuje na slave LDAPy, takže to vyjde nastejno).

V dalším textu budeme všechny počítače v doméně považovat za pracovní stanice – zapomeneme tedy na to, že některé z nich pracují jako souborové servery, jiné jako tiskové servery a zbytek jako počítače určené pouze pro uživatele, které neposkytují doméně žádné služby, pouze služby nabízejí.

LM hash, NT hash je formát popisující uložení hesel na serveru. Hesla jsou transformována jednosměrnou funkcí, není tedy možné z transformovaného hesla určit heslo původní. Jediné doposud známé řešení, jak ze znalosti transformovaného hesla určit heslo původní, je hrubou silou – vyzkoušet všechny možné kombinace hesla, zda se ztransformují na hash hesla. Toto řešení ale zabere (i přes heuristiky probírající nejdříve více pravděpodobné varianty hesla) docela dost času. Dva formáty hashí se v SMB doméně vyskytují, protože původní (LM hash) lze se současnými výpočetními prostředky poměrně snadno prolomit.

Doména

Doména vznikla z pracovní skupiny – workgrupy. Pracovní skupina je dobrovolné uskupení počítačů v síti, majících společný účel – například patří k jedné firmě, případně patří k jednomu oddělení firmy. Počítač připojíte do pracovní skupiny tak, že při konfiguraci počítače nastavíte jméno pracovní skupiny. Do pracovní skupiny se tedy může připojit libovolný počítač.

Přístup do pracovní skupiny není určen centrálně. Pokud se přihlásíte na jeden počítač z pracovní skupiny, na ostatní počítače v pracovní skupině se přihlašujete v závislosti na nastavení služeb, které poskytují, znovu.

Pro připojení do domény potřebujete znát logovací jméno a heslo uživatele, který může připojení do domény provést – většinou doménového administrátora. Nestačí tedy přijít k libovolnému počítači, zadat jméno domény a jste připojeni. Při přihlašování počítače do domény se v doméně vytvoří účet tohoto počítače a na pracovní stanici se uloží hash hesla pro přístup do domény. Při dalších přihlašováních se člen domény ověřuje sdíleným tajemstvím – znalostí parametrů hesla pro přístup do domény.

Heslo pro přístup do domény si členské počítače mohou měnit. Většinou tak konají v intervalu dvou týdnů. Změna hesla je důležitá, protože heslo slouží k zakódování komunikace v rámci domény – komunikace po síti v rámci domény díky tomu neprobíhá v clear formě, ale ve formě zakódované.

Samba a doména

Pro funkčnost Samby jako PDC a BDC je nutné si uvědomit následující fakta:

  • Samba používá vlastní databázi pracovních stanic a uživatelů. Tato databáze může být držena v různých formátech – od obyčejného texťáku po MySQL databázi.
  • Samba uživatelé se musí propojit s UNIXovými uživateli. K tomuto propojení se náramně hodí, díky své objektové struktuře, LDAP.
  • Seznam uživatelů a pracovních stanic je nutné replikovat mezi PDC a BDC. K této činnosti se náramně hodí LDAP, který byl navržen mimo jiné pro snadnou replikaci uživatelských ú­dajů.

V dalším textu se pokusím popsat postup při převodu uživatelů z původní do Samba domény. Prvotním úkolem je dostat z funkčního PDC seznam uživatelů, stanic a jejich hesel. Tento seznam poskytuje PDC na vyžádání BDC.

Připojení jako BDC do domény

Nainstalujte sambu – postup pro Debiana:

root@pdc:~$ apt-get install samba

Do smb.conf dáte k workgroup jméno domény, do které se budeme připojovat. Na Win PDC změníte/vytvoříte účet stanice, ze které se budete připojovat na BDC účet.

Poté zadáte:

root@pdc:~$ net join BDC -d {moje} -U Administrator

(Tady je zřejmě v Samba-HOWTO chyba – je skutečně nutné zadat BDC parametr, jinak se připojíte jako pracovní stanice a vampírování vám z pochopitelných důvodů nebude chodit.)

Zeptá se na heslo administrátora v doméně (pokud se Administrátor jmenuje jinak, je třeba patřičně upravit -U parametr). Otestovat spojení lze pomocí:

root@pdc:~$ net rpc testjoin

Vrátí OK. Pokud nevrátí, je rozumné shlédnout logy na Win PDC, abychom věděli, co se děje. Současně je nutné, aby byla stanice na Win PDC zanesena jako BDC, jinak vám neprojde vampírování.

Vampírování

Úkolem tohoto kroku je zatvářit se na PDC jako BDC a nechat si od něho poslat databázi všech účtů, jak stanic, tak uživatelů, aby bylo možné je přidat do databáze Samby.

Tento krok je možné, a asi i vhodnější, řešit spuštěním skriptu přímo na PDC, ten z jeho DB vytáhne všechny potřebné údaje a uloží je do texťáku, který je možné nacpat do Samby. Toto řešení je zřejmě vhodnější, bohužel již nemám šanci ho otestovat. Dokumentace k němu se válí na Internetu. S jeho pomocí zřejmě získáte jak LANMAN, tak NT hashe hesel pracovních stanic, a tudíž si možná ušetříte práci s přehlášením stanic.

Jako passwd backend je vhodné mít v smb.conf tdbsam. V /etc/samba/smb.conf musí být vyplněny skripty pro přidávání uživatele, počítače a skupiny (add [user|machine|grou­p] script):

add user script = useradd -g users '%u'
add group script = addgroup --force-badname --disabled-password `echo "%g"|sed "s/ /_/g"`
delete group script = delgroup '%g'
add user to group script = adduser '%u' `echo "%g"|sed "s/ /_/g"`
add machine script = useradd -g machines '%u'; smbpasswd -a -m '%u' 

Je potřeba vytvořit skupiny users a machines.

V /etc/samba/smb.conf musí být pro funkčnost PDC položky:

preferred master = Yes
domain logons = Yes

Ty říkají, že se jedná o PDC nebo BDC. A dále

domain master = No

To rozlišuje PDC/BDC. Pokud bude No, bude se jednat o BDC.

root@pdc:~$ net rpc vampire -U Administrator

Tento krok vrátí nějaké chybové hlášky. Většinu z nich je možné ignorovat.

V tomto okamžiku bychom měli mít zmigrována minimálně hesla uživatelů. Toto je možné ověřit pomocí nástroje pdbedit – například

root@pdc:~$ pdbedit -L -v

by měl vrátit kompletní výpis sambovské databáze. A příkaz

root@pdc:~$ pdbedit -L -w

by měl vrátit výpis včetně LM a NT hashů. Pokud jsou NT a LM hashe prázdné, je někde něco špatně.

První test – pouze PDC

Nyní můžete provést následující kroky (optimálně po večerech nebo o víkendu, abyste unikli ukamenování od rozzuřených uživatelů – úplně nejlepší je postavit si malou síť pouze s PDC a jednou pracovní stanicí, a na ní vše zkoušet):

  • Pomalu odříkejte libovolnou zaručeně fungující modlitbu.
  • Změňte Samba BDC na PDC (domain master = Yes v smb.conf).
  • Vypněte win PDC. (To nemusíte, pokud máte Sambu na jiné síti. Jinak je to nezbytné, protože pokud byste měli ve stejné síti dva počítače vydávající se za PDC pro stejnou doménu, byla by síť ve značně chaotickém stavu.)
  • Restartujte Sambu.
  • Zkuste nabootovat nějakou stanici připojenou do stejné sítě jako Samba PDC a přihlásit se do domény.

Pokud přihlášení neprojde, zkontrolujte výpis pdbedit pro účet stanice, ze které se hlásíte. Zkontrolujte logy – viz předposlední odstavec.

Protože se nám při migraci vampírováním nezmigrovaly NT hashe hesel stanic, bylo potřeba stanice do nové domény znovu přihlásit – tedy obejít každý počítač, odhlásit ho z domény (změnit přihlašování z doménového na přihlašování do pracovní skupiny) a přihlásit ho znovu. Tímto postupem se v databázi Samba PDC aktualizuje hash hesla stanice a stanice se tedy může přihlásit. NT hashe by se měly zmigrovat při použití skriptů přímo na Win PDC.

Přiložené soubory

konfigurační soubor samby pro vampírování

bitcoin školení listopad 24

V druhém díle se podíváme na konfiguraci LDAPu a jeho propojení se Sambou.

Článek vznikl z původních materiálů firmy INTAX, s.r.o.