Esettanulmány: Samba+LDAP+ddwrt
A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen Raddan (vitalap | szerkesztései) 2008. december 26., 01:45-kor történt szerkesztése után volt.
Mottó : "Opening windows to a wider world"
Tartalomjegyzék[elrejtés] |
1 Áttekintés
- SMB
- Server Message Block
- fájl és nyomtatómegosztásra szolgáló protokoll, eredetileg az IBM tervezte, később a Microsoft fejlesztette tovább több bővítést is hozzáadva (pl. eredetileg SMB csak NetBIOS felett működött, de később hozzáadták a 445-ös portot a direkt TCP feletti működésre)
- CIFS
- Common Internet File System
- az SMB kiegészítése, többek közt nagyobb fájlméreteket támogat, symlink/hardlink -ek vannak
- A kettőt gyakran szinonimaként használják, ami nem teljesen igaz, de nagyon közel jár hozzá - kevés olyan gép van, amelyiken az alap SMB meg van valósítva, a CIFS viszont nincs (ha van ilyen egyáltalán)
- a protokollnak rengeteg megvalósítása van : értelemszerűen a Windowsok Fájl- és nyomtatómegosztása, de van beépített CIFS-szerver pl. Open Solarisban, Novell NetWare-ben is
2 Mi is ez?
- A SaMBa egy SMB/CIFS szolgáltatásokat megvalósitó kliens/szerver szoftver.
- alapvető célja egy olyan program fejlesztése, ami ingyenesen használható nem-windows rendszereken is
- open-source
- a Windows Fájl- és nyomtatómegosztással ellentétben megbízhatóan működik
- könnyen integrálható meglévő tartományokba
- konfigurációt az smb.conf fájl tárolja
- 2 fő részből áll
- smbd : az SMB/CIFS szolgáltatásokat valósítja meg
- nmbd : a NetBIOS szolgáltatásokat kezeli
3 Jelszókezelés
- Háromféle backend-et ismer, ezeket a passdb backend opcióval adhatjuk meg
- smbpasswd
- a titkositott jelszavakat tárolja LANMan és NTLM formátumban
- tárolja még az UID-t, meg 4 féle flag-et:
- U : "sima" felhasználó
- D : disabled, nem jelentkezhet be
- N : no password
- W : workstation trust account, akkor lenne értelme,ha PDC-ként konfiguráljuk a Samba-t
- X : a jelszó soha nem jár le
- minden usert fel kell venni (vagy egy felvett userhez map-olni) akit a szerveren akarunk hitelesiteni
- ezenkivül minden ide felvett usernek a \etv\passwd-ben is léteznie kell
- van lehetőség a kettö szinkronizálására
unix password sync = yes
- tdbsam
- az smbpasswd továbbfejlesztése
- indexelést használ
- ldapsam
- LDAP alapú hitelesitéshez
- opcionálisan LDAP URL-t is megadhatunk a helyéhez (alapból : ldapsam : ldap:\\localhost):
passdb backend = ldapsam : ldap:\\ldap.ceg.hu
- a titkositott jelszavak fogadását ki is lehet kapcsolni, ekkor figyelmen kivül hagy minden jelszó-fájlt.
[global] encrypt passwords = no
4 Hozzáférések kezelése
- hosts allow , hosts deny
- IP-cím/maszk formátumban
- ha a hosts allow opció átenged egy állomást, a hosts deny már nem tiltja le. Így ha pl. a hosts deny = 0.0.0.0/0 , akkor csak a hosts allow által megengedett állomások kapcsolódhatnak
- Security level : a legalapvetőbb beállitás, megadja a megosztásokhoz való hozzáférés menetét. 2.2 óta 5-féle létezik :
- Share-level
- nem használ user-neveket
- minden megosztásnak van egy jelszava ('null' is lehet), aminek ismeretében bárki hozzáférhet
- sőt,ha guest ok paraméter igaz, mindenki alapból megkapja a guest account-al definiált user jogait
- a jelszavakat a hozzájuk tartozó user-nevekkel adjuk meg, a példában rdan és bela felhasználók jelszavával lehet hozzáférni a megosztáshoz
- Share-level
[global] security = share [share1] username = rdan,bela
- ez a fajta megosztás semmiképp nem ajánlott, kivéve ha egyszerüen csak meg akarunk valamit osztani mindenféle szabályozás nélkül
- User-level
- a felhasználónak be kell jelentkeznie
- léteznie kell az smbpasswd fájlban
- vagy meg kell feleltetni egy ilyen user-nek (user mapping)
- ezeket a megfeleltetéseket külön fájlban kell tárolni, unix-user:nem unix-user formában
- User-level
[global] username map = /etc/samba/mappings
//a map-file tartalma root: administrator user1 : rdan
- valid users
- invalid users
- admin users
- write list
- read list
- map to guest : megadhatjuk, hogy bizonyos esetekben automatikusan guest account-hoz map-olja a felhasználót
- never
- bad username
- bad password
- bad uid
- 3.0 óta ez az alapbeállitás
- Server-level
- ugyanaz, mint az előző, csak itt másik SMB szerverre bizzuk a hitelesitést
- ezeket a password server opcióval lehet megadni (ez lehet NetBIOS-név vagy IP-cim is)
- Server-level
[global] security = server password server = 152.66.238.132 wiki
- a szerver nem hitelesiti magát - érzékeny a megszemélyesitésre.
- ha nem jár sikerrel akkor visszavált USER módba
- Domain-level
- a szerver NT-tartománytagként viselkedik, és a hitelesitést a PDC (vagy a BDC) végzi.
- csak NT domain-ekhez való, AD-hez ott az ADS mód (lejjebb) - ergo ma már nem sok értelme van
- Domain-level
- ADS-level
- Active Directory tagként müködik
- a szerveren konfigurálni kell a Kerberost, és be kell léptetni a tartományba
- viszont ettől még továbbra sem ő a DC
- allow trusted domains : elfogad-e más tartományból érkező kéréseket is (alapból igen)
- ADS-level
5 Samba és LDAP
Ahogy már említve is volt, a hitelesítést LDAP szerver is végezheti. Nagyszámú felhasználó esetén már kénytelenek leszünk egy címtárba integrálni a samba-t, most ennek a lépéseit mutatnám be.
5.1 Samba beállításai
- password backend-nek ldapsam -ot kell beállítani
- meg kell adni az admin DN-t - az ő nevében történik a kapcsolatfelvétel az LDAP-szerverrel
- lehetőség van SSL használatára (ldap ssl)
- start tls : az LDAPv3 Start_TLS műveletét használja
- on : LDAPS használata
- off
- meg lehet adni utótagokat is, amiket a samba a hozzáadott tagok nevéhez fűz hozzá
- ldap user suffix
- ldap group suffix
- ldap machine suffix
- ldap suffix : ezt az utótagot még pluszban hozzáfűzi minden hozzáadott objektumhoz
- érdemes még timeout értéket is beállítani
Egy egyszerű LDAP-os konfiguráció :
[global] security = server password server = 152.66.238.132 passdb backend = ldapsam ldap ssl = start tls ldap timeout = 15 ldap admin dn = cn=admin,dc=ceg,dc=hu ldap machine suffix = ou=Computers ldap user suffix = ou=People ldap group suffix = ou=Groups ldap suffix = ou=ceg, ou=hu
5.2 OS beállításai
- a samba-nak mindig szüksége van uid/gid -ra, ezért minden Windows felhasználóhoz egy UNIX-fiókot kellene mapolni (ahogy az fentebb is említve volt). Nagyszámú felhasználó esetén ez járhatatlan, ezért célszerű a a unix-fiókokat is ldap-ba integrálni.
- ehhez be kell állítani,hogy az autentikáció (PAM) és a névfeloldás (NSS) a címtárból történjen
- PAM: pam_unix2 alapból támogatja LDAP címtár használatát, a szükséges paramétereket az ldap.conf fájl tartalmazza
#ldap.conf példakonfiguráció #ldap-szerver címe host your.nds.server your2.nds.server #az ág ahol a fiókok vannak base dc=my,dc=base #SSL használata a kapcsolathoz (no, on vagy start_tls) ssl on #NSS password, shadow és group lekérdezések LDAP-linkjei nss_base_shadow ou=user,dc=my,dc=base nss_base_passwd ou=user,dc=my,dc=base nss_base_group ou=groups,dc=my,dc=base
#pam_unix2.conf beállítása LDAP használatához auth: call_modules=ldap nullok account: call_modules=ldap
- NSS: a konfigurációc állományában (nsswitch.conf) a shadow, passwd ésgroup lekérdezésekhez hozzá kell adni az ldap -ot:
#nsswitch.conf példakonfiguráció passwd: files ldap group: files ldap shadow: files ldap hosts: files dns wins networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
6 Felhasználhatóság
6.1 Samba + ddwrt
7 Dokumentációk
- rendkivül jól és érthetően dokumentált (ritkaság)
- Official Samba 3.2.x HOWTO [1]
- SWAT beépitett leirásai is jól használhatóak konfigurálás közben