Weboldal keresés

A PAM konfigurálása és használata Linuxban


A Linux-PAM (a Pluggable Authentication Modules rövidítése, amely a Unix-PAM architektúrából fejlődött ki) a megosztott könyvtárak hatékony csomagja, amellyel dinamikusan hitelesíthetők a felhasználók az alkalmazásokhoz (vagy szolgáltatásokhoz). ) Linux rendszerben.

Több alacsony szintű hitelesítési modult integrál egy magas szintű API-ba, amely dinamikus hitelesítési támogatást biztosít az alkalmazások számára. Ez lehetővé teszi a fejlesztők számára, hogy hitelesítést igénylő alkalmazásokat írjanak, függetlenül az alapul szolgáló hitelesítési rendszertől.

Sok modern Linux disztribúció alapértelmezés szerint támogatja a Linux-PAM (a továbbiakban: „PAM”) technológiát. Ebben a cikkben elmagyarázzuk, hogyan konfigurálható a speciális PAM Ubuntu és CentOS rendszerekben.

Mielőtt továbblépnénk, vegye figyelembe, hogy:

  • Rendszergazdaként a legfontosabb annak elsajátítása, hogy a PAM konfigurációs fájl(ok) hogyan határozzák meg a kapcsolatot az alkalmazások (szolgáltatások) és a csatlakoztatható hitelesítési modulok (PAM) között, amelyek a tényleges hitelesítési feladatokat végzik. Nem feltétlenül kell megértenie a PAM belső működését.
  • A PAM komolyan megváltoztathatja Linux rendszerének biztonságát. A hibás konfiguráció részben vagy teljesen letilthatja a hozzáférést a rendszerhez. Például egy konfigurációs fájl(ok) véletlen törlése az /etc/pam.d/* és/vagy az /etc/pam.conf alatt kizárhatja saját rendszer!

A program ellenőrzése a PAM-tudatos

A PAM használatához az alkalmazásnak/programnak „PAM-tudatosnak” kell lennie; kifejezetten a PAM használatához kell megírni és lefordítani. Ha meg szeretné tudni, hogy egy program „PAM-tudatos”-e vagy sem, ellenőrizze, hogy az ldd paranccsal a PAM-könyvtárral lett-e lefordítva.

Például sshd:

sudo ldd /usr/sbin/sshd | grep libpam.so

	libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)

A PAM konfigurálása Linux alatt

A PAM fő konfigurációs fájlja az /etc/pam.conf, az /etc/pam.d/ könyvtár pedig a PAM konfigurációs fájljait tartalmazza minden PAM-tudatos alkalmazás/szolgáltatás. A PAM figyelmen kívül hagyja a fájlt, ha a könyvtár létezik.

A fő konfigurációs fájl szintaxisa a következő. A fájl egyetlen sorba írt szabályok listájából áll (a szabályokat a „\ ” escape karakterrel bővítheti), és a megjegyzések előtt a „# ” jeleket, és nyúljon a sor következő végéig.

Az egyes szabályok formátuma a tokenek szóközzel elválasztott gyűjteménye (az első három nem különbözteti meg a kis- és nagybetűket). Ezeket a tokeneket a következő szakaszokban ismertetjük.

service type control-flag module module-arguments 

ahol :

  • szolgáltatás: az alkalmazás tényleges neve.
  • típus: modultípus/kontextus/interfész.
  • control-flag: a PAM-API viselkedését jelzi, ha a modul sikertelenül hajtja végre a hitelesítési feladatát.
  • modul: a PAM abszolút fájlneve vagy relatív elérési útja.
  • modul-argumentumok: a modul viselkedését vezérlő tokenek szóközzel elválasztott listája.

Az /etc/pam.d/ fájl szintaxisa hasonló a fő fájléhoz, és a következő formátumú sorokból áll:

type control-flag module module-arguments

Ez egy példa egy szabálydefinícióra (modul-argumentumok nélkül), amely az /etc/pam.d/sshd fájlban található, és nem engedélyezi a nem root bejelentkezést, amikor /etc/nologin létezik:

account required pam_nologin.so

A PAM-kezelési csoportok és a vezérlőjelzők megértése

A PAM hitelesítési feladatok négy független felügyeleti csoportra vannak osztva. Ezek a csoportok egy tipikus felhasználó korlátozott szolgáltatás iránti kérelmének különböző aspektusait kezelik.

Egy modul az alábbi felügyeleti csoporttípusokhoz van társítva:

  • fiók: fiókellenőrzési szolgáltatások biztosítása: lejárt a felhasználó jelszava? ez a felhasználó hozzáférhet a kért szolgáltatáshoz?
  • hitelesítés: felhasználó hitelesítése és felhasználói hitelesítő adatok beállítása.
  • jelszó: felelősek a felhasználói jelszavak frissítéséért, és együttműködnek a hitelesítési modulokkal.
  • munkamenet: a munkamenet elején és végén végrehajtott műveletek kezelése.

A PAM betölthető objektumfájloknak (a moduloknak) a következő könyvtárban kell lenniük: /lib/security/ vagy /lib64/security attól függően az építészet.

A támogatott vezérlőjelzők a következők:

  • szükséges: a hiba azonnal visszaadja a vezérlést az alkalmazásnak, jelezve az első modulhiba természetét.
  • szükséges: mindezen modulok szükségesek ahhoz, hogy a libpam sikeres legyen az alkalmazásban.
  • elegendő: mivel az összes előző modul sikeres volt, ennek a modulnak a sikere azonnali és sikeres visszatéréshez vezet az alkalmazáshoz (a modul sikertelenségét figyelmen kívül hagyja).
  • nem kötelező: a modul sikerét vagy kudarcát általában nem rögzítik.

A fentieken kívül a kulcsszavakon kívül van még két érvényes vezérlőjelző:

  • Include and substack: tartalmazza a vezérlő argumentumaként megadott konfigurációs fájl összes sorát.

Hogyan lehet korlátozni a root hozzáférést az SSH szolgáltatáshoz PAM-on keresztül

Példaként beállítjuk, hogyan lehet a PAM használatával letiltani a root felhasználói hozzáférést a rendszerhez SSH-n és bejelentkezési programokon keresztül. Itt szeretnénk letiltani a root felhasználói hozzáférést a rendszerhez a bejelentkezési és az sshd szolgáltatásokhoz való hozzáférés korlátozásával.

Használhatjuk a /lib/security/pam_listfile.so modult, amely nagy rugalmasságot kínál az egyes fiókok jogosultságának korlátozásában. Nyissa meg és szerkessze a célszolgáltatás fájlját az /etc/pam.d/ könyvtárban az ábra szerint.

sudo vim /etc/pam.d/sshd
OR
sudo vim /etc/pam.d/login

Adja hozzá ezt a szabályt mindkét fájlhoz.

auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

A fenti szabály tokenek magyarázata:

  • auth: a modul típusa (vagy kontextus).
  • kötelező: egy vezérlőjelző, amely azt jelenti, hogy ha a modult használják, annak át kell mennie, különben az eredmény sikertelen lesz, függetlenül a többi modul állapotától.
  • pam_listfile.so: egy olyan modul, amely lehetőséget biztosít a szolgáltatások letiltására vagy engedélyezésére tetszőleges fájl alapján.
  • onerr=succeed: modul argumentum.
  • item=user: modul-argumentum, amely meghatározza, hogy mi szerepel a fájlban, és hogy mi van benne, és ellenőrizni kell.
  • sense=deny: modulargumentum, amely meghatározza a végrehajtandó műveletet, ha megtalálható a fájlban, ha az elem NEM található a fájlban, akkor az ellenkező műveletet kéri.
  • file=/etc/ssh/deniedusers: modul argumentum, amely soronként egy elemet tartalmazó fájlt határoz meg.

Ezután létre kell hoznunk az /etc/ssh/deniedusers fájlt, és hozzá kell adnunk a root nevet:

sudo vim /etc/ssh/deniedusers

Mentse el a változtatásokat, zárja be a fájlt, majd állítsa be a szükséges engedélyeket:

sudo chmod 600 /etc/ssh/deniedusers

Mostantól a fenti szabály azt fogja utasítani a PAM-re, hogy nézze meg az /etc/ssh/deniedusers fájlt, és tiltsa le az SSH-hoz való hozzáférést és a bejelentkezési szolgáltatásokhoz való hozzáférést minden listán szereplő felhasználó számára.

Az Advanced PAM konfigurálása Linuxban

Összetettebb PAM-szabályok írásához használhat érvényes vezérlőjeleket a következő formában:

type [value1=action1 value2=action2 …] module module-arguments

Ahol az értékN az abban a modulban meghívott függvény visszatérési kódjának felel meg, amelyhez a sor definiálva van. A támogatott értékeket az online PAM rendszergazdai útmutatóban találja. Egy speciális érték az alapértelmezett, ami azt jelenti, hogy az összes valueN nincs kifejezetten megemlítve.

Az műveletN a következő formák egyikét öltheti:

  • figyelmen kívül hagyás: ha ezt a műveletet egy köteg modullal használják, a modul visszatérési állapota nem járul hozzá az alkalmazás által megszerzett visszatérési kódhoz.
  • rossz: azt jelzi, hogy a visszatérési kódot a modul meghibásodásának jelzésének kell tekinteni. Ha ez a modul az első a veremben, amely meghibásodik, akkor a rendszer az állapotértékét fogja használni a teljes verem értékéhez.
  • die: egyenértékű a hibával, de leállíthatja a modul veremét és a PAM azonnali visszatérését az alkalmazáshoz.
  • ok: ez arra utasítja a PAM-ot, hogy a rendszergazda szerint ennek a visszatérési kódnak közvetlenül hozzá kell járulnia a modulok teljes kötegének visszatérési kódjához.
  • kész: egyenértékű az ok-val, de leállíthatja a modulvermet és a PAM azonnali visszatérését az alkalmazáshoz.
  • N (előjel nélküli egész szám): egyenértékű az ok szóval, de átugorhat a következő N modulon a veremben.
  • Visszaállítás: ez a művelet törli az összes memóriát a modulverem állapotáról, és újraindul a következő halmozott modullal.

Mind a négy kulcsszó: kötelező; szükséges; elegendő; és opcionális, egyenértékű kifejezéssel rendelkeznek a [...] szintaxis szempontjából, amely lehetővé teszi bonyolultabb szabályok írását, és ezek a következők:

  • kötelező: [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
  • követelmény: [success=ok new_authtok_reqd=ok ignore=ignore default=die]
  • elegendő: [success=done new_authtok_reqd=done default=ignore]
  • nem kötelező: [success=ok new_authtok_reqd=ok default=ignore]

A következő egy példa egy modern CentOS 7 rendszerből. Tekintsük ezeket a szabályokat az /etc/pam.d/postlogin PAM-fájlból:

#%PAM-1.0
This file is auto-generated.
User changes will be destroyed the next time authconfig is run.
session     [success=1 default=ignore] pam_succeed_if.so service !~ gdm* service !~ su* quiet
session     [default=1]   pam_lastlog.so nowtmp showfailed
session     optional      pam_lastlog.so silent noupdate showfailed

Íme egy másik példa konfigurációs példa a /etc/pam.d/smartcard-auth PAM-fájlból:

#%PAM-1.0
This file is auto-generated.
User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        [success=done ignore=ignore default=die] pam_pkcs11.so nodebug wait_for_card
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    required      pam_pkcs11.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

További információkért tekintse meg a pam.d kézikönyvoldalt:

man pam.d 

Végül a konfigurációs fájl szintaxisának és az összes PAM modulnak átfogó leírása megtalálható a Linux-PAM dokumentációjában.

Összegzés

A PAM egy hatékony, magas szintű API, amely lehetővé teszi a hitelesítésre támaszkodó programok számára a hiteles felhasználókat a Linux rendszerben lévő alkalmazásokhoz. Erőteljes, de nagyon nehéz megérteni és használni.

Ebben a cikkben elmagyaráztuk, hogyan konfigurálhatja a PAM speciális funkcióit az Ubuntu és a CentOS rendszerben. Ha bármilyen kérdése vagy megjegyzése van, használja az alábbi visszajelzési űrlapot.