Samba Acitve Directory Domain Controller konfigurálása Ubuntu 22.04-en
Az Active Directory
Az Active Directory-t (AD) a Microsoft fejlesztette ki a Windows operációs rendszer számára azzal a céllal, hogy a felhasználókat, csoportokat, a hálózat más erőforrásait és objektumait központilag tudja kezelni.
Az Active Directory egy hierarchikus tartományalapú rendszer. A hálózatban több tartomány (Domain) létezhet, melyeket összefoghatunk tartományfák-ba (trees) ezeket pedig tartomány-erdő-be (forest). Minden tartományhoz tartozhat egy tartományvezérlő szerver (Domain Controller, DC). A tartományokat DNS nevek azonosítják. A tartományok szervezeti egységek-et (Organizational Unit, OU) tartalmazhatnak , melyekben találhatók a felhasználói fiókok, csoportok, számítógépek és más objektumok. Ezek kezeléséért, hitelesítéséért, engedélyeik ellenőrzéséért felelősek a tartományvezérlő szerverek. Fontosságuk miatt több példányuk is lehet, ezek egymás között szinkronizálják az információkat az adatintegritás és a rendelkezésre állás biztosítása érdekében. Az AD legnagyobb előnye, hogy a felhasználók azonosítása és jogosultságaik kezelése (mihez férhetnek hozzá) központilag történhet.
Az AD hierarchiájának fő elemei (a hierarchiában alulról felfelé)
- Object (Objektum): Az AD-ben minden entitást objektumnak nevezünk. Ilyenek lehetnek például a felhasználói objektumok, csoportobjektumok, számítógépobjektumok, stb. Az objektumokhoz olyan tulajdonságok tartozhatnak, mint például a név, az azonosító, a jelszó, a jogosultságok.
- Organizational Unit (Szervezeti egység): Az Organizational Unit (OU) vagy szervezeti egység az AD hierarchiában logikailag összetartozó felhasználók, csoportok, számítógépek és más objektumok halmaza.
- Domain (Tartomány): Egy AD domain egy önálló biztonsági határral rendelkező hálózati tartomány, amelyben felhasználók, csoportok és erőforrások vannak szervezve. Egy tartomány egyedileg kezeli az autentikációt és az erőforrásokhoz való hozzáférést.
- Tree (Fa): Az AD tree tartományokból (domains) és az azokat összekapcsoló hierarchikus kapcsolatokból áll. Egy tree-nek legalább egy tartománya van, amelyet gyökértartománynak (root domain) nevezünk. Az alatta elhelyezkedő tartományok alkotják az ágakat (branches) és leveleket (leaves).
- Forest (Erdő): Az AD forest a legfelső szintű egység, ami összefogja a tartományokat és a tartományfákat. Egy forest egyedi névteret (namespace) és biztonsági határokat definiál az AD-ben.
A Samba
A Samba egy olyan nyílt forráskódú szoftvercsomag és protokoll, amely lehetővé teszi a hálózatokon a Windows és Unix-alapú rendszerek közötti fájl- és nyomtatómegosztást. Segítségével a Windows alapú kliensek képesek kommunikálni a Unix (vagy Linux) alapú kliensekkel.
Amellett, hogy olyan implementációkat biztosít, mint például a Server Message Block (SMB) és a Common Internet File System (CIFS), melyek lehetővé teszik a fájlok és nyomtatók megosztását a hálózatban, támogatja az Active Directory integrációt, így lehetővé teszi a Samba szerverek beágyazását Windows tartományokba.
A Samba több, különböző funkciókat és szolgáltatásokat biztosító részből épül fel:
- Samba szerver (smbd): Ez a fő komponens végzi a fájl- és nyomtatómegosztás szolgáltatásait a hálózaton. Az adatok biztonságos átvitelére az SMB/CIFS protokollt használja.
- Samba kliens (smbclient): Ez a komponens teszi lehetővé a Unix rendszerek számára, hogy hozzáférjenek és használják a Windows megosztásokat a hálózaton.
- Active Directory integráció: Ezzel a komponenssel integrálhatjuk be a Samba szervert a Windows Active Directory rendszerébe, lehetővé téve a Samba szerverek számára az authentikációt, az engedélyezést és a központosított felhasználó- és csoportkezelést.
- Samba DNS: DNS szolgáltatást nyújt a hálózatban, így lehetővé teszi a névfeloldást és a DNS rekordok kezelését a Samba szerveren.
A Samba mint Active Directory Domain Controller
A Samba a Domain Controller (DC) szerepkör megvalósításához 4 alapvető komponenst használ:
- Samba AD DC (Active Directory Domain Controller): Ez teszi lehetővé a Samba számára, hogy egy teljes értékű Active Directory tartományvezérlő szerepkört vegyen fel. Használatával a Samba képes lesz az olyan AD elemek kezelésére, mint a felhasználók, csoportok és egyéb GPO-k (Group Policy Objects).
- Kerberos: A biztonságos authentikációt és hitelesítést valósítja meg a Kerberos KDC (Key Distribution Center) szolgáltatás használatával.
- LDAP (Lightweight Directory Access Protocol): Az LDAP szolgáltatás segítségével tárolja a Samba az AD objektumokat tulajdonságaikkal együtt. Az LDAP valósítja meg a hatékony keresést az AD objektumai között, illetve lehetőséget ad az objektumok létrehozására, módosítására.
- DNS (Domain Name System): Ez a szolgáltatás felelős a névfeloldásért és a tartományhierarchia kezeléséért.
A környezet
A konfigurációs környezetünk a következőkből áll:
- Ubuntu 22.04 szerver root hozzáférési jogosultsággal
- Windows 10 Pro adminisztrátori hozzáféréssel
(A két gép azonos hálózatban legyen, ez most a 172.16.0.0/16, az Ubuntu IP címe: 172.16.0.252, a Windows DHCP-vel kapja a címét. Az átjáró címe: 172.16.0.1, a külső DNS címe: 8.8.8.8)
A konfiguráció lépései
- A DC szerver nevének beállítása és a DNS névfeloldás konfigurálása
- A szükséges Samba szolgáltatások telepítése
- A Samba AD konfigurálása
- Az időszinkronizálás konfigurálása
- A Samba AD DC Ellenőrzése
- Felhasználó létrehozása
- Windows 10 tartományba léptetése, bejelentkezés
- RSAT telepítése
- Linux felhasználó bejelentkezése Active Directory-ba
A Samba DC konfigurálása
1. A DC szerver nevének beállítása és a DNS névfeloldás konfigurálása
Mivel az Active Directory működésének az alapja a jól működő névfeloldás, első lépésben a DC nevét kell beállítanunk. Itt határozzuk meg azt a tartományt (domain-t) is, amiért felelős lesz.
Rögtön meg is kell jegyezni, hogy az Internet domain név rendszere és az Active Directory domain név rendszere két különböző dolog!
Az interneten a domain név egy egyedi azonosító, amelyet a weboldalak, az e-mail címek és más internetes szolgáltatások vagy gépek azonosítására használnak, és egy konkrét IP cím van hozzájuk rendelve. Ezzel szemben az AD-ben a domain név egy logikai struktúrát jelöl, mely segítségével azonosítani lehet a hálózaton belüli erőforrásokat. Az AD domain nevei nem kell hogy egyediek legyenek a világon. Az interneten használt domain nevek tehát az internetes szolgáltatások azonosítására szolgálnak, míg az Active Directory domain nevek a hálózati erőforrások és az azokhoz kapcsolódó bejegyzések logikai szervezését jelölik a Windows-alapú hálózatokban.
A Linux alapú rendszerekben a hosts fájlon és a resolv.conf fájlon keresztül tudjuk konfigurálni a névfeloldást:
Első lépésben konfiguráljuk a /etc/hosts állományban a Samba-t futtató hoszt állomásnevét és a domain névvel kiegészített teljes nevét (FQDN):
hostnamectl set-hostname dc
nano /etc/hosts
172.16.0.252 dc.almafan.lan dc
Ellenőrizzük le, hogy a változtatások életbe léptek-e:
hostname -f
ping -c5 dc.almafan.lan
A következőkben a resolv.conf fájlt szerkesztése. Ennek a fájlnak a feladata a DNS névfeloldás vezérlése. Egyrészt a DNS szervereink címét, másrészt a domain-aink nevét tartalmazza. Korábban ez a fájl fizikailag a /etc könyvtárban volt megtalálható, de most itt csak egy szimbolikus linket találunk ezen a néven:
root@dc:~# ls -l /etc/resolv.conf lrwxrwxrwx 1 root root 39 Feb 17 17:23 /etc/resolv.conf ∙∙/run/systemd/resolve/resolv.conf
Szüntessük meg ezt a linket, majd hozzunk létre magunknak egy saját resolv.conf állományt, és töltsük fel a DC adataival. Annak érdekében, hogy bármilyen folyamat ne tudja a fájl tartalmát megváltoztatni, állítsuk be rajta az i attribútumot.
Az “i” (immutable) attribútum a Linux fájlrendszerben azt jelenti, hogy egy fájl vagy könyvtár írhatatlan és nem módosítható. Megakadályozza, hogy a fájlt vagy könyvtárat töröljék, átnevezzék, módosítsák vagy felülírják a tartalmát.
unlink /etc/resolv.conf
touch /etc/resolv.conf
nano /etc/resolv.conf
nameserver 172.16.0.252
nameserver 0.0.0.0
search almafan.lan
chattr +i /etc/resolv.conf
2. A szükséges Samba szolgáltatások telepítése
A Samba DC-ként való használatához a következő csomagokra van szükségünk:
- samba: Lehetővé teszi az olyan alapvető Windows hálózati protokollok használatát a Linux rendszerben, mint például az SMB/CIFS, mellyel létrehozhatunk Samba-fiókot, megoszthatjuk fájlokat és nyomtatókat a hálózaton.
- acl: Részletes hozzáférési jogokat biztosít a fájlokhoz és könyvtárakhoz.
- attr: A fájlrendszer kiterjesztett attribútumainak kezelését teszi lehetővé.
- samba-dsdb-modules: Különböző modulokat tartalmaz a Samba Directory Services Database (DSDB) rendszerhez.
- samba-vfs-modules: Különböző Virtual File System (VFS) modulokat tartalmaz, amelyek kiegészítő funkciókat biztosítanak a Samba szolgáltatásokhoz. Ilyen például a fájlrendszer-átirányítást vagy a tömörítést.
- smbclient: Egy parancssoros eszköz, melynek segítségével a Linux rendszerről hozzáférhetünk a Windows-alapú szerverek és megosztások fájljaihoz.
- winbind: A Windows hálózati bejelentkezési információk kezelését végzi.
- libpam-winbind és a libnss-winbind: A Samba-val együttműködve teszik lehetővé a Linux rendszernek, hogy a Windows bejelentkezési rendszert használja a PAM (Pluggable Authentication Modules) és a NSS (Name Service Switch) keretrendszeren keresztül.
- libpam-krb5: A Kerberos alapú hitelesítést biztosítja a Linux rendszerben.
- krb5-config: Konfigurációs fájlokat és eszközöket tartalmaz a Kerberos rendszerhez.
Installáljuk fel ezeket a csomagokat:
apt install -y acl attr samba samba-dsdb-modules samba-vfs-modules smbclient winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools
A Kerberos installálása során a telepítő pár interaktív kérdést tesz fel. Ezeket a következőképpen válaszoljuk meg:
Kérdés | Válasz | Leírás |
---|---|---|
Default Kerberos Verion 5 Realm | ALMAFAN.LAN | Ez az alapértelmezett Kerberos tartomány, ami most megegyezik az AD tartományunkkal. |
Kerberos Servers for your realm | dc.almafan.lan | Ez a hitelesítést végző Kerberos szerverünk. |
Adminitraive server for your Kerberos realm | dc.almafan.lan | Ez az adminisztrációt végző Kerberos szerverünk. |
Az (elsődleges) Kerberos szerver és az adminisztrációs Kerberos szerver között az a különbség, hogy míg az elsődleges Kerberos szerver végzi a hitelesítési jegyek kiadását és ellenőrzését, tehát magát a hitelesítés folyamatát, addig az adminisztrációs szerver a rendszer adminisztrációjáért és konfigurálásáért felelős. Ebben a konfigurációban a két szerver azonos.
Miután felinstalláltuk a csomagokat, a háttérben a Samba szolgáltatásai elindulnak. Ezeket most letiltjuk, mivel egy másik szolgáltatással váltjuk ki a feladataikat:
systemctl disable --now smbd nmbd winbind
A leállított szolgáltatások a következő feladatokat látták volna el:
- smbd: Ez a szolgáltatás biztosítja az SMB/CIFS (Server Message Block/Common Internet File System) protokoll alapú fájlszolgáltatást. Kezeli a fájlok és megosztások hozzáférését, fájl- és nyomtatómegosztásokat, valamint a különböző hálózati fájlrendszer műveleteket.
- nmbd: A nmbd szolgáltatás a NetBIOS névszolgáltatást valósítja meg. A régebbi Windows rendszerek NetBIOS alapú névfeloldást használtak a hálózati erőforrásokhoz történő hozzáféréshez.
- winbind: Ezzel kapcsolódik a Samba a Windows Active Directory (AD) szolgáltatáshoz. A winbind felelős az AD-ban tárolt felhasználók és csoportok azonosításáért, valamint azok hozzáférési jogosultságainak lekérdezéséért.
Ezek helyett a samba-ad-dc szolgáltatást fogjuk futtatni, mely a fenti három szolgáltatás feladatait képes ellátni, és egy Domain Controller-t megvalósítani. Mivel a samba-ad-dc le van tiltva (maszkolva), ezért először megszüntetjük a maszkolását, majd engedélyezzük, hogy a rendszer indításakor ez a szolgáltatás is automatikusan elinduljon:
systemctl unmask samba-ad-dc
systemctl enable samba-ad-dc
3. A Samba AD konfigurálása és indítása
A Samba AD konfigurálásához az eredeti konfigurációs állomány helyett egy újat hozunk létre. A régit minden esetre átnevezzük, hogy megmaradjon.
mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
Ezután adjuk meg az AD alapadatait a samba-tool parancs segítségével:
samba-tool domain provision
A parancs futtatásakor a korábbi beállítások miatt csak az alapértelmezett értékeket kell elfogadnunk, ezek szerint az almafan.lan hitelesítési területen (realm) és az almafan tartományban (domain) lesz dc néven . A DNS továbbítónál adjuk meg a Google 8.8.8.8 DNS IP címét, míg az Admin jelszónál állítsuk be az adminisztrációs jelszavunkat.
A Samba háromféle szerepben tud működni: DC (Domain Controller) szerepben tartományvezérlőként működik. Member szerepeben a tartomány egy tagjaként működik egy meglévő Active Directory rendszerben. Ez a szerep lehetővé teszi a Samba szervernek, hogy csatlakozzon egy meglévő Windows-alapú tartományhoz, és megossza erőforrásait. Standalone szerepben önállóan, függetlenül működik, és nem tartozik egyetlen meglévő Active Directory tartományhoz sem.
A Samba DC-ként való használatakor, a Realm és a Domain a következőképpen értelmezhető: A Realm a Samba DC hitelesítési környezetének neve, mely általában a hálózat FQDN-je (Fully Qualified Domain Name). A Domain viszont az a domain, amit a DC kezel.
A következő lépés a Kerberos konfigurálása. Az eredeti konfigurációs fájlt elmentjük, majd a Samba saját Kerberos konfigurációját használjuk:
mv /etc/krb5.conf /etc/krb5.conf.orig
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
Most már csak az a dolgunk, hogy elindítsuk a szolgáltatást. Ellenőrizzük le, hogy rendben el is indult.
systemctl start samba-ad-dc
systemctl status samba-ad-dc
4. Az időszinkronizálás konfigurálása
Az Acive Directory környezetben kulcsfontosságú, hogy az egyes résztvevők órája együtt járjon. Ezt Az NTP szerver használata biztosítja. A Samba DC és a hálózat többi eszköze is a pontos és szinkronizált időt használja, mely elengedhetetlen a helyes hitelesítési folyamatokhoz, a hálózati tranzakciók időzítéséhez és a szolgáltatások koherenciájának fenntartásához. A Kerberos úgynevezett időjegyeket (time tickets) használ az időkorlátozott kriptográfiai aláírásokhoz, melyek szintén a pontos és szinkronizált órákon alapulnak.
Az Ubuntu ezen verziója az NTPd helyett már a Chrony programot használja az NTP szerverekkel való időszinkronizálására.
Először a Samba ntpd_signed programjának tulajdonosát és csoportját változtatjuk meg. Az ntpd_signed elektronikus aláírást generál az NTP szerverrel való biztonságos kommunikációhoz, így egy esetleges támadás nehezebben hamisítja meg az időadatokat. A program tulajdonosa a root lesz, míg a csoportja a _chrony. Másodjára a program könyvtárának a jogait változtatjuk meg úgy, hogy a tulajdonos (a root) teljes hozzáférést, a csoport (a _chrony) olvasási és végrehajtási hozzáférést kapjon, míg mindenki más semmilyen hozzáférést ne kapjon a könyvtár tartalmához.
chown root:_chrony /var/lib/samba/ntp_signd/
chmod 750 /var/lib/samba/ntp_signd/
Ezután kössük a Chrony szolgáltatást a Samba DC szerverünkhöz. A konfigurációs fájl bindcmdaddress sora azt az IP címet határozza meg, ahonnan a Chrony vezérlő parancsokat fogadhat el (csak a Samba DC szerverünktől), míg az allow sora azt a hálózatot definiálja, ahonnan a hosztok kérhetik az időszinkronizálást. Az ntpsigndsocket sorban végül megadjuk, hogy a Chrony szerver milyen socket-en keresztül kommunikáljon a ntp_signd szolgáltatással.
Egy socket a számítógépes hálózatokban használt kommunikációs csatorna. A socket lehetőséget biztosít a folyamatok közötti adatcserére a hálózaton keresztül.
nano /etc/chrony/chrony.conf
bindcmdaddress 172.16.0.252
allow 172.16.0.0/16
ntpsigndsocket /var/lib/samba/ntp_signd
Ezek után indítsuk el a Chrony szolgáltatást, és ellenőrizzük le, hogy rendben fut-e.
systemctl restart chronyd
systemctl status chronyd
5. A Samba AD DC Ellenőrzése
Először azt ellenőrizzük le, hogy a rendszer képes-e a tartomány és a szerver nevének feloldására. A DNS szerver rekordjainak lekérdezésére a host -t parancs szolgál, ahol a -t kapcsoló után adjuk meg a lekérdezni kívánt rekord típusát. A nevek lekérdezésére az A rekord típust adjuk meg:
host -t A almafan.lan
host -t A dc.almafan.lan
A parancsok kimenetéből látható, hogy a DNS képes feloldani a neveket.
A következő lépésben azt nézzük meg, hogy a Samba képes-e a Kerberos és az LDAP szolgáltatások elérésére. A DNS szerver a szolgáltatásokat SRV rekordokon keresztül azonosítja, így most az ilyen típusú (-t SRV) rekordokat kérdezzük le:
host -t SRV _kerberos._udp.almafan.lan
_kerberos._udp.almafan.lan has SRV record 0 100 88 dc.almafan.lan.
host -t SRV _ldap._tcp.almafan.lan
_ldap._tcp.almafan.lan has SRV record 0 100 389 dc.almafan.lan.
A kimenetekből látszik, hogy a DNS képes feloldani ezeket a szolgáltatásokat. A Kerberos az UDP 88-as porton keresztül, míg az LDAP a TCP 389-es porton keresztül érhető el a dc.almafan.lan gépen. (Az előttük lévő számok prioritást és súlyt jelentenek, melyek akkor kapnak szerepet, ha több SRV rekord is mutat ugyanarra a szolgáltatásra.)
A következő lépésben ellenőrizzük le, hogy a Kerberos a felhasználónak kioszt-e elsődleges hitelesítési jegyet. (Ilyet használ a bejelentkezéshez is.) Erre használjuk a kinit parancsot:
root@dc:~# kinit administrator@ALMAFAN.LAN
Password for administrator@ALMAFAN.LAN: *****
Warning: Your password will expire in 41 days on Thu 29 Jun 2023 06:17:48 AM UTC
Az, hogy a felhasználónak milyen szolgáltatásokhoz vannak jegyei, a klist paranccsal kilistázható:
root@dc:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@ALMAFAN.LAN
Valid starting Expires Service principal
05/18/2023 15:49:55 05/19/2023 01:49:55 krbtgt/ALMAFAN.LAN@ALMAFAN.LAN
renew until 05/19/2023 15:49:52
A parancs kimenetén látszik a kiosztott jegy érvényességi ideje, és az, hogy a krbtgt (Key Distribution Center Ticket Granting Ticket) szolgáltatáshoz fér hozzá az ALMAFAN.LAN tartományban. (A későbbiekben, ha már a Windows kliensről lépnek be a felhasználók, a klist paranccsal leellenőrizhetjük, hogy kik kaptak ilyen jegyekekt.)
6. Felhasználó létrehozása, kezelése
A Samba rendszerhez létrehozott samba-tool segédprogrammal olyan feladatokat hajthatunk végre, mint a felhasználók és csoportok kezelése, új gépeket adhatunk a tartományhoz, adminisztrálhatjuk a DC-t, konfigurálhatjuk a DNS-t vagy a Kerberost.
Most hozzunk létre egy új felhasználót user néven, majd listázzuk ki a felhasználókat:
samba-tool user create user
samba-tool user list
Amennyiben egy felhasználónak új jelszót kell beállítani, akkor ezt is ezzel a segédprogrammal tudjuk megtenni:
samba-tool user setpassword <felhasználónév> --newpassword=<új_jelszó>
7. Windows tartományba léptetése, bejelentkezés
Lépjünk most át a Windows rendszerünkre. Ahogyan az előfeltételekben már leírtuk, rendelkeznünk kell egy felinstallált Windows 10 rendszerrel, amely ugyanabban a hálózatban van, mint a Domain Controller. (Ez nem előfeltétele a működésnek, de most nem akarunk foglalkozni útvonalválasztással.)
A Windows-t futtató állomáson, amikor egy felhasználó nevével bejelentkezünk, akkor ezt a felhasználót vagy helyileg a gépen, vagy egy DC-n találja meg. A DC-t viszont meg kell találnia a kliensnek, hozzá így élő hálózati kapcsolattal kell rendelkeznie, és a nevét is fel kell oldania. Ehhez a DC-t kell beállítani a Windows kliens névszerverének.
Így először lépjünk be a Windows 10-be, és állítsuk át a DNS szerver IP címét a DC IP címére, majd léptessük be a gépet a tartományba. Ehhez indítsuk el rendszergazdaként egy PowerSehll parancssori ablakot, és adjuk ki a következő parancsot:
Add-Computer -DomainName "almafan.lan" -Restart
Miután a parancs bekérte a rendszergazda jelszavát (ez a DC-n beállított admninistrator-hoz tartozó jelszó), a Windows újraindul, és most már be lehet lépni a DC-n korábban létrehozott user felhasználóval. (A bejelentkezési képernyőn válasszuk az Other user lehetőséget, majd az ALMAFAN\user névvel, és a megfelelő jelszóval próbálkozzunk. Természetesen a DC adminisztrátoraként is bejelentkezhetünk (ALMAFAN\administrator)
Itt kell megjegyeznünk, hogy a felhasználó bejelentkezésekor a user@almafan.lan formában is megadhatjuk a felhasználói nevet.
8. Az RSAT (Remote Server Administration Tool) telepítése
Az RSAT segítségével a Windows kliensről távolról tudjuk adminisztrálni az Active Directory-t, melyet ugye az Ubuntu-n Samba-val hoztunk létre. (Az RSAT természetesen alkalmas valódi Windows szerverek távoli adminisztrálására is.) Ehhez először töltsük le a programot a Microsoft oldaláról (https://www.microsoft.com/en-us/download/details.aspx?id=45520), majd installáljuk fel.
Miután befejeződött a program installálása, írjuk a keresőbe az Active Directory karaktersorozatot, és máris láthatjuk, hogy milyen segédprogramok állnak rendelkezésre az Active Directory adminisztrálására.
9. Linux felhasználó bejelentkezése Active Directory-ba
Arra is van lehetőség, hogy az AD-be Linux-ról jelentkezzünk be. Természetesen ehhez számos olyan csomagot fel kell installálnunk a kliensen, mint amit a CD-nél is megtettünk, hiszen a szerver és a kliens kommunikációjához ezek is szükségesek.
A 22.0.4-es Ubuntu Desktop-ot lehetőséget ad már az installáláskor, hogy bejelentkezhessünk az Active Directory-ba. Most nem használjuk ki ezt a lehetőséget, hanem mi magunk fogjuk lépésről-lépésre konfigurálni ezt a lehetőséget, hogy megismerjük a folyamatot.
Első lépésben ugyanúgy, ahogyan a DC-n, konfigurálnunk kell, hogy a kliens képes legyen a saját nevét feloldani, a DC-t pedig mint névszerver elérni. Ehhez először kikapcsoljuk az eredeti szolgáltatást, feloldjuk a resolv.conf szimbólikus linket, majd létrehozzuk a saját resolv.conf állományt, és feltöltjük a megfelelő tartalommal, majd megakadályozzuk az i attribútummal a későbbi megváltoztatását.
systemctl disable --now systemd-resolved
unlink /etc/resolv.conf
nano /etc/resolv.conf
nameserver 172.16.0.252
nameserver 8.8.8.8
search almafan.lan
chattr +i /etc/resolv.conf
Ha készen vagyunk, teszteljük le a megfelelő ping parancsokkal, hogy működik-e a névfeloldás.
A következő lépésben a kliensen is konfiguráljuk a Chrony-t, mint NTP klienst, hiszen el kell érni, hogy a DC és a kliens órája együtt járjon. Felinstalláljuk a Chrony-t, majd a korábban látott módon módosítjuk a /etc/chrony/chrony.conf konfigurációs állományát.
apt install chrony -y
nano /etc/chrony/chrony.conf
bindcmdaddress 172.16.0.252
server dc.almafan.lan iburst
A server dc.almafan.lan iburst sorban adjuk meg, hogy melyik időszervert használja a kliens (A DC-t). Az iburst paraméterrel azt érjük el, hogy egy esetleges újraindulás során, a kliens azonnal felveszi a kapcsolatot a szerverrel annak érdekében, hogy minél hamarabb hozzájusson a pontos időhöz.
Ezek után indítsuk újra a szolgáltatást, és nézzük meg, rendben fut-e, majd ellenőrizzük le a chronyc tracking paranccsal, hogy a kliens csatlakozott-e a Samba DC NTP szerveréhez. (A Reference ID sorban kell látnunk az NTP szerver IP címét.)
systemctl restart chronyd
systemctl status chronyd
chronyc tracking
A következő lépésben frissítjük a csomaglistát, majd felinstalláljuk a kliensre a szükséges csomagokat:
apt update
apt install -y realmd sssd sssd-tools samba-common krb5-user packagekit samba-common-bin samba-libs adcli
A fenti csomagok feladatai:
- realmd: Egy keretrendszer, mely lehetővé teszi a Linux rendszerek csatlakoztatását az Active Directory-hoz.
- sssd: Az sssd (System Security Services Daemon) összekapcsolja a Linux rendszert az AD tartománnyal, gondoskodik az adatok helyi gyorsítótárazásáról, így lehetővé téve a hitelesítést offline módban is.
- sssd-tools: Az sssd-tools a System Security Services Daemon (sssd) segédprogramjait tartalmazza.
- samba-common: A samba-common csomag tartalmazza a Samba szerver és kliens közös fájljait és beállításait.
- krb5-user: A krb5-user csomag a Kerberos hitelesítési protokollhoz szükséges programokat tartalmazza.
- packagekit: A szoftvercsomagokat telepítéséhez szükséges programok gyűjteménye.
- samba-common-bin: Kiegészítő parancsokat és eszközöket tartalmaz a Samba fájl- és nyomtatómegosztási szolgáltatásokhoz.
- samba-libs: A samba-libs a Samba könyvtárakat tartalmazza, amelyeket más Samba-alapú alkalmazások használnak.
A csomagok installálása közben a telepítő rákérdez a tartományunk teljes nevére, írjuk be, hogy ALMAFAN.LAN.
A legfontosabb feladatot a realmd szolgáltatás végzi. Feladata az egyszerű és automatizált tartománytagság kezelése a Linux rendszerek számára. Ez magába foglalja az AD-hoz való csatlakozást, a felhasználók kezelését, beállításaik szinkronizálását és a biztonsági kulcsok kezelését. A következő lépésben a realmd-t kell konfigurálnunk. Készítsük el a /etc/realmd.conf konfigurációs állományt, és töltsük fel a következő sorokkal:
nano /etc/realmd.conf
[users]
default-home = /home/%U
default-shell = /bin/bash
[active-directory]
default-client = sssd
os-name = Linux Ubuntu
[service]
automatic-install = no
[almafan.lan]
fully-qualified-names = no
automatic-id-mapping = yes
user-principal = yes
manage-system = yes
Az egyes bejegyzések jelentése:
- default-home: A felhasználó alapértelmezett könyvtára
- default-shell: A felhasználó alapértelmezett shell-je
- default-client: Az AD-hez az sssd-vel kapcsolódik
- os-name: Ezzel a névvel azonosítja a klienst
- automatic-install=no Mivel minden szükséges csomagot telepítettünk már, nincsen szükség automatikus telepítésre
- fully-qualified-names=no Így a felhasználó névvel azonosítani lehet a Samba felhasználót
- automatic-id-mapping=yes Automatikusan hoz létre UID-t és GID-t
- user-principal=yes A UserPrincipalName (UPN) egy azonosító, amelyet a Microsoft Active Directory-ban használnak a felhasználók azonosítására. Ezt most automatikusan hozzuk létre.
- manage-system=yes A realmd teljes jogot kap a folyamat irányítására.
Ahogyan a szervernél is tettük, ellenőrizzük le a kinit paranccsal, hogy a kerberos kisoztja-e a hitelesítési jegyet a felhasználónak:
kinit administrator@ALMAFAN.LAN
klist
Ha minden rendben, léptessük be a gépünket a tartományba:
realm join --verbose example.lan --user-principal=UbuntuKliens/administrator@ALMAFAN.LAN --unattended
A parancsot a következőképpen lehet értelmezni:
- verbose: A parancs részletes kimenetet jelenít meg a könnyebb hibakeresés kedvéért
- almafan.lan: Ebbe a tartományba lépteti a gépet
- user-principal=UbuntuKliens/administrator@ALMAFAN.LAN: Összekapcsolja az UbuntuKliens/administrator felhasználót az ALMAFAN.LAN tartománnyal
- unattendend: A csatlakozás teljesen automatikus legyen interaktív kérdések nélkül
Amennyiben a csatlakozás sikeresen megtörténik, a válaszok között megjelenik a Successfully enrolled machine in realm sor.
Most konfiguráljuk az sssd-t, és ehhez nyissuk meg az sssd.conf állományt, majd módosítsuk az alábbi két bejegyzést bejegyzést a következők szerint:
nano /etc/sssd/sssd.com
access_provider = ad
ad_gpo_access_control = permissive
Az access_provider sorban adjuk meg, hogy az sssd az Acrive Directory-hez csatlakozzon. (Az sssd képes számos más rendszerhez is csatlakozni.)
Az ad_gpo_access_control az AD GPO-khoz (Group Policy Objects) való hozzáférést szabályozza. Alapértelmezetten a beállítása enforcing, ami annyit jelent, hogy nem lehet figyelmen kívül hagyni a GPO-k beállításait. Ezzel a beállítással azonban se az Ubuntu Desktop-ról, se a szerverről (jelenleg) nem lehetne bejelentkezni az AD-be (a desktop-ra igen), ezért állítjuk át megengedőre (permissive).
Az sssd a PAM (Pluggable Authentication Modules) modult használja a felhasználók hitelesítéséhez, és azonosítási adataik lekérdezéséhez. Annak érdekében, hogy a PAM modul aktuális és friss adatokat tartalmazzon a felhasználókról, ki kell adnunk a következő parancsot:
pam-auth-update --force
A parancs futtatása során interaktív módon engedélyeznünk kell, hogy a PAM bejelentkezéskor, amennyiben a felhasználó nem rendelkezik könyvtárral, automatikusan hozza azt létre. (Ehhez a Create home directory on login-t kell bejelölni.)
Kérdezzük le, hogy csatlakozva vagyunk-e az AD-hez:
realm list
Amennyiben a megjelenő információk között látjuk a configured: kerberos member sort, akkor minden rendben.
A 22.0.4-es Ubuntu Desktop esetén nincsen már más dolgunk, de olyan disztribúciók esetén amelyek a LightDM grafikus bejelentkezési felületet használják, még ezt is konfigurálnunk kell. Nyissuk meg a LightDM konfigurációs állományát, és a következő módosításokat hajtsuk végre:
nano /etc/lightdm/lightdm.conf
greeter-show-manual-login=true
allow-guest=false
A greeter-show-manual-login=true sorral elérjük, hogy a bejelentkező felhasználó nevét manuálisan vihetjük be (nem választani kell egy listából), míg az allow-guest=false sorral megakadályozzuk a vendégként való bejelentkezést.
Készen is vagyunk, kipróbálhatjuk a rendszert. Lépjünk vissza a DC-re, és hozzunk létre egy új Samba felhasználót (persze a korábbi felhasználóval is dolgozhatunk).
samba-tool user create user3
Lépjünk vissza az Ubuntu Desktop grafikus bejelentkező felületére, válasszuk ki a “Not listed” lehetőséget, majd írjuk be a user3@almafan.lan felhasználói nevet, és a korábban beállított jelszót. Ha mindent jól csináltunk, remélhetőleg sikeres a bejelentkezés.