Hvernig á að stilla og nota PAM í Linux
Linux-PAM (stutt fyrir Pluggable Authentication Modules sem þróaðist frá Unix-PAM arkitektúrnum) er öflug föruneyti af sameiginlegum bókasöfnum sem notuð eru til að auðkenna notanda á virkan hátt fyrir forritum (eða þjónustu) í Linux kerfi.
Það samþættir margar auðkenningareiningar á lágu stigi í API á háu stigi sem veitir kraftmikinn auðkenningarstuðning fyrir forrit. Þetta gerir forriturum kleift að skrifa forrit sem krefjast auðkenningar, óháð undirliggjandi auðkenningarkerfi.
Margar nútíma Linux dreifingar styðja sjálfgefið Linux-PAM (hér eftir nefnt \PAM). Í þessari grein munum við útskýra hvernig á að stilla háþróaða PAM í Ubuntu og CentOS kerfum.
Áður en lengra er haldið skaltu athuga að:
- Sem kerfisstjóri er mikilvægast að ná tökum á því hvernig PAM stillingarskrá(r) skilgreina tenginguna milli forrita (þjónustu) og innstungnuðu auðkenningareininganna (PAMs) sem framkvæma raunveruleg auðkenningarverkefni. Þú þarft ekki endilega að skilja innri virkni PAM.
- PAM hefur tilhneigingu til að breyta öryggi Linux kerfisins alvarlega. Rangar stillingar geta slökkt á aðgangi að kerfinu þínu að hluta eða öllu leyti. Til dæmis getur óviljandi eytt stillingarskrá(um) undir /etc/pam.d/* og/eða /etc/pam.conf læst þig út af þínu eigin kerfi!
Hvernig á að athuga að forrit sé PAM-meðvitað
Til að nota PAM þarf forrit/forrit að vera „PAM meðvitað“; það þarf að hafa verið skrifað og tekið saman sérstaklega til að nota PAM. Til að komast að því hvort forrit sé „PAM-meðvitað“ eða ekki, athugaðu hvort það hafi verið sett saman með PAM bókasafninu með ldd skipuninni.
Til dæmis sshd:
$ sudo ldd /usr/sbin/sshd | grep libpam.so
libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)
Hvernig á að stilla PAM í Linux
Aðalstillingarskráin fyrir PAM er /etc/pam.conf og /etc/pam.d/ skráin inniheldur PAM stillingarskrárnar fyrir hvert PAM-meðvitað forrit/þjónustu. PAM mun hunsa skrána ef skráin er til.
Setningafræðin fyrir aðalstillingarskrána er sem hér segir. Skráin er samsett úr lista yfir reglur sem eru skrifaðar á einni línu (þú getur framlengt reglur með \\” escape-stafnum) og athugasemdir eru á undan \# merkir og lengja til næsta enda línunnar.
Snið hverrar reglu er rýmisaðskilið safn af táknum (fyrstu þrjú eru há- og hástafalaus). Við munum útskýra þessi tákn í síðari köflum.
service type control-flag module module-arguments
hvar:
- þjónusta: raunverulegt nafn forrits.
- gerð: einingategund/samhengi/viðmót.
- stýringarfáni: gefur til kynna hegðun PAM-API ef einingin tekst ekki í auðkenningarverkefni sínu.
- eining: algert skráarnafn eða afstætt slóðheiti PAM.
- einingarrök: bilaðskilinn listi yfir tákn til að stjórna hegðun eininga.
Setningafræði hverrar skráar í /etc/pam.d/ er svipuð og aðalskrárinnar og er samsett úr línum með eftirfarandi formi:
type control-flag module module-arguments
Þetta er dæmi um regluskilgreiningu (án mát-rök) sem finnast í /etc/pam.d/sshd skránni, sem bannar innskráningu án rótar þegar /etc/nologin er til:
account required pam_nologin.so
Skilningur á PAM stjórnunarhópum og stjórnfánum
PAM auðkenningarverkefni eru aðgreind í fjóra sjálfstæða stjórnunarhópa. Þessir hópar stjórna mismunandi þáttum í beiðni dæmigerðs notanda um takmarkaða þjónustu.
Eining er tengd einni af þessum stjórnunarhópategundum:
- reikningur: veita þjónustu fyrir reikningsstaðfestingu: er lykilorð notandans útrunnið?; er þessi notandi heimill aðgangur að umbeðinni þjónustu?.
- auðkenning: auðkenndu notanda og settu upp notendaskilríki.
- lykilorð: bera ábyrgð á að uppfæra lykilorð notenda og vinna saman með auðkenningareiningum.
- lota: stjórna aðgerðum sem framkvæmdar eru í upphafi lotu og lok lotu.
PAM hlaðanlegar hlutaskrár (einingarnar) eiga að vera staðsettar í eftirfarandi möppu: /lib/security/ eða /lib64/security, allt eftir arkitektúr.
Stuðningsfánarnir eru:
- nauðsynlegt: bilun skilar stjórn samstundis í forritið sem gefur til kynna eðli fyrstu einingabilunar.
- áskilið: allar þessar einingar eru nauðsynlegar til að ná árangri til að libpam skili árangri í forritinu.
- fullnægjandi: í ljósi þess að allar undanfarandi einingar hafa heppnast, leiðir árangur þessarar einingar til tafarlausrar og árangursríkrar endurkomu í forritið (bilun í þessari einingar er hunsuð).
- valfrjálst: árangur eða bilun í þessari einingu er almennt ekki skráð.
Til viðbótar við ofangreint eru lykilorðin, það eru tveir aðrir gildir stjórnfánar:
- innihalda og undirstafla: innihalda allar línur af tiltekinni gerð úr stillingaskránni sem tilgreind er sem rök fyrir þessari stjórn.
Hvernig á að takmarka rótaraðgang að SSH þjónustu í gegnum PAM
Sem dæmi munum við stilla hvernig á að nota PAM til að slökkva á aðgangi notenda að kerfi í gegnum SSH og innskráningarforrit. Hér viljum við slökkva á aðgangi rótnotenda að kerfi með því að takmarka aðgang að innskráningu og sshd þjónustu.
Við getum notað /lib/security/pam_listfile.so eininguna sem býður upp á mikinn sveigjanleika við að takmarka réttindi tiltekinna reikninga. Opnaðu og breyttu skránni fyrir markþjónustuna í /etc/pam.d/ möppunni eins og sýnt er.
$ sudo vim /etc/pam.d/sshd
OR
$ sudo vim /etc/pam.d/login
Bættu þessari reglu við í báðum skrám.
auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers
Útskýrir táknin í ofangreindri reglu:
- auth: er einingategundin (eða samhengið).
- áskilið: er stjórnfáni sem þýðir að ef einingin er notuð verður hún að standast eða heildarniðurstaðan mun mistakast, óháð stöðu annarra eininga.
- pam_listfile.so: er eining sem býður upp á leið til að neita eða leyfa þjónustu sem byggist á handahófskenndri skrá.
- onerr=succeed: mát rök.
- item=notandi: mátsrök sem tilgreinir hvað er skráð í skránni og ætti að athuga fyrir.
- sense=neta: mátarröksemd sem tilgreinir aðgerð sem grípa skal til ef hún finnst í skránni, ef hluturinn finnst EKKI í skránni, þá er beðið um gagnstæða aðgerð.
- file=/etc/ssh/deniedusers: einingarviðfangsefni sem tilgreinir skrá sem inniheldur eitt atriði í hverri línu.
Næst þurfum við að búa til skrána /etc/ssh/deniedusers og bæta við nafninu rót í henni:
$ sudo vim /etc/ssh/deniedusers
Vistaðu breytingarnar og lokaðu skránni og stilltu síðan nauðsynlegar heimildir á hana:
$ sudo chmod 600 /etc/ssh/deniedusers
Héðan í frá mun ofangreind regla segja PAM að skoða /etc/ssh/deniedusers skrána og neita aðgangi að SSH og innskráningarþjónustu fyrir alla skráða notendur.
Hvernig á að stilla háþróaða PAM í Linux
Til að skrifa flóknari PAM reglur geturðu notað gilda stjórnflögg á eftirfarandi formi:
type [value1=action1 value2=action2 …] module module-arguments
Þar sem gildiN samsvarar skilakóðanum úr fallinu sem kallað er fram í einingunni sem línan er skilgreind fyrir. Þú getur fundið studd gildi í PAM stjórnandahandbókinni á netinu. Sérstakt gildi er sjálfgefið, sem gefur til kynna öll gildiN sem ekki eru nefnd sérstaklega.
ActionN getur verið eitt af eftirfarandi myndum:
- hunsa: ef þessi aðgerð er notuð með stafla af einingum mun skilastaða einingarinnar ekki stuðla að skilakóðanum sem forritið fær.
- slæmt: gefur til kynna að skilakóðann ætti að vera til marks um að einingin mistókst. Ef þessi eining er sú fyrsta í bunkanum sem mistakast verður stöðugildi hennar notað fyrir heildar staflann.
- deyja: jafngildir slæmu en getur hætt mátstöflunni og PAM fer strax aftur í forritið.
- allt í lagi: þetta gefur PAM fyrirmæli um að kerfisstjórinn telji að þessi skilakóði eigi að leggja beint til skilakóðans fyrir allan bunkann af einingum.
- lokið: jafngildir allt í lagi en gæti hætt mátbunkanum og PAM fara strax aftur í forritið.
- N (óundirrituð heil tala): jafngildir ok en gæti hoppað yfir næstu N einingar í staflanum.
- Endurstilla: Þessi aðgerð hreinsar allt minni af stöðu einingarstafla og endurræsir með næstu staflaða einingu.
Hvert af fjórum leitarorðum: áskilið; nauðsynlegur; nægjanlegt; og valfrjálst, hafa samsvarandi tjáningu hvað varðar [...] setningafræði, sem gerir þér kleift að skrifa flóknari reglur og þær eru:
- áskilið: [success=allt í lagi new_authtok_reqd=ok hunsa=ignore default=slæmt]
- nauðsynlegt: [success=allt í lagi new_authtok_reqd=ok hunsa=ignore default=die]
- fullnægjandi: [success=done new_authtok_reqd=done default=hunsa]
- valfrjálst: [success=allt í lagi new_authtok_reqd=allt í lagi default=hunsa]
Eftirfarandi er dæmi úr nútíma CentOS 7 kerfi. Við skulum íhuga þessar reglur úr /etc/pam.d/postlogin PAM skránni:
#%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
Hér er annað dæmi um uppsetningu úr /etc/pam.d/smartcard-auth PAM skránni:
#%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
Fyrir frekari upplýsingar, sjá pam.d man síðuna:
$ man pam.d
Að lokum má finna ítarlega lýsingu á setningafræði stillingarskrár og öllum PAM-einingum í skjölunum fyrir Linux-PAM.
PAM er öflugt API á háu stigi sem gerir forritum sem treysta á auðkenningu til ekta notenda í forritum í Linux kerfi. Það er öflugt en mjög krefjandi að skilja og nota.
Í þessari grein höfum við útskýrt hvernig á að stilla háþróaða eiginleika PAM í Ubuntu og CentOS. Ef þú hefur einhverjar spurningar eða athugasemdir til að deila skaltu nota athugasemdareyðublaðið hér að neðan.