Samba DC telepítése

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

  1. A DC szerver nevének beállítása és a DNS névfeloldás konfigurálása
  2. A szükséges Samba szolgáltatások telepítése
  3. A Samba AD konfigurálása
  4. Az időszinkronizálás konfigurálása
  5. A Samba AD DC Ellenőrzése
  6. Felhasználó létrehozása
  7. Windows 10 tartományba léptetése, bejelentkezés
  8. RSAT telepítése
  9. 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.

A cikkben szereplő példákban közvetlenül root felhasználóként bejelentkezve adjuk ki a parancsokat azért, hogy az állandó sudo használata ne vonja el a figyelmet magáról a parancsok használatáról. Felhívjuk a figyelmet viszont arra, hogy éles rendszerekben biztonsági szempontokból a sudo használata erősen ajánlott!

This will close in 20 seconds