Kuidas PAM-i konfigureerida ja kasutada Linuxis
Linux-PAM (Unix-PAM-i arhitektuurist välja arenenud lühend Pluggable Authentication Modules) on võimas jagatud teekide komplekt, mida kasutatakse kasutaja dünaamiliseks autentimiseks Linuxi süsteemis olevate rakenduste (või teenuste) jaoks.
See integreerib mitu madala taseme autentimismoodulit kõrgetasemelisse API-sse, mis pakub rakendustele dünaamilist autentimistuge. See võimaldab arendajatel kirjutada autentimist vajavaid rakendusi, sõltumata aluseks olevast autentimissüsteemist.
Paljud kaasaegsed Linuxi jaotused toetavad vaikimisi Linux-PAM-i (edaspidi "PAM"). Selles artiklis selgitame, kuidas konfigureerida täpsemat PAM-i Ubuntu ja CentOS-süsteemides.
Enne kui jätkame, pange tähele, et:
- Süsteemiadministraatorina on kõige olulisem omandada, kuidas PAM-i konfiguratsioonifail (id) määratlevad ühenduse rakenduste (teenuste) ja pistikprogrammidega autentimismoodulite (PAM) vahel, mis täidavad tegelikke autentimistoiminguid. Te ei pea tingimata aru saama PAM-i sisemisest toimimisest.
- PAMil on potentsiaali teie Linuxi süsteemi turvalisust tõsiselt muuta. Vale konfiguratsioon võib osaliselt või täielikult teie süsteemile juurdepääsu keelata. Näiteks konfiguratsioonifaili (failide) juhuslik kustutamine /etc/pam.d/* ja/või /etc/pam.conf kaudu võib teid oma süsteemist välja lülitada!
Programmi kontrollimine on PAM-teadlik
PAM-i kasutamiseks peab rakendus/programm olema teadlik PAM-ist; see peab olema spetsiaalselt PAM-i kasutamiseks kirjutatud ja kompileeritud. Et teada saada, kas programm on\"PAM-teadlik \" või mitte, kontrollige, kas see on kompileeritud PAM-i teegiga käsuga ldd.
Näiteks sshd:
$ sudo ldd /usr/sbin/sshd | grep libpam.so libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)
Kuidas PAM-i konfigureerida Linuxis
PAM-i peamine konfiguratsioonifail on /etc/pam.conf ja kataloog /etc/pam.d/ sisaldab PAM-i konfiguratsioonifaile iga PAM-teadliku rakenduse/teenuse jaoks. Kui kataloog on olemas, ignoreerib PAM faili.
Peamise konfiguratsioonifaili süntaks on järgmine. Fail koosneb reeglite loendist, mis on kirjutatud ühele reale (reegleid saab laiendada põgenemismärgiga \"\”
) ja kommentaaridele eelneb \"#" märgid ja pikendage rea järgmisesse otsa.
Iga reegli vorming on tühikutega eraldatud märkide kogu (esimesed kolm on suurtähteta). Me selgitame neid märke järgmistes jaotistes.
service type control-flag module module-arguments
kus:
- teenus: rakenduse tegelik nimi.
- tüüp: mooduli tüüp/kontekst/liides.
- control-flag: näitab PAM-API käitumist juhul, kui moodul ei suuda oma autentimisülesannet edukalt täita.
- moodul: PAM-i absoluutne failinimi või suhteline teenimi.
- moodul-argumendid: tühikutega eraldatud märkide loend mooduli käitumise juhtimiseks.
Iga faili süntaks kataloogis /etc/pam.d/ on sarnane põhifailiga ja koosneb järgmise vormi ridadest:
type control-flag module module-arguments
See on näide reeglist (ilma moodul-argumentideta), mis on leitud failist /etc/pam.d/sshd, mis keelab juurte välised sisselogimised, kui/etc/nologin on olemas:
account required pam_nologin.so
PAM-i haldusgruppide ja kontroll-lippude mõistmine
PAM-i autentimisülesanded on jagatud nelja sõltumatusse haldusrühma. Need rühmad haldavad tavalise kasutaja piiratud teenuse taotlemise erinevaid aspekte.
Moodul on seotud ühega järgmistest juhtimisrühma tüüpidest:
- konto: paku teenuseid konto kinnitamiseks: kas kasutaja parool on aegunud ?; kas sellel kasutajal on lubatud juurdepääs taotletud teenusele ?.
- autentimine: autentige kasutaja ja seadistage kasutaja mandaadid.
- parool: vastutavad kasutaja paroolide värskendamise eest ja töötavad koos autentimismoodulitega.
- seanss: seansi alguses ja seansi lõpus tehtud toimingute haldamine.
PAM-i laaditavad objektifailid (moodulid) peavad asuma järgmises kataloogis:/lib/security/või/lib64/security sõltuvalt arhitektuurist.
Toetatud kontrollmärgised on:
- vajalik: rike tagastab rakenduse juhtimise koheselt, näidates esimese mooduli rikke olemust.
- nõutav: libpami edukaks kasutamiseks rakenduses edu tagamiseks on vaja kõiki neid mooduleid.
- piisav: arvestades, et kõik eelnevad moodulid on õnnestunud, viib selle mooduli edu viivitamatu ja eduka rakendusse naasmiseni (selle mooduli rikke ignoreeritakse).
- valikuline: selle mooduli edukust või ebaõnnestumist tavaliselt ei registreerita.
Lisaks ülaltoodud märksõnadele on veel kaks kehtivat kontrollmärki:
- kaasata: lisage selle juhtelemendi argumendina määratud konfiguratsioonifailist kõik antud tüüpi read
- alampakett: lisage selle juhtelemendi argumendina määratud konfiguratsioonifailist kõik etteantud tüüpi read.
Kuidas piirata juurjuurdepääsu SSH-teenusele PAM-i kaudu
Näiteks konfigureerime, kuidas PAM-i abil keelata juurkasutaja juurdepääs süsteemile SSH ja sisselogimisprogrammide kaudu. Siinkohal soovime keelata juurkasutaja juurdepääsu süsteemile, piirates juurdepääsu sisselogimis- ja sshd-teenustele.
Saame kasutada moodulit /lib/security/pam_listfile.so, mis pakub suurt paindlikkust konkreetsete kontode privileegide piiramisel. Avage ja muutke kataloogis /etc/pam.d/ sihtteenuse faili, nagu näidatud.
$ sudo vim /etc/pam.d/sshd OR $ sudo vim /etc/pam.d/login
Lisage see reegel mõlemasse faili.
auth required pam_listfile.so \ onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers
Märkide selgitamine ülaltoodud reeglis:
- auth: on mooduli tüüp (või kontekst).
- kohustuslik: on kontrollmärgis, mis tähendab, et kui moodulit kasutatakse, peab see läbima, vastasel korral ei õnnestu üldtulemus, hoolimata teiste moodulite olekust.
- pam_listfile.so: on moodul, mis pakub võimalust suvalisel failil põhinevate teenuste keelamiseks või lubamiseks.
- onerr = õnnestub: mooduli argument.
- item = user: mooduli argument, mis määrab failis loetletu ja seda tuleks kontrollida.
- sense = deny: mooduli argument, mis määrab toimingu, mis tuleb teha, kui see failist leitakse, kui üksust EI OLE failist, siis nõutakse vastupidist toimingut.
- file =/etc/ssh/deniedusers: mooduli argument, mis määrab faili, mis sisaldab ühte üksust real.
Järgmisena peame looma faili/etc/ssh/deniedusers ja lisama selle nime juur:
$ sudo vim /etc/ssh/deniedusers
Salvestage muudatused ja sulgege fail, seejärel määrake sellele vajalikud õigused:
$ sudo chmod 600 /etc/ssh/deniedusers
Nüüdsest käsib ülaltoodud reegel PAM-il tutvuda failiga/etc/ssh/deniedusers ja keelata kõigi loetletud kasutajate juurdepääs SSH-le ja sisselogimisteenustele.
Täpsema PAM-i konfigureerimine Linuxis
Keerukamate PAM-reeglite kirjutamiseks võite kasutada kehtivaid kontrollmärke järgmisel kujul:
type [value1=action1 value2=action2 …] module module-arguments
Kus väärtus N vastab funktsiooni tagasipöördumiskoodile, millele rida on määratud moodulis. Toetatud väärtused leiate veebipõhisest PAM-i administraatori juhendist. Vaikeväärtus on eriväärtus, mis tähendab kõiki väärtusiN, mida pole otseselt mainitud.
Toimel N võib olla üks järgmistest vormidest:
- ignoreeri: kui seda toimingut kasutatakse koos moodulite virnaga, ei aita mooduli tagastamise olek rakenduse saadetud tagastuskoodi kaasa.
- halb: näitab, et tagastuskoodi tuleks mõelda kui mooduli tõrkeid. Kui see moodul ebaõnnestub virnas esimesena, kasutatakse selle oleku väärtust kogu virna jaoks.
- die: samaväärne halbaga, kuid võib lõpetada moodulivirna ja PAM-i kohe rakendusse naastes.
- ok: see annab PAM-ile korralduse, et süsteemiadministraator peaks selle tagastuskoodi panustama otse kogu moodulivirna tagastuskoodi.
- valmis: samaväärne ok-ga, kuid võib lõpetada moodulivirna ja PAM-i, naastes kohe rakendusse.
- N (allkirjastamata täisarv): vastab ok-le, kuid võib hüpata järgmiste N-i moodulite hulgast.
- Lähtesta: see toiming kustutab kogu mälu moodulivirna olekust ja taaskäivitub järgmise virnastatud mooduliga.
Kõik neli märksõna: kohustuslik; vajalik; piisav; ja valikuline, on süntaksiga [...]
samaväärne avaldis, mis võimaldab teil kirjutada keerulisemaid reegleid ja need on:
- nõutav: [edu = ok uus_authtok_reqd = ok ignoreeri = ignoreeri vaikeväärtust = halb]
- vajalik: [edu = ok uus_authtok_reqd = ok ignoreeri = ignoreeri vaikeväärtust = sure]
- piisav: [edu = tehtud uus_authtok_reqd = tehtud vaikeväärtus = ignoreerima]
- valikuline: [edu = ok uus_authtok_reqd = ok vaikeväärtus = ignoreerimine]
Järgnev näide kaasaegsest CentOS 7 süsteemist. Vaatleme neid reegleid failist /etc/pam.d/postlogin PAM:
#%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
Siin on veel üks konfiguratsiooni näide /etc/pam.d/smartcard-auth PAM-failist:
#%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
Lisateavet leiate pam.d man lehelt:
$ man pam.d
Lõpuks, konfiguratsioonifailide süntakside ja kõigi PAM-moodulite põhjaliku kirjelduse leiate Linux-PAM-i dokumentatsioonist.
PAM on võimas kõrgetasemeline API, mis võimaldab autentimisele tuginevatel programmidel autentsetele kasutajatele Linuxi süsteemi rakendusi. See on võimas, kuid väga keeruline mõista ja kasutada.
Selles artiklis oleme selgitanud, kuidas konfigureerida PAM-i täiustatud funktsioone Ubuntu ja CentOS-is. Kui teil on jagamiseks küsimusi või kommentaare, kasutage allolevat tagasisidevormi.