Kif tikkonfigura u tuża PAM fil-Linux


Linux-PAM (qosor għal Pluggable Authentication Modules li evolviet mill-arkitettura Unix-PAM) hija firxa qawwija ta’ libreriji kondiviżi użati biex jawtentikaw b’mod dinamiku utent għal applikazzjonijiet (jew servizzi) f’sistema Linux.

Tintegra moduli multipli ta 'awtentikazzjoni ta' livell baxx f'API ta 'livell għoli li jipprovdi appoġġ dinamiku ta' awtentikazzjoni għall-applikazzjonijiet. Dan jippermetti lill-iżviluppaturi jiktbu applikazzjonijiet li jeħtieġu awtentikazzjoni, indipendentement mis-sistema ta 'awtentikazzjoni sottostanti.

Ħafna distribuzzjonijiet moderni tal-Linux jappoġġjaw Linux-PAM (minn hawn 'il quddiem imsejjaħ \PAM) b'mod awtomatiku. F'dan l-artikolu, aħna se nispjegaw kif tikkonfigura PAM avvanzat fis-sistemi Ubuntu u CentOS.

Qabel ma nipproċedu aktar, innota li:

  • Bħala amministratur tas-sistema, l-iktar ħaġa importanti hija li tikkontrolla kif il-fajl(i) ta' konfigurazzjoni PAM jiddefinixxu l-konnessjoni bejn l-applikazzjonijiet (servizzi) u l-moduli ta' awtentikazzjoni pluggable (PAMs) li jwettqu l-kompiti attwali ta' awtentikazzjoni. Mhux bilfors trid tifhem il-ħidma interna tal-PAM.
  • PAM għandu l-potenzjal li jbiddel serjament is-sigurtà tas-sistema Linux tiegħek. Konfigurazzjoni żbaljata tista' tiddiżattiva l-aċċess għas-sistema tiegħek parzjalment, jew kompletament. Pereżempju tħassir aċċidentali ta' fajl(i) ta' konfigurazzjoni taħt /etc/pam.d/* u/jew /etc/pam.conf jista' jissakkarek mis-sistema tiegħek stess!

Kif Tiċċekkja Programm hija konxja mill-PAM

Biex timpjega l-PAM, applikazzjoni/programm jeħtieġ li jkun “konxju tal-PAM”; jeħtieġ li tkun ġiet miktuba u kkumpilata speċifikament biex tuża PAM. Biex issir taf jekk programm huwiex \PAM-konxju jew le, iċċekkja jekk ġiex ikkumpilat mal-librerija PAM billi tuża l-kmand ldd.

Per eżempju sshd:

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

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

Kif tikkonfigura PAM fil-Linux

Il-fajl tal-konfigurazzjoni prinċipali għall-PAM huwa /etc/pam.conf u d-direttorju /etc/pam.d/ fih il-fajls tal-konfigurazzjoni tal-PAM għal kull applikazzjoni/servizzi konxji mill-PAM. PAM se jinjora l-fajl jekk id-direttorju jeżisti.

Is-sintassi għall-fajl tal-konfigurazzjoni prinċipali hija kif ġej. Il-fajl huwa magħmul minn lista ta’ regoli miktuba fuq linja waħda (tista’ testendi r-regoli billi tuża l-karattru ta’ escape \\”) u l-kummenti huma preċeduti b’\#” jimmarka u jestendi għat-tarf li jmiss tal-linja.

Il-format ta’ kull regola huwa ġabra ta’ tokens separati mill-ispazju (l-ewwel tlieta mhumiex sensittivi għall-każ). Aħna se nispjegaw dawn it-tokens fit-taqsimiet sussegwenti.

service type control-flag module module-arguments 

fejn:

  • servizz: isem l-applikazzjoni attwali.
  • tip: tip/kuntest/interface tal-modulu.
  • control-flag: tindika l-imġieba tal-PAM-API jekk il-modulu jonqos milli jirnexxi fil-kompitu ta' awtentikazzjoni tiegħu.
  • modulu: l-isem tal-fajl assolut jew il-pathname relattiv tal-PAM.
  • module-arguments: lista ta' tokens separati bi spazju għall-kontroll tal-imġieba tal-modulu.

Is-sintassi ta' kull fajl f'/etc/pam.d/ hija simili għal dik tal-fajl prinċipali u hija magħmula minn linji tal-forma li ġejja:

type control-flag module module-arguments

Dan huwa eżempju ta' definizzjoni ta' regola (mingħajr argumenti tal-modulu) misjuba fil-fajl /etc/pam.d/sshd, li ma tippermettix logins mhux root meta jeżisti /etc/nologin:

account required pam_nologin.so

Nifhmu Gruppi ta 'Ġestjoni PAM u bnadar ta' Kontroll

Il-kompiti ta' awtentikazzjoni PAM huma separati f'erba' gruppi ta' ġestjoni indipendenti. Dawn il-gruppi jimmaniġġjaw aspetti differenti ta’ talba ta’ utent tipiku għal servizz ristrett.

Modulu huwa assoċjat ma’ wieħed minn dawn it-tipi ta’ grupp ta’ ġestjoni:

  • kont: ipprovdi servizzi għall-verifika tal-kont: il-password tal-utent skadiet?; dan l-utent huwa permess aċċess għas-servizz mitlub?.
  • awtentikazzjoni: awtentika utent u waqqaf il-kredenzjali tal-utent.
  • password: huma responsabbli għall-aġġornament tal-passwords tal-utent u jaħdmu flimkien mal-moduli ta' awtentikazzjoni.
  • sessjoni: immaniġġja l-azzjonijiet imwettqa fil-bidu ta' sessjoni u fit-tmiem ta' sessjoni.

Il-fajls tal-oġġetti li jistgħu jitgħabbew PAM (il-moduli) għandhom jinstabu fid-direttorju li ġej: /lib/security/ jew /lib64/security skont l-arkitettura.

Il-bnadar tal-kontroll appoġġjati huma:

  • rekwiżit: in-nuqqas istantanjament jirritorna l-kontroll lill-applikazzjoni li jindika n-natura tal-ewwel falliment tal-modulu.
  • meħtieġa: dawn il-moduli kollha huma meħtieġa biex jirnexxu biex libpam jirritorna s-suċċess lill-applikazzjoni.
  • suffiċjenti: minħabba li l-moduli preċedenti kollha rnexxielhom, is-suċċess ta' dan il-modulu jwassal għal ritorn immedjat u b'suċċess għall-applikazzjoni (il-falliment ta' dan il-modulu jiġi injorat).
  • fakultattiv: is-suċċess jew il-falliment ta' dan il-modulu ġeneralment ma jiġix irreġistrat.

Minbarra dan ta 'hawn fuq huma l-kliem kjavi, hemm żewġ bnadar ta' kontroll validi oħra:

  • inkludi u substack: inkludi l-linji kollha ta' tip partikolari mill-fajl ta' konfigurazzjoni speċifikat bħala argument għal dan il-kontroll.

Kif tirrestrinġi l-aċċess għerq għas-Servizz SSH Via PAM

Bħala eżempju, aħna ser tikkonfigura kif nużaw PAM biex tiddiżattiva l-aċċess tal-utent root għal sistema permezz ta 'SSH u programmi ta' login. Hawnhekk, irridu tiddiżattiva l-aċċess tal-utent root għal sistema, billi nirrestrinġu l-aċċess għas-servizzi tal-login u sshd.

Nistgħu nużaw il-modulu /lib/security/pam_listfile.so li joffri flessibilità kbira fil-limitazzjoni tal-privileġġi ta 'kontijiet speċifiċi. Iftaħ u editja l-fajl għas-servizz fil-mira fid-direttorju /etc/pam.d/ kif muri.

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

Żid din ir-regola fiż-żewġ fajls.

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

Tispjega t-tokens fir-regola ta 'hawn fuq:

  • auth: huwa t-tip tal-modulu (jew il-kuntest).
  • meħtieġa: hija bandiera ta' kontroll li tfisser jekk il-modulu jintuża, għandu jgħaddi jew ir-riżultat ġenerali se jkun ifalli, irrispettivament mill-istatus ta' moduli oħra.
  • pam_listfile.so: huwa modulu li jipprovdi mod kif tiċħad jew tippermetti servizzi bbażati fuq fajl arbitrarju.
  • onerr=jirnexxi: argument tal-modulu.
  • item=utent: argument tal-modulu li jispeċifika dak li hu elenkat fil-fajl u li għandu jiġi ċċekkjat għalih.
  • sens=ċaħda: argument tal-modulu li jispeċifika azzjoni li trid tieħu jekk jinstab fil-fajl, jekk l-oġġett MHUX jinstab fil-fajl, allura tintalab l-azzjoni opposta.
  • file=/etc/ssh/deniedusers: argument tal-modulu li jispeċifika fajl li fih oġġett wieħed għal kull linja.

Sussegwentement, irridu noħolqu l-fajl /etc/ssh/deniedusers u nżidu l-għerq tal-isem fih:

$ sudo vim /etc/ssh/deniedusers

Issejvja l-bidliet u agħlaq il-fajl, imbagħad issettja l-permessi meħtieġa fuqu:

$ sudo chmod 600 /etc/ssh/deniedusers

Minn issa 'l quddiem, ir-regola ta' hawn fuq tgħid lil PAM biex tikkonsulta l-fajl /etc/ssh/deniedusers u tiċħad l-aċċess għas-servizzi SSH u login għal kwalunkwe utent elenkat.

Kif tikkonfigura l-PAM Avvanzat fil-Linux

Biex tikteb regoli PAM aktar kumplessi, tista' tuża control-flags validi fil-forma li ġejja:

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

Fejn valueN jikkorrispondi għall-kodiċi tar-ritorn mill-funzjoni invokata fil-modulu li għalih il-linja hija definita. Tista' ssib valuri appoġġjati mill-Gwida tal-Amministratur tal-PAM onlajn. Valur speċjali huwa default, li jimplika l-valurN kollu mhux imsemmi b'mod espliċitu.

L-azzjoniN tista' tieħu waħda mill-forom li ġejjin:

  • injora: jekk din l-azzjoni tintuża ma' munzell ta' moduli, l-istatus tar-ritorn tal-modulu mhux se jikkontribwixxi għall-kodiċi tar-ritorn li tikseb l-applikazzjoni.
  • ħażin: jindika li l-kodiċi tar-ritorn għandu jitqies bħala indikattiv tal-modulu jonqos. Jekk dan il-modulu huwa l-ewwel fil-munzell li jfalli, il-valur tal-istatus tiegħu se jintuża għal dak tal-munzell kollu.
  • die: ekwivalenti għal ħażin iżda jista' jtemm il-munzell tal-moduli u PAM immedjatament jirritorna għall-applikazzjoni.
  • ok: dan jagħti struzzjonijiet lil PAM li l-amministratur tas-sistema jaħseb li dan il-kodiċi tar-ritorn għandu jikkontribwixxi direttament għall-kodiċi tar-ritorn tal-munzell sħiħ ta' moduli.
  • magħmul: ekwivalenti għal ok iżda jista' jtemm il-munzell tal-moduli u l-PAM jirritorna immedjatament għall-applikazzjoni.
  • N (numru sħiħ mhux iffirmat): ekwivalenti għal ok iżda jista' jaqbeż fuq l-N moduli li jmiss fil-munzell.
  • Irrisettja: din l-azzjoni tneħħi l-memorja kollha tal-istat tal-munzell tal-moduli u terġa' tibda bil-modulu f'munzelli li jmiss.

Kull waħda mill-erba' kliem prinċipali: meħtieġa; meħtieġa; biżżejjed; u fakultattiv, għandhom espressjoni ekwivalenti f'termini tas-sintassi [...], li jippermettulek tikteb regoli aktar ikkumplikati u huma:

  • meħtieġa: [success=ok new_authtok_reqd=ok ignore=injora default=ħażin]
  • rekwiżit: [success=ok new_authtok_reqd=ok ignore=injora default=die]
  • suffiċjenti: [success=done new_authtok_reqd=done default=injora]
  • fakultattiv: [success=ok new_authtok_reqd=ok default=injora]

Dan li ġej huwa eżempju minn sistema moderna CentOS 7. Ejja nikkunsidraw dawn ir-regoli mill-fajl PAM /etc/pam.d/postlogin:

#%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

Hawnhekk hawn eżempju ieħor ta' konfigurazzjoni mill-fajl /etc/pam.d/smartcard-auth PAM:

#%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

Għal aktar informazzjoni, ara l-paġna man pam.d:

$ man pam.d 

Fl-aħħar nett, deskrizzjoni komprensiva tas-sintassi tal-fajl tal-Konfigurazzjoni u l-moduli PAM kollha tista 'tinstab fid-dokumentazzjoni għal Linux-PAM.

PAM hija API qawwija ta 'livell għoli li tippermetti programmi li jiddependu fuq l-awtentikazzjoni lill-utenti awtentiċi għal applikazzjonijiet f'sistema Linux. Huwa qawwi iżda diffiċli ħafna biex tifhem u tuża.

F'dan l-artikolu, spjegajna kif tikkonfigura karatteristiċi avvanzati ta 'PAM f'Ubuntu u CentOS. Jekk għandek xi mistoqsijiet jew kummenti x'taqsam, uża l-formola ta' feedback hawn taħt.