Bii o ṣe le Tunto ati Lo PAM ni Lainos


Linux-PAM (kukuru fun Awọn modulu Ijeri Pluggable eyiti o wa lati inu faaji Unix-PAM) jẹ akojọpọ agbara ti awọn ile ikawe ti a pin lati dawọle aṣiri olumulo kan si awọn ohun elo (tabi awọn iṣẹ) ninu eto Linux.

O ṣepọ awọn modulu idanimọ ipele-kekere lọpọlọpọ sinu API giga-giga ti o pese atilẹyin ijẹrisi didasilẹ fun awọn ohun elo. Eyi ngbanilaaye fun awọn olupilẹṣẹ lati kọ awọn ohun elo ti o nilo ijẹrisi, ni ominira ti eto ijẹrisi ti o wa labẹ.

Ọpọlọpọ awọn pinpin kaakiri Linux ti ode oni ṣe atilẹyin Linux-PAM (eyiti a tọka si bi\"PAM") ni aiyipada. Ninu nkan yii, a yoo ṣalaye bi o ṣe le tunto PAM ti o ni ilọsiwaju ninu awọn ọna Ubuntu ati CentOS.

Ṣaaju ki a to tẹsiwaju siwaju sii, ṣe akiyesi pe:

  • Gẹgẹbi olutọju eto, ohun pataki julọ ni lati ṣakoso bi faili (s) iṣeto ni PAM ṣe ṣalaye isopọ laarin awọn ohun elo (awọn iṣẹ) ati awọn modulu idanimọ pluggable (PAMs) ti n ṣe awọn iṣẹ ṣiṣe idanimọ gangan. O ko nilo dandan lati ni oye iṣẹ inu ti PAM.
  • Pli ni agbara lati ṣe iyipada aabo aabo eto Linux rẹ. Iṣeto ni aṣiṣe le mu iraye si eto rẹ ni apakan, tabi patapata. Fun apeere piparẹ lairotẹlẹ ti faili (s) iṣeto kan labẹ /etc/pam.d/* ati/tabi /etc/pam.conf le tiipa ọ kuro ninu eto tirẹ!

Bii o ṣe le Ṣayẹwo Eto kan jẹ akiyesi PAM

Lati lo PAM, ohun elo/eto nilo lati “Mimọ PAM”; o nilo lati ti kọ ati ṣajọ ni pataki lati lo PAM. Lati wa boya eto kan ba jẹ\"PAM-aware" tabi rara, ṣayẹwo ti o ba ti ṣajọ pẹlu ile-ikawe PAM nipa lilo aṣẹ ldd.

Fun apẹẹrẹ sshd:

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

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

Bii o ṣe le Tunto PAM ni Lainos

Faili iṣeto akọkọ fun PAM ni /etc/pam.conf ati itọsọna /etc/pam.d/ ni awọn faili iṣeto PAM fun awọn ohun elo/iṣẹ PAM ti o mọ. PAM yoo foju faili naa ti itọsọna naa ba wa.

Iṣeduro fun faili iṣeto akọkọ jẹ bi atẹle. Faili naa ni akojọ awọn ofin ti a kọ sori ila kan (o le fa awọn ofin sii nipa lilo ohun kikọ \"\" ) ati pe awọn asọye ti wa ni iṣaaju pẹlu \"#" awọn ami ati faagun si opin ila atẹle.

Ọna kika ofin kọọkan jẹ ikojọpọ aaye ti awọn ami (awọn mẹta akọkọ jẹ aibikita ọran). A yoo ṣalaye awọn ami wọnyi ni awọn apakan atẹle.

service type control-flag module module-arguments 

ibo:

    iṣẹ
  • : orukọ ohun elo gangan.
  • iru: iru module/o tọ/wiwo.
  • asia iṣakoso: tọka ihuwasi ti PAM-API ti module naa ba kuna lati ṣaṣeyọri ninu iṣẹ ijẹrisi rẹ.
  • module: orukọ faili pipe tabi orukọ ọna ibatan ibatan ti PAM.
  • awọn ariyanjiyan-modulu: atokọ ti a ya sọtọ awọn ami fun ṣiṣakoso ihuwasi modulu.

Ilana ti faili kọọkan ni /etc/pam.d/ jẹ iru si ti faili akọkọ ati pe o ni awọn ila ti fọọmu atẹle:

type control-flag module module-arguments

Eyi jẹ apẹẹrẹ ti itumọ ofin kan (laisi awọn ariyanjiyan-modulu) ti a ri ninu faili /etc/pam.d/sshd, eyiti o kọ awọn ibuwolu ti kii ṣe gbongbo nigbati/ati be be/nologin wa:

account required pam_nologin.so

Loye Awọn ẹgbẹ iṣakoso PAM ati awọn asia Iṣakoso

Awọn iṣẹ ijẹrisi PAM ti pin si awọn ẹgbẹ iṣakoso ominira mẹrin. Awọn ẹgbẹ wọnyi ṣakoso awọn oriṣiriṣi awọn ẹya ti ibeere aṣoju olumulo fun iṣẹ ihamọ.

Atokun kan ni asopọ si ọkan awọn iru ẹgbẹ iṣakoso wọnyi:

  • akọọlẹ: pese awọn iṣẹ fun ijẹrisi akọọlẹ: ti ọrọ igbaniwọle olumulo ti pari ?; Njẹ olumulo yii gba aaye laaye si iṣẹ ti o beere?.
  • ìfàṣẹsí: jẹrisi aṣàmúlò kan ki o ṣeto awọn iwe-ẹri olumulo.
  • ọrọ igbaniwọle: ni o ni iduro fun mimu awọn ọrọigbaniwọle olumulo ṣiṣẹ ati ṣiṣẹ pọ pẹlu awọn modulu afọwọsi.
  • igba: ṣakoso awọn iṣe ti a ṣe ni ibẹrẹ igba ati ipari igba kan.

Awọn faili ohun elo fifuye PAM (awọn modulu) ni lati wa ninu itọsọna atẹle:/lib/aabo/tabi/lib64/aabo da lori faaji.

Awọn asia iṣakoso ti o ni atilẹyin ni:

  • ibeere: ikuna lesekese da iṣakoso pada si ohun elo ti o nfihan iru ikuna module akọkọ.
  • nilo: gbogbo awọn modulu wọnyi ni a nilo lati ṣaṣeyọri fun libpam lati pada aṣeyọri si ohun elo naa.
  • ti to: fun ni pe gbogbo awọn modulu ti iṣaaju ti ṣaṣeyọri, aṣeyọri ti module yii yorisi ipadabọ lẹsẹkẹsẹ ati aṣeyọri si ohun elo naa (a ko foju ikuna ti module yii).
  • iyan: aṣeyọri tabi ikuna ti module yii ko ni igbasilẹ ni gbogbogbo.

Ni afikun si eyi ti o wa loke ni awọn koko-ọrọ, awọn asia iṣakoso to wulo meji miiran wa:

  • pẹlu: pẹlu gbogbo awọn ila ti iru fifun lati faili iṣeto ni a ṣalaye bi ariyanjiyan si iṣakoso yii.
  • substack: pẹlu gbogbo awọn ila ti iru ti a fun lati faili iṣeto ni a ṣalaye bi ariyanjiyan si iṣakoso yii.

Bii o ṣe le ni ihamọ Wiwọle root si Iṣẹ SSH Nipasẹ PAM

Fun apẹẹrẹ, a yoo tunto bii o ṣe le lo PAM lati mu wiwọle olumulo gbongbo ṣiṣẹ si eto nipasẹ SSH ati awọn eto iwọle. Nibi, a fẹ lati mu wiwọle olumulo gbongbo wa si eto kan, nipa ihamọ wiwọle si iwọle ati awọn iṣẹ sshd.

A le lo module /lib/security/pam_listfile.so eyiti o funni ni irọrun nla ni didiwọn awọn anfani ti awọn iroyin kan pato. Ṣii ati ṣatunkọ faili fun iṣẹ ibi-afẹde ninu itọsọna /etc/pam.d/ bi a ti han.

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

Ṣafikun ofin yii ni awọn faili mejeeji.

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

Ti n ṣalaye awọn ami ninu ofin ti o wa loke:

  • auth: ni iru module (tabi ọrọ).
  • nilo: jẹ asia iṣakoso kan ti o tumọ si ti o ba lo module naa, o gbọdọ kọja tabi abajade gbogbogbo yoo kuna, laibikita ipo awọn modulu miiran.
  • pam_listfile.so: jẹ modulu kan eyiti o pese ọna lati sẹ tabi gba awọn iṣẹ laaye ti o da lori faili lainidii.
  • onerr = ṣaṣeyọri: ariyanjiyan module.
  • ohun kan = olumulo: ariyanjiyan module eyiti o ṣalaye ohun ti o ṣe akojọ ninu faili naa ati pe o yẹ ki o ṣayẹwo fun.
  • ori = sẹ: ariyanjiyan module eyiti o ṣalaye igbese lati ṣe ti o ba ri ninu faili, ti nkan naa ko ba rii ninu faili naa, lẹhinna a beere igbese idakeji.
  • faili =/ati be be/ssh/denusers: ariyanjiyan ariyanjiyan ti o ṣalaye faili ti o ni ohun kan ninu ila kan.

Nigbamii ti, a nilo lati ṣẹda faili/abbl/ssh/denusers ati ṣafikun gbongbo orukọ ninu rẹ:

$ sudo vim /etc/ssh/deniedusers

Fipamọ awọn ayipada ki o pa faili naa, lẹhinna ṣeto awọn igbanilaaye ti a beere lori rẹ:

$ sudo chmod 600 /etc/ssh/deniedusers

Lati isisiyi lọ, ofin ti o wa loke yoo sọ fun PAM lati kan si faili/ati be be/ssh/denusers ati kọ wiwọle si SSH ati awọn iṣẹ iwọle fun eyikeyi olumulo ti a ṣe akojọ.

Bii o ṣe le ṣe atunto PAM To ti ni ilọsiwaju ni Lainos

Lati kọ awọn ofin PAM ti o nira sii, o le lo awọn asia iṣakoso to wulo ni fọọmu atẹle:

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

Nibo ni iyeN ṣe ibamu pẹlu koodu ipadabọ lati iṣẹ ti a pe ni module fun eyiti a ṣe alaye ila naa. O le wa awọn iye ti o ni atilẹyin lati Itọsọna Alakoso IT PAM. Iye pataki jẹ aiyipada, eyiti o tumọ si gbogbo iyeN ko mẹnuba ni kedere.

IgbeseN le mu ọkan ninu awọn fọọmu wọnyi:

  • foju: ti a ba lo iṣẹ yii pẹlu akopọ awọn modulu, ipo ipadabọ ti module ko ni ṣe alabapin si koodu ipadabọ ti ohun elo naa gba.
  • buburu: tọka pe o yẹ ki a ronu koodu ipadabọ bi itọkasi ti module kuna. Ti module yii ba jẹ akọkọ ninu akopọ lati kuna, iye ipo rẹ yoo ṣee lo fun ti gbogbo akopọ naa.
  • ku: deede si buburu ṣugbọn o le fopin si akopọ modulu ati PAM lẹsẹkẹsẹ pada si ohun elo naa.
  • ok: eyi kọ PAM pe olutọju eto ro pe koodu ipadabọ yii yẹ ki o ṣe alabapin taara si koodu ipadabọ ti akopọ kikun awọn modulu.
  • ti ṣe: deede si ok ṣugbọn o le fopin si akopọ modulu ati PAM lẹsẹkẹsẹ pada si ohun elo naa.
  • N (nomba odidi ti a ko wole): deede si ok ṣugbọn o le fo lori awọn modulu N t’okan ninu akopọ naa. Tunto: iṣe yii n fọ gbogbo iranti ti ipo ti akopọ module ki o tun bẹrẹ pẹlu module ti o tẹle. ”

Ọkọọkan ninu awọn ọrọ-ọrọ mẹrin: nilo; nilo; to; ati aṣayan, ni ikasi deede ni awọn ofin ti [...] sintasi, eyiti o gba ọ laaye lati kọ awọn ofin idiju diẹ sii wọn si jẹ:

  • nilo: [aṣeyọri = ok new_authtok_reqd = ok foju = foju aiyipada = buburu]
  • ibeere: [success = ok new_authtok_reqd = ok foju = foju aiyipada = ku]
  • ti to: [aṣeyọri = ti ṣe tuntun_authtok_reqd = ṣe aiyipada = foju]
  • aṣayan: [success = ok new_authtok_reqd = ok aiyipada = foju]

Atẹle yii jẹ apẹẹrẹ lati eto CentOS 7 igbalode kan. Jẹ ki a ṣe akiyesi awọn ofin wọnyi lati faili /etc/pam.d/postlogin PAM faili:

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

Eyi ni iṣeto apẹẹrẹ miiran lati faili /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

Fun alaye diẹ sii, wo oju-iwe eniyan pam.d:

$ man pam.d 

Ni ikẹhin, apejuwe okeerẹ ti sintasi faili iṣeto ni ati gbogbo awọn modulu PAM ni a le rii ninu iwe-ipamọ fun Linux-PAM.

PAM jẹ API ti o ni agbara giga ti o fun laaye awọn eto ti o gbẹkẹle igbẹkẹle si awọn olumulo to daju si awọn ohun elo ni eto Linux. O lagbara ṣugbọn o nira pupọ lati ni oye ati lilo.

Ninu nkan yii, a ti ṣalaye bi o ṣe le tunto awọn ẹya to ti ni ilọsiwaju ti PAM ni Ubuntu ati CentOS. Ti o ba ni awọn ibeere tabi awọn asọye lati pin, lo fọọmu esi ni isalẹ.