Egyszerű Samba fileserver (Wheezy)
Ebben a leírásban egyszerű fájlszervert alakítunk ki, amely Windows kliensek számára standalone állománykiszolgálóként működik (és alapját képezi a fejlettebb kiszolgálók beállításának).
Az alábbiak a Debian Wheezy disztribúcióban lévő Samba 3.6.6 változatra vonatkoznak.
Részben kísérleti stádiumban van, még ne vedd teljesen komolyan!
Tartalomjegyzék
- 1 Elméleti megfontolások és házirend
- 2 Előfeltételek
- 3 Telepítés
- 4 Beállítások
- 5 Kiegészítések
- 6 Irodalom
Elméleti megfontolások és házirend
Ebben a leírásban a Samba kiszolgálót legfeljebb kisvállalati használatra méretezzük:
- Egyetlen szervergép - nincs szükség magas rendelkezésre állású (HA) vagy teljesítmény miatti cluster megoldásra;
- A szervergépbe beépített, erre a célra dedikált, legfeljebb néhány TB méretű storage;
- Legfeljebb egy-kétszáz felhasználó, "könnyen áttekinthető" felhasználói szerepek.
Lényeges megkötés, hogy az alább leírt kiszolgáló adminisztrációjához (felhasználók, csoportok, megosztások kezelése, stb.) és üzemeltetéséhez rendszergazda támogatás szükséges, mert a használt eszközöknek nincs könnyen kezelhető adminisztrációs felülete (TODO!).
Tárterület
- A Samba tárterület a /var/opt/samba alatt helyezkedik el. Érdemes külön partícióra tenni (a /var-nak megfelelő korlátozásokkal), hogy a /var teleírását elkerüljük. LVM over RAID-1 használata szóba jöhet.
- A Samba/Windows jogosultságkezelés modellezéséhez a tárterületnek Linux ext2/3/4 fájlrendszeren kell lennie bekapcsolt ACL (access control list) használattal; a teljes Samba/Windows (NTFS) jogosultságkezelés szimulációjához a user_xattr is kell.
- A Samba tárterületet egy Linux system felhasználó és csoport (sambauser:sambashare) birtokolja 2770/660 jogokkal. A Samba/Windows Administrators (Rendszergazdák) csoportnak megfeleltett sambashare Linux csoport a teljes Samba tárterülethez hozzáfér (Linux: rwX, Samba/Windows: Full control).
- Amennyiben érdemi felhasználókezelés szükséges, a tényleges felhasználók authorizációja (ki mihez férhet hozzá) egyrészt a Samba konfigurációjában előírt, megosztás szintű korlátozásokkal, másrészt egy megosztáson belül Linux csoport szintű, az NTFS-nél megszokottakhoz hasonlóan öröklődő Posix ACL-ekkel szabályozható. Jelen leírásban az utóbbi szabályozást preferáljuk.
Felhasználókezelés
A Samba által biztosított környezetet tekinthetjük egy, a gazdagép Linuxán belül megvalósított Windows szolgáltatás emulációnak. Jó lenne, ha ez a szolgáltatás - hasonlóan pl. az Apache-hoz, ProFTPd-hez, stb. - virtuális felhasználókkal dolgozhatna, de a Samba minden (4.x alatti) változata megköveteli, hogy a Samba felhasználók és csoportok egyben a szervergépen érvényes Linux felhasználók és csoportok is legyenek. Ennek oka, hogy minden Samba felhasználónak két párhuzamos identitása van: a Sambán belüli műveletek authorizációjánál használatos Samba/Windows identitás, és a Samba által, a felhasználó nevében, a gazdagép fájlrendszerén végzett műveleteknél használatos Linux identitás. Sajnos a Samba tervezésekor a Linux identitást tették meg elsődlegesnek, így (a Samba 4.x előtt) nem lehetséges több Samba/Windows identitást azonos Linux identitásra mappelni úgy, hogy az authentikáció elkülönüljön - azaz nem lehetséges dedikált Linux felhasználó nélküli Samba/Windows felhasználót készíteni.
Technikailag a Samba/Windows identitás a Samba felhasználói backendjében (alapértelmezésben /var/lib/samba/*.tdb), míg a Samba által a felhasználó nevében végzett fájlműveleteknél használatos Linux identitás a Linux felhasználói backendjében (alapértelmezésben /etc/passwd és /etc/shadow állományok) tárolódik. Lehetséges közös backendet használni (jellemzően LDAP szerver), de nem kötelező és standalone szerver esetében ennek talán nincs is különösebb jelentősége.
- Jelen leírásban a Samba/Windows felhasználói adatbázis a Samba alapértelmezett TDB adatbázisa - LDAP (vagy egyéb backend) használatát ld. TODO!.
- A felhasználókezelés kezelőfelületeként jelen leírásban a parancssori root hozzáférést igénylő smbm (samba-manager) scriptet használjuk.
A Linux identitás azonosítója a jól ismert Linux UID, a Windows identitás esetében az egyedi felhasználói azonosítót (relative identifier, RID) a net getlocalsid paranccsal lekérdezhető (a Samba telepítéskor képzett) domain- (jelen esetben gép-) site identifier-hez (SID) hozzáfűzve kapható meg a teljes UID (ugyanígy képződik az elsődleges csoportazonosító - GID - is).
A Samba/Windows és Linux környezeteket az alábbi szempontok szerint igyekszünk összeegyeztetni:
- A Samba felhasználók ne rendelkezzenek Linux login jelszóval illetve shellel; a Samba (távolról történő) igénybe vétele kivételével lehetőleg semmire ne legyenek jogosultak a gazdagépen.
- A Samba felhasználók Linux UID-ja különüljön el a gazdagép rendszer- és valódi felhasználói által használtaktól, az alábbi konvenciók szerint:
UID Felhasználó jellege 0-999 helyi Linux rendszerfelhasználó (ez a Debian alapértelmezése) 1000-9999 helyi Linux interaktív felhasználó (1000-65534 a Debian alapértelmezése) 10000-19999 helyi azonosítású Samba felhasználó (megfelel a Windows local usernek) 20000-29999 központi azonosítású Samba felhasználó (megfelel a Windows domain usernek)
- A Samba által definiált csoportok GID-je különüljön el a gazdagép által használtaktól, az alábbi konvenciók szerint:
GID Csoport jellege 0-999 helyi Linux felhasználói csoport 10000-19999 helyi azonosítású Samba csoport (megfelel a Windows local groupnak) 20000-29999 központi azonosítású Samba csoport (megfelel a Windows domain groupnak)
Hálózati elérés
Ebben a leírásban kétféle hálózati hozzáférést vizsgálunk: a hagyományos, védett belhálózaton keresztüli, illetőleg a tetszőleges hálózatból SSH tunnelen keresztül vezetett (point to point) hozzáférést. Ezeket az alábbi táblázat hasonlítja össze:
- TODO!
Előfeltételek
- A Samba/Windows jogosultságkezelés modellezéséhez a tárterületnek Linux ext2/3/4 fájlrendszeren kell lennie bekapcsolt ACL (access control list) használattal, illetve a teljes NTFS szimulációhoz bekapcsolt user_xattr (kiterjesztett felhasználói attribútumok) használattal - ezt a kernelnek támogatnia kell (custom kernel esetén érdekes, a gyáriban be van kapcsolva a támogatás mindkettőre).
Telepítés
A leírt telepítés során átmenetileg authentikáció nélkül hozzáférhetővé tesszük a Samba tárterületét, ezért ügyeljünk arra, hogy a telepítést vagy biztonságos (bel)hálózati környezetben végezzük, vagy a szervergép tűzfalával megfelelően korlátozzuk a hozzáférést (a Shorewall házirend szerinti beállítása alapértelmezésben nem is engedi az SMB forgalmat).
A Samba kiszolgálót rendszergazdaként, Debian csomagból telepítjük:
apt-get install openssl putty-tools # tunnelezett eléréshez, ha nemcsak zárt belhálózaton fog üzemelni a Samba apt-get install samba samba-common samba-common-bin samba-doc tdb-tools # sok függőség!
A telepítéskor a Samba létrehoz egy egyedi Samba/Windows gépazonosítót (local SID), ennek értékét érdemes egy szövegfile-ba elmenteni:
net getlocalsid >>/root/install/localsid.$(hostname).$(date +%Y%m%d)
Ezután állítsuk le a konfigurálatlan Samba szervert:
/etc/init.d/samba stop
Beállítások
Először egy nagyon egyszerű kiszolgálót állítunk üzembe, amely egyetlen megosztást biztosít és ahhoz mindenkinek teljes hozzáférést ad, aki a kiszolgálóhoz SMB protokollon keresztül képes kapcsolódni.
Konfiguráció a samba-manager használatával
Töltsük le a legfrissebb samba-manager tarball-t, a /usr átmenetileg írható újracsatolása után könyvtárhelyesen tömörítsük ki (telepítés), majd csatoljuk vissza csak olvashatóan a /usr partíciót. Ezután adjuk ki a
smbm --configure
parancsot! Ez a következő beállításokat fogja elvégezni:
- Elkészíti egy shell és valid password nélküli sambauser Linux system felhasználót, akinek elsődleges csoportja a Debian maintainer által létrehozott sambashare lesz;
- Elkészíti és a sambauser:sambashare tulajdonába adja az alábbi tárterületet:
/var/opt/samba/homes # esetleges Samba felhasználók home könyvtárai /profiles # esetleges Samba felhasználók roaming profile-jai /services # esetleges Samba szolgáltatások (pl. nyomtatók) könyvtárai /share # a megosztott Samba tárterület alapkönvtára
- Elkészít egy egyszerű Samba szerver beállító állományt a /etc/samba/smb.conf file-ban (a meglévő, a maintainer által biztosított állomány elmentésével) az alábbiak szerint:
- NetBIOS azonosítás a gép nagybetűsre konvertált Linux hostneve;
- A fileserver nem nyújt hálózati tallózási támogatást senkinek;
- Minden, a script futásakor élő szerver IP címen engedélyezett az Samba elérése;
- A logolás nem a syslogba, hanem a /var/log/samba könyvtárba kerül, felhasználónként és gépenként külön állományokba;
- A felhasználói authentikáció elő van készítve, de nincs bekapcsolva;
- Be van kapcsolva az ntfs ACL-ek posix ACL-ekkel történő szimulációja;
- Be van kapcsolva a Sambán belüli adminisztrációs jogosultságok Windows privilégiumokkal történő ellenőrzése;
- A file nevekben ügyelünk az ékezethelyes karakterkezelésre;
- Egyetlen share-t definiálunk, amelyben minden file művelet a sambauser:sambashare Linux accounttal történik, a szokásos 2750/640 jogokkal;
- Ezt a share-t mindenki számára authentikáció nélkül, írásra és olvasásra is megosztjuk.
- Elkészít egy, a teljes Samba adminisztrálására jogosult Samba/Windows felhasználót, akinek Linux identitása a sambauser rendszerfelhasználó, Samba/Windows identitása a helyi gép Local Administrator accountja (rid=500) és tagja lesz a Builtin Administrators (konvencionálisan uid=S-1-5-32-544) Samba/Windows csoportnak (amelyet a script a sambashare Linux groupnak feleltet meg) - ehhez a maintainer már hozzárendelte valamennyi Sambán belüli adminisztrációs privilégiumot, így ennek a felhasználónak a Samba szolgáltatásokra vonatkozóan olyan jogköre lesz, mint egy helyi Windows rendszergazdának, ugyanakkor a Sambán kívül semmilyen érdemi jogosultsággal nem rendelkezik. A létrehozott Samba/Windows felhasználó a Samba Administrator aliast (Samba/Windows felhasználónevet) kapja és egy generált jelszót, amelyet a script a képernyőre és a naplóállományába is kiír;
- Kilistázza azokat a Samba/Windows felhasználókat (identitásokat), amelyeket a maintainer a Samba telepítésekor létező Linux (nem rendszer-) felhasználókhoz létrehozott. Tekintettel arra, hogy a (logikailag) Linux és (logikailag) Samba/Windows felhasználókat igyekszünk elkülönítetten kezelni, ezek a Samba/Windows identitások feleslegesek;
- Végül a script elindítja a Samba szolgáltatásokat.
A samba-manager tevékenységét a /var/log/samba/.smbm.log naplóban dokumentálja. A fenti konfigurációs parancs sikertelen lefutás esetén (illetve bármikor máskor is) újra kiadható, a már megtett konfigurációs lépéseket nem fogja megismételni illetve elrontani.
Shorewall (tűzfal) beállítások
Tesztelés előtt a tűzfalon be kell állítani a Samba által kiszolgált zóna (példánkban trs) felé és felől a forgalom engedélyezését:
-rw-r----- root root /etc/shorewall/rules [...] SMB/ACCEPT trs fw [...] SMB/ACCEPT fw trs [...]
A beállítás érvényesítéséhez a tűzfalat újra kell indítani:
/etc/init.d/shorewall restart
Gyorsteszt
Indítsuk el a Samba szervert:
invoke-rc.d samba start
és a /var/log/samba alatti logokban ellenőrizzük a hibaüzeneteket, valamint a log.nmbd állományban ellenőrizzük, hogy a Samba nem lett a munkacsoport számára főtallózó. Ezután egy, a telepítés alatti szervert SMB protokollon keresztül elérő (a trs zónában lévő), legalább Windows XP-t (lehetőleg Professionalt) vagy fejlettebb Windowst futtató munkaállomásról próbáljunk csatlakozni a fileserver megosztáshoz, abban hozzunk létre mappát, írjunk-olvassunk-töröljünk állományokat (ékezetes file névvel is)! A szerveren ellenőrizzük a létrejövő Linux jogosultságokat.
TODO!
A Samba démonok bejegyzése a Tiger által ismert démonok listájába
Az smbd és nmbd démonoknak állandóan futniuk kell, valamint joggal figyelnek a NetBIOS portokon. Mindezek ellenőrzésére az alábbi módosításokat jegyezzük be a /etc/tiger/tigerrc állományba:
-rw-r--r-- root root /etc/tiger/tigerrc [...] Tiger_Listening_ValidProcs='[...]|nmbd|smbd' [...] Tiger_Running_Procs='[...] /usr/sbin/nmbd /usr/sbin/smbd'
A Samba monitorozása a Muninnal
A Squeeze-beli munin-plugins-extra csomag tartalmaz egy Munin plugint, amely a Samba processek, zárolások és nyitott megosztások számát követi. Beállítást nem igényel, egyszerűen linkeljük be és érvényesítsük a beállítást:
ln -s /usr/share/munin/plugins/samba /etc/munin/plugins/samba invoke-rc.d munin-node restart
Szofisztikáltabb monitorozás: TODO!
A Samba mentése az Amandával
TODO!
# Fileserver # Settings and databases fileserver /etc/samba hard-disk-comp fileserver /var/lib/samba hard-disk-comp fileserver /var/log/samba hard-disk-comp # # Shares fileserver /var/opt/samba/homes hard-disk-comp fileserver /var/opt/samba/profiles hard-disk-comp fileserver /var/opt/samba/services hard-disk-comp fileserver /var/opt/samba/share hard-disk-comp
Kiegészítések
Ebben a részben a fenti, primitív kiszolgáló beállításait finomítjuk.
Egyszerű felhasználó- és jogosultságkezelés
Ha a kiszolgáló használatát - akárcsak részben - authentikációhoz szeretnénk kötni, szükség van a felhasználókezelésre. Az alábbi leírásban az alapértelmezett backendek használatával, a házirendnek megfelelően minimalista, a Linux-, és a Windows konvencióknak lehetőség szerint minél jobban megfelelő Samba/Windows felhasználókezelést alakítunk ki. A felhasználókezelés kezelőfelületeként jelen leírásban a parancssori smbm (samba-manager) scriptet használjuk.
Állítsuk a Samba security level-t felhasználói azonosításra (ilyenkor a Samba a felhasználói munkamenet kezdetén egyszer authentikálja a felhasználót, és a továbbiakban minden műveletnél ezt az identitást használja). A fileserver megosztás beállításánál kommentezzük ki a sambauser:sambashare nevében történő használatot:
-rw-r----- root root /etc/samba/smb.conf [...] ### Authentication ### # security = share security = user [...] [fileserver] # A simple W9x-like common share comment = fileserver volume = fileserver path = /var/opt/samba/share # guest ok = yes # guest only = yes # force user = sambauser # force group = sambashare
A változtatásokat a Samba újraindításával érvényesítsük:
invoke-rc.d samba restart
Gyorstesztként egy, a telepítés alatti szervert SMB protokollon elérő (Windows) munkaállomáson próbáljunk meg a fileserver megosztáshoz kapcsolódni - a Samba immár azonosítást kér. A telepítéskor létrehozott Samba Administrator felhasználónevével és jelszavával belépve a megosztás használható.
Megosztás alapú jogosultságkezelés
Ez esetben a hozzáféréseket kizárólag a /etc/samba/smb.conf állományban az egyes megosztásokhoz felvett korlátozásokkal szabályozzuk - a Samba fájlrendszerét (a Linux jogosultságokat) nem használjuk authorizációra (így a megosztás alapú jogosultságkezelés megvalósítható fájlrendszerbeli jogosultságokat egyáltalán nem kezelő - pl. vfat - tárterületen is).
TODO!
Jogosultságkezelés ACL-ekkel
Ez esetben a hozzáféréseket kizárólag a Linux ext2/3/4 fájlrendszerbeli ACL-ekkel szabályozzuk. Ennek előnye, hogy nem kell változtatni a /etc/samba/smb.conf állományban, valamint ezeket az ACL-eket a szervergépre bejelentkezés nélkül, Windows NT jellegű operációs rendszert futtató munkaállomásokon a helyi állományokéval analóg módon, grafikus felületen (Intéző, jobbklikk, Tulajdonságok, Biztonság) is beállíthatjuk.
TODO: teljes szimuláció kiterjesztett attribútumokkal (user_xattr).
A Sambát úgy állítjuk be, hogy:
- a könyvtárakat 2770, a fájlokat 660 jogokkal hozza létre (így a sambashare Linux = Administrators Samba/Windows csoportnak mindenre írás-olvasási joga van);
- az általa létrehozott állományok esetén a Linux ACL-ek (a Windows NTFS-ben megszokott módon) öröklődjenek;
- az Administrator Samba/Windows csoportnak lehetősége legyen kliensgépről is a jogosultságok módosítására (Intéző, jobbklikk, Tulajdonságok, Biztonság).
Megjegyzés: a fenti beállításokat az smbm által készített smb.conf állomány eleve tartalmazza:
-rw-r----- root root /etc/samba/smb.conf [global] [...] # NT ACL simulation with inheritance nt acl support = yes inherit acls = yes inherit permissions = yes ## Linux rwx mapped to Samba/Windows full control acl map full control = yes ## Full access for administrators group, allows the primary group owner ## of a file or directory to modify the permissions and ACLs on that file acl group control = yes [...]
Ha változtattunk a beállításokon, azt a Samba újraindításával érvényesíthetjük:
invoke-rc.d samba restart
Egy tárterület beállítása (példa)
Az alábbi példában az alapértelmezett fileserver Samba megosztást (tárterülete /var/opt/samba/share) használjuk, és (konzolról, root-ként kiadott parancsokkal) ennek gyökerében alakítunk ki különböző felhasználói csoportok számára elkülönített tárterületeket.
# Új csoportkönyvtár a common share-ben. # Az itt kiadott jogosultságok örököltetéséről a Samba gondoskodik. cd /var/opt/samba/share DIRNAME="directory_name" # töltsd ki! mkdir "$DIRNAME" # Minden jog a Samba Administrator (sambashare) csoportnak chown sambauser:sambashare "$DIRNAME" chmod 2771 "$DIRNAME" # other's X kellhet, hogy az Amanda backup beleléphessen # Dedikált csoport smbm -ag "Windows Groupname" # ha még nem létezne mylinuxgroup=$(smbm -lg -wg "Windows Groupname" | cut -f2 -d':') echo $mylinuxgroup # Gondosan ellenőrizni! # Minden jog a dedikált csoportnak setfacl -m g:$mylinuxgroup:rwX "$DIRNAME" # Lássuk: getfacl "/var/opt/samba/share/$DIRNAME" ## file: var/opt/samba/share/[$DIRNAME] ## owner: sambauser ## group: sambashare ## flags: -s- #user::rwx #group::rwx #group:smbNNNNN:rwx #mask::rwx #other::--x
Ha szeretnénk egy másik csoportnak csak olvasható hozzáférést adni:
# Dedikált R/O csoport smbm -ag "Windows R/O Groupname" # ha még nem létezne mylinuxgroup=$(smbm -lg -wg "Windows R/O Groupname" | cut -f2 -d':') echo $mylinuxgroup # Gondosan ellenőrizni! # Olvasási jog a dedikált csoportnak setfacl -m g:$mylinuxgroup:rX "$DIRNAME" # Lássuk: getfacl "/var/opt/samba/share/$DIRNAME" ## file: var/opt/samba/share/[$DIRNAME] ## owner: sambauser ## group: sambashare ## flags: -s- #user::rwx #group::rwx #group:smbNNNNN:rwx #group:smbNNNNN:r-x #mask::rwx #other::--x
Gyorsteszt
Figyelem: sajnos az smbm jelenleg nem képes felhasználót törölni, így az alábbiakban létrehozandó teszt felhasználót eltüntetni nem tudjuk, de - Samba/Windows nevének, opcionálisan jelszavának megváltoztatása és SSH kulcsának lecserélése után - később felhasználhatjuk. Ha ezt nem szeretnénk, mellőzzük ezt a tesztet!
- Hozzunk létre egy teszt felhasználót, adjuk hozzá őt előbb a R/W majd a R/O csoporthoz:
smbm -au "TestUser" # Véletlen jelszót kap, ami a képernyőn illetve a logban megjelenik # teszteljünk smbm -aug "TestUser" "Windows Groupname" # csoportba be # teszteljünk smbm -dug "TestUser" "Windows Groupname" # csoportból ki smbm -aug "TestUser" "Windows R/O Groupname" # csoportba be # teszteljünk smbm -dug "TestUser" "Windows R/O Groupname" # csoportból ki
Várt eredmény:
- A megosztáshoz a dedikált csoportba tartozó Samba/Windows felhasználó nevében csatlakozva azt tudjuk használni (írás, olvasás, átnevezés, törlés állományokra és mappákra, stb.), a csoporthoz hozzáadott más felhasználókkal közösen is (a jogosultságok öröklődnek és mindenki a csoport ACL jogán ír/olvas).
- A megosztáshoz a dedikált R/O csoportba tartozó Samba/Windows felhasználó nevében csatlakozva azt csak olvasni tudjuk.
- E két csoporton kívüliek számára a mappa nem érhető el.
Migráció
A jelen leírásban használt Samba beállítások gondoskodnak a Samba által létrehozott állományok fájlrendszerbeli jogosultságainak és (Posix) ACL-jeinek megfelelő beállításáról, azonban ha a tárterületre kívülről másolunk be állományokat (migráció), a jogosultságokat és ACL-eket manuálisan kell beállítanunk. Ezt talán a legegyszerűbben úgy tehetjük meg, hogy lemásoljuk annak a könyvtárnak a jogosultságait, amelyikbe a migráció történik, és ezeket alkalmazzuk a migrált állományokra. Ezt pl. az alábbi (konzolról, root-ként kiadott) parancssorokkal tehetjük meg:
cd /var/opt/samba/share/[relative_path] # Ebbe a könyvtárba fogunk másolni getfacl . >/tmp/acls.tmp # Ideiglenesen elmentjük ennek jogosultságait # # Manuális bemásolás - példánkban egyetlen könyvtárat másoljunk be, # utána alkalmazzuk a jogosultságokat külön az alkönyvtárakra és a fájlokra # DIRNAME="migrated folder" # A bemásolt könyvtár neve find "$DIRNAME" -type d -exec chown sambauser:sambashare "{}" \; -exec setfacl --set-file=/tmp/acls.tmp "{}" \; -exec chmod 2770 "{}" \; find "$DIRNAME" -type f -exec chown sambauser:sambashare "{}" \; -exec setfacl --set-file=/tmp/acls.tmp "{}" \; -exec chmod 660 "{}" \; rm /tmp/acls.tmp # Erre már nincs szükség
A migrált állományok tulajdonosa a sambauser:sambashare felhasználó és csoport (a Samba Administrator) lesz, de ez nem okoz problémát, hiszen minden hozzáférés a csoport ACL-ek jogán történik.
A Samba elérése SSH tunnelen
Audit lehetőségek
Lomtár használata
Malware keresés
Nyomtatás támogatása
Teljesítményre vonatkozó beállítások
TODO!
-rw-r----- root root /etc/samba/smb.conf [global] [...] log level = 1 [...]
Irodalom
- The Official Samba 3.x HOWTO and Reference Guide
- O'Reilly Samba könyv magyarul (zip/pdf állományok)
- SAMBA file rights and ACLs
- Using Windows security in Cygwin
- Windows NT Server Tools (TechNet letöltés)