Készítette: Bődi
Zoltán
Szükséges technológiák
Szükséges szoftverek
A konfigurálás folyamata
NDSHasznos linkek, dokumentumok a témában
Linux
Ismertető arról, hogyan tudjuk az NDS-beli felhasználókat egy ütemben beléptetni Linux operációs rendszerbe, anélkül, hogy a felhasználónak lenne külön Linuxos azonosítója. Miért fontos ez?
A probléma megoldására két lehetőségünk van:
Az első a Novell terméke, mellyel egy Linux szerveren NDS adatbázist
lehet létrehozni, tárolni. Az NDS átveszi a passwd, groups, stb fájlok szerepét.
A probléma megoldásához azonban ingyenes szoftverekre volt szükség, ezért a
második lehetőséget választottam, és azt ismertetem.
A Linuxon két API telepítésére van szükség, melyek a következők:
PAM
A PAM a Pluggable Authentication Module rövidítése, melynek segítségével
bármilyen autentikációs sémát meg lehet oldani, és ezeket a rendszergazda
szabályozza.
NSS
Az NSS a Name Service Switch rövidítése. Az NSS lecseréli a tradícionális
információkérő szervízeket, tehát a passwd, groups stb fájlok helyett (vagy
akár azokból igény szerint) a rendszergazda által kontrollált helyről olvassák
az alkalmazások a szükséges információkat.
E két API segítségével lehetséges, hogy a felhasználók teljes egészében, minden tulajdonságukkal az NDS-ben létezzenek. Természetesen a Linuxos alkalmazásokat az APIk támogatására fel kell készíteni, ez a SuSE és RedHat disztribúciókban meg is történt (a többiről nincs információm).
LDAP
Az LDAP a Lightweight Directory Access Protocol rövidítése. E protokoll
segítségével bármilyen X.500 alapú címtárhoz hozzáférhetünk egységes felületen.
Legtöbbször e-mail kliensekben használják címjegyzék megvalósítására, de több
más célra is alkalmas. Esetünkben ennek segítségével kérdezzük le a felhasználók
adatait az NDS-ből (név, login-név, home könyvtár, stb).
Linux
Az említett linuxos technológiát a pam_ldap és az
nss_ldap modul valósítja meg. Ha a
használt disztribúcióban nincs benne, akkor az Internetről ezeket le kell
tölteni, és a csomagban írtak szerint azokat lefordítani és feltelepíteni
szükséges.
NetWare
Az NDS felkészítéséhez szükségünk lesz egy szoftverre, amellyel kibővítjük a
sémát, és az új attribútumokat ki tudjuk tölteni. A séma bővítéséhez az ndsmgr32
programot javaslom, mely a sys:public\win32 könyvtárban található.
Az attribútumok kitöltéséhez a dssnoop
vagy a ScheMax szoftver javasolható
Windows felületen, míg linux alatt az OpenLdap
csomagban megtalálható ldapmodify használható.
intraNetware esetén még szükségünk
van egy LDAP szerverre, mely a Novelltől letölhető. A NetWare 5-ben már natív LDAP támogatás
található, így ez benne van az operációs rendszerben. (Az LDAP szerver
beálítására nem térek ki, a dokumentációban elolvasható. A leírás folyamán az
LDAP-t működőképesnek feltételezem.)
A linuxnak tudnia kell egy felhasználóról a
következő adatokat minimálisan ahhoz, hogy be tudja léptetni:
Ahhoz, hogy az LDAP szerver ezeket az adatokat szolgáltatni tudja, be kell írnunk azokat az NDS-be, majd az LDAP szervernek meg kell adni az összerendeléseket. Ennek menete a következő:
1. Indítsuk el az ndsmgr32 programot. Itt az NDS partíciónkra
kattintunk, és a File menüből el kell indítani a Schema
Administratort. Ekkor egy kéthasábos keret jelenik meg, melynek
első hasábjában a már meglévő objektum osztályok,
a másodikban a meglévő attribútumok láthatók.
Indítsuk el az attribútum készítő varázslót,
és hozzunk létre négy attribútumot a következő
tulajdonságokkal:
Syntax: Case Ignore String
Single Valued, Sized (1..64), String, Synchronize
A neve bármi lehet, de azt javaslom, hogy az első pár
karakter utaljon a linuxra (pl LNX), a többi pedig természetesen
a tartalmára. Ha a létrehozás után valamit
elrontottunk, akkor most még ki tudjuk törölni az attribútumot,
később már nem.
Ezután az első oszlopban kattintsunk duplán a User osztályra,
majd az Add attribute gombra, és itt az újonnan létrehozott
attribútumokat adjuk hozzá a jobb oldali listához.
Ezután az attribútumokat nem lehet törölni.
2. A dssnoop programban az NDS browser lapon navigáljunk egy olyan szervezeti egységre, ahol felhasználók vannak, majd az Object Editor lapon válasszunk ki egy teszt felhasználót. Az Attribute listából válasszuk ki az egyik attribútumunkat, a jobb oldali sorba írjuk be az értékét, majd kattintsunk az Add Criteria gombra. Mind a négy attribútum kitöltése után a Modify Object gombra kattintással íródnak be az NDS-be az adatok.
3. Indítsuk el valamelyik Nwadmn programot, és az LDAP telepítése során létrejött LDAP Group - <szerver> objektumra kattintsunk duplán. Itt be kell pipálni az Allow Clear Text Password, vagy Allow NDS user binds sort, verziótól függően. A Class Map lapon létre kell hozni egy “posixAccount” (idézőjel nélkül) LDAP osztályt, majd hozzá kell rendelni a User NDS osztályt. Az Attribute Map lapon hozzuk létre a következő négy attribútumot: uidNumber, gidNumber, loginShell, homeDirectory, majd rendeljük hozzájuk az általunk, az első pontban létrehozott NDS attribútumokat. Az OK-ra kattintva újra kell indítani az NLDAP szervert, és ha nem hibáztunk, akkor az NDS-beli felhasználó elkészült.
4. A következőképpen tesztelhetjük, hogy jól
dolgoztunk-e:
A NetScape Communicator címsorába írjuk be a következő
URL-t (természetesen a megfelelő adatokkal):
ldap://10.1.1.1/o=iskola??sub?(cn=<teszt user>)
Ekkor a következő sorokat kell minimálisan kapnunk (a megfelelő
adatokkal), hogy a dolog működjön (természetesen ettől
több is lehet, és a sorrend nem fontos):
gidNumber 100
uidNumber 502
loginShell /bin/bash
homeDirectory /home/bude
Last Name Bodi
Zoltan
Object Class posixAccount
organizationalPerson
person
top
Name
bude
Ha nem ilyen az eredmény, akkor nézzük át
az LDAP beállításokat, valószínűleg
abban van a hiba.
Hogy az LDAP-n keresztüli belépés működjön,
fel kell telepítenünk az nss_ldap, és a pam_ldap csomagokat.
Az újabb disztribúciókban ezek már rpm csomagként
benne vannak. Ezekkel kapunk minta konfigurációs állományokat.
Egy gépre javaslom feltenni az openldap csomagot is, mert ebben
van az ldapmodify program, amellyel később automatizálhatjuk
az NDS felhasználók adatainak kitöltését.
A konfiguráció menete a következő:
1. Az /etc/openldap/ldap.conf –ban ki kell töltenünk az LDAP szerver adatait. A mintaadatok útmutatást adnak, az értelemszerű kitöltés egyszerű. Ha még nincs ilyen állományunk, az nss_ldap csomagban van minta.
2. Ha feltelepítettük az nscd csomagot (Name Service Cache
Daemon, amely mint a nevéből is kitűnik, a Name Service kéréseket
cache-eli), akkor a következő sorokat módosítsuk az
/etc/nscd.conf -ban:
suggested-size passwd 9973
keep-hot-count passwd 200
Erre azért van szükség, mert előfordulhat, hogy
a kis cache miatt nem megfelelő értékeket kap vissza az NSS,
és emiatt nem fog megfelelően működni. (A tesztelés
folyamán le is állíthatjuk ezt a démont, hogy
biztosan ne zavarjon.)
3. Az /etc/nsswitch.conf –ban a passwd sorba a többi paraméter elé írjuk be az “ldap”-t. Ez azt jelenti, hogy a passwd fájl előtt (helyett) az LDAP szervertől kérjük a felhasználók adatait. A fájl tartalmának magyarázatát a “man nsswitch.conf” paranccsal tudhatjuk meg részletesen.
Ezután megint tesztelhetjük munkánk eredményét.
Az ldap kérések működését az ldapsearch
paranccsal próbálhatjuk ki, amely parancsról szintén
van man oldal. A fenti URL-lel egyező parancs:
ldapsearch –h 10.1.1.1 –b o=iskola –s sub “cn=bude”
Itt ugyanolyan eredményt kell kapnunk, mint a már bemutatott
böngészős próba szerint.
Az NSS működését az nss_ldap csomagban található
ldaptest.pl perlben íródott programmal próbálhatjuk
ki. Nyissuk meg a programot szerkesztésre, és a “root” felhasználó
helyett írjuk be az NDS-beli teszt-felhasználónk nevét,
kontextus nélkül, a 0 UID szám helyére a felhasználónak
általunk adott számát. A program kimenetét
irányítsuk át logfájlba, és ehhez hasonló
sorokat kell látnunk az elején:
*** getpwnam ***
bude x 502 100 bude /home/bude /bin/bash
*** getpwuid ***
bude x 502 100 bude /home/bude /bin/bash
*** setpwent ***
*** getpwent ***
bude x 502 100 bude /home/bude /bin/bash
A lista még folytatódik, a lényeg, hogy a teszt
felhasználónk benne legyen. Láthatjuk, hogy itt már
a passwd fájl tartalmához nagyon hasonló kimenetet
kaptunk.
Ezután, ha létrehozzuk a teszt-felhasználónk
részére a linuxos home könyvtárát, akkor
megpróbálhatunk bejelentkezni is vele, jó eséllyel
sikerülni fog. A bejelentkezés során a login nevet kontextus
nélkül kell megadni, jelszónak természetesen
az NDS-beli jelszót szükséges megadni.
4. Ezután a PAM segítségével beállíthatjuk az autentikációs sémát. Ehhez érdemes elolvasni a PAM dokumentációját. Egy általam használt login fájl:
#%PAM-1.0
auth
required
/lib/security/pam_securetty.so
auth
required
/lib/security/pam_nologin.so
auth sufficient
/lib/security/pam_ldap.so
auth
required
/lib/security/pam_unix_auth.so try_first_pass
account sufficient
/lib/security/pam_ldap.so
account required
/lib/security/pam_unix_acct.so
password required
/lib/security/pam_cracklib.so
password required
/lib/security/pam_ldap.so
password required
/lib/security/pam_unix.so
strict=false
session required
/lib/security/pam_mkhomedir.so
session required
/lib/security/pam_unix_session.so
Természetesen a pam_ldap csomagban találunk példákat,
amit bemásolva az /etc/pam.d könyvtárba, majdnem készen
is vagyunk. érdemes jól betesztelni a különböző
programokat (ftp, xdm, stb), nehogy később meglepetés érjen.
Fehívom a figyelmet az mkhomedir-t tartalmazó sorra.
Ez a modul automatikusan létrehozza a felhasználó
home könyvtárát, ha az nem létezik. Alapértelmezésként
az /etc/skel könyvtárat másolja át, de paraméterként
mást is adhatunk neki. így a könyvtárlétrehozás
elég nagy terhe sem nehezedik a vállunkra.
Ha az egész procedúrát végigküzdöttük,
akkor elértük a kitűzött célt: az NDS-beli felhasználók
be tudnak Linux operációs rendszerbe a jelszavukkal. Probléma
lehet még a több száz felhasználó adatait
kitölteni az NDS-ben. Ehhez a már említett ldapmodify
programot javaslom. Megfelelő szkriptekkel készíthetünk
olyan bemeneti fájlokat, melyből a ldapmodify kitölti a megfelelő
attribútumokat. Ehhez javaslom elolvasni az ldapmodify dokumentációját.
Ezzel a lépéssel tulajdonképpen más, NDS-sel
kapcsolatos adminisztrációs munkát is jelentősen le
tudunk rövidíteni, ha nagy tömegben kell adatokat változtatni,
gondoljunk például a tanév eleji felhasználói
objektumok létrehozására. (Lehetőség van az
attribútumokat kitölteni az nwadmin-nal, ha feltelepítjük
a ScheMax szoftvert.)
LDAP:
http://www.ldapcentral.com/
http://www.kingsmountain.com/ldapRoadmap.shtml
http://www.innosoft.com/ldapworld/
RFC 2307, 2251, 2252, 2254, 2256, 1558