Jinsi ya kusanidi na kutumia PAM katika Linux
Linux-PAM (fupi kwa Moduli za Uthibitishaji Zinazoweza Kuchomekwa ambazo ziliibuka kutoka kwa usanifu wa Unix-PAM) ni safu yenye nguvu ya maktaba zinazoshirikiwa zinazotumiwa kuthibitisha mtumiaji kwa programu (au huduma) katika mfumo wa Linux.
Inaunganisha moduli nyingi za kiwango cha chini kwenye API ya kiwango cha juu ambayo hutoa usaidizi wa uthibitishaji wa programu. Hii inaruhusu wasanidi programu kuandika programu ambazo zinahitaji uthibitishaji, bila kuzingatia mfumo wa msingi wa uthibitishaji.
Usambazaji mwingi wa kisasa wa Linux hutumia Linux-PAM (hapa inajulikana kama \PAM) kwa chaguomsingi. Katika makala haya, tutaeleza jinsi ya kusanidi PAM ya kina katika mifumo ya Ubuntu na CentOS.
Kabla hatujaendelea zaidi, kumbuka kuwa:
- Kama msimamizi wa mfumo, jambo muhimu zaidi ni kufahamu jinsi faili za usanidi za PAM zinavyofafanua muunganisho kati ya programu (huduma) na moduli za uthibitishaji zinazoweza kuchomekwa (PAM) zinazotekeleza kazi halisi za uthibitishaji. Huhitaji kuelewa utendakazi wa ndani wa PAM.
- PAM ina uwezo wa kubadilisha kwa umakini usalama wa mfumo wako wa Linux. Usanidi wenye makosa unaweza kulemaza ufikiaji wa mfumo wako kwa sehemu, au kabisa. Kwa mfano, kufuta kwa bahati mbaya faili ya usanidi chini ya /etc/pam.d/* na/au /etc/pam.conf kunaweza kukufungia nje ya mfumo wako mwenyewe!
Jinsi ya Kuangalia Programu inafahamu PAM
Ili kuajiri PAM, programu/programu inahitaji “kufahamu PAM”; inahitaji kuandikwa na kukusanywa mahususi ili kutumia PAM. Ili kujua kama programu \PAM-inajua au la, angalia ikiwa imeundwa na maktaba ya PAM kwa kutumia ldd amri.
Kwa mfano sshd:
$ sudo ldd /usr/sbin/sshd | grep libpam.so libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)
Jinsi ya kusanidi PAM katika Linux
Faili kuu ya usanidi ya PAM ni /etc/pam.conf na saraka /etc/pam.d/ ina faili za usanidi za PAM kwa kila programu/huduma zinazofahamu PAM. PAM itapuuza faili ikiwa saraka ipo.
Sintaksia ya faili kuu ya usanidi ni kama ifuatavyo. Faili ina orodha ya sheria zilizoandikwa kwenye mstari mmoja (unaweza kupanua sheria kwa kutumia \\”
herufi ya kutoroka) na maoni yanatanguliwa na \#
alama na kupanua hadi mwisho unaofuata wa mstari.
Umbizo la kila sheria ni mkusanyiko wa ishara uliotenganishwa na nafasi (tatu za kwanza hazijali kisa). Tutaelezea ishara hizi katika sehemu zinazofuata.
service type control-flag module module-arguments
wapi:
- huduma: jina halisi la programu.
- aina: aina ya moduli/muktadha/kiolesura.
- control-flag: inaonyesha tabia ya PAM-API iwapo moduli itashindwa kufaulu katika kazi yake ya uthibitishaji.
- moduli: jina kamili la faili au njia ya jamaa ya PAM.
- hoja za moduli: orodha iliyotenganishwa ya nafasi ya kudhibiti tabia ya moduli.
Sintaksia ya kila faili katika /etc/pam.d/ inafanana na ile ya faili kuu na ina mistari ya fomu ifuatayo:
type control-flag module module-arguments
Huu ni mfano wa ufafanuzi wa sheria (bila hoja za moduli) unaopatikana kwenye faili /etc/pam.d/sshd, ambayo hairuhusu uingiaji usio na mizizi wakati /etc/nologin ipo:
account required pam_nologin.so
Kuelewa Vikundi vya Usimamizi wa PAM na bendera za Udhibiti
Kazi za uthibitishaji za PAM zimegawanywa katika vikundi vinne vya usimamizi huru. Vikundi hivi vinadhibiti vipengele tofauti vya ombi la kawaida la mtumiaji la huduma iliyowekewa vikwazo.
Moduli inahusishwa na moja ya aina hizi za vikundi vya usimamizi:
- akaunti: toa huduma za uthibitishaji wa akaunti: muda wa nenosiri la mtumiaji umekwisha?; Je, mtumiaji huyu anaruhusiwa kufikia huduma iliyoombwa?.
- uthibitishaji: thibitisha mtumiaji na usanidi kitambulisho cha mtumiaji.
- nenosiri: wana jukumu la kusasisha manenosiri ya mtumiaji na kufanya kazi pamoja na moduli za uthibitishaji.
- kipindi: dhibiti vitendo vinavyotekelezwa mwanzoni mwa kipindi na mwisho wa kipindi.
Faili za kitu zinazoweza kupakiwa za PAM (moduli) zinapaswa kupatikana katika saraka ifuatayo: /lib/security/ au /lib64/security kulingana na usanifu.
Bendera za udhibiti zinazotumika ni:
- sharti: kutofaulu hurejesha udhibiti mara moja kwa programu ikionyesha hali ya kutofaulu kwa sehemu ya kwanza.
- inahitajika: moduli hizi zote zinahitajika ili kufanikiwa ili libpam kurudisha ufanisi kwa programu.
- inatosha: ikizingatiwa kuwa moduli zote zilizotangulia zimefaulu, kufaulu kwa moduli hii kunasababisha urejesho wa mara moja na wenye ufanisi kwa programu (kushindwa kwa moduli hii kunapuuzwa).
- hiari: kufaulu au kutofaulu kwa moduli hii kwa ujumla hakurekodiwi.
Kwa kuongezea yaliyo hapo juu ni maneno muhimu, kuna bendera zingine mbili halali za udhibiti:
- jumuisha na hifadhi ndogo: inajumuisha mistari yote ya aina fulani kutoka kwa faili ya usanidi iliyobainishwa kama hoja ya udhibiti huu.
Jinsi ya Kuzuia Ufikiaji wa mizizi kwa Huduma ya SSH Kupitia PAM
Kama mfano, tutasanidi jinsi ya kutumia PAM kuzima ufikiaji wa mtumiaji wa mizizi kwa mfumo kupitia SSH na programu za kuingia. Hapa, tunataka kuzima ufikiaji wa mtumiaji wa mizizi kwa mfumo, kwa kuzuia ufikiaji wa kuingia na huduma za sshd.
Tunaweza kutumia moduli ya /lib/security/pam_listfile.so ambayo inatoa unyumbufu mkubwa katika kuzuia mapendeleo ya akaunti mahususi. Fungua na uhariri faili kwa ajili ya huduma inayolengwa katika saraka ya /etc/pam.d/ kama inavyoonyeshwa.
$ sudo vim /etc/pam.d/sshd OR $ sudo vim /etc/pam.d/login
Ongeza sheria hii katika faili zote mbili.
auth required pam_listfile.so \ onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers
Kuelezea ishara katika sheria hapo juu:
- auth: ni aina ya moduli (au muktadha).
- inahitajika: ni bendera ya kudhibiti ambayo inamaanisha kuwa moduli ikitumiwa, lazima ipite au matokeo ya jumla yatashindwa, bila kujali hali ya moduli zingine.
- pam_listfile.so: ni sehemu ambayo hutoa njia ya kukataa au kuruhusu huduma kulingana na faili kiholela.
- onerr=succeed: hoja ya moduli.
- item=user: hoja ya moduli inayobainisha kile kilichoorodheshwa kwenye faili na kinachopaswa kuangaliwa.
- sense=deny: hoja ya moduli inayobainisha hatua ya kuchukua ikiwa itapatikana kwenye faili, ikiwa bidhaa HAIJAPATIKANA kwenye faili, basi hatua iliyo kinyume inaombwa.
- file=/etc/ssh/deniedusers: hoja ya moduli inayobainisha faili iliyo na kipengee kimoja kwa kila mstari.
Ifuatayo, tunahitaji kuunda faili /etc/ssh/deniedusers na kuongeza mzizi wa jina ndani yake:
$ sudo vim /etc/ssh/deniedusers
Hifadhi mabadiliko na funga faili, kisha uweke ruhusa zinazohitajika juu yake:
$ sudo chmod 600 /etc/ssh/deniedusers
Kuanzia sasa, sheria iliyo hapo juu itaambia PAM kushauriana na /etc/ssh/deniedusers faili na kukataa ufikiaji wa SSH na huduma za kuingia kwa mtumiaji yeyote aliyeorodheshwa.
Jinsi ya kusanidi PAM ya Juu katika Linux
Kuandika sheria ngumu zaidi za PAM, unaweza kutumia bendera za udhibiti halali katika fomu ifuatayo:
type [value1=action1 value2=action2 …] module module-arguments
Ambapo valueN inalingana na msimbo wa kurejesha kutoka kwa chaguo za kukokotoa katika moduli ambayo mstari umefafanuliwa. Unaweza kupata thamani zinazotumika kwenye Mwongozo wa Msimamizi wa PAM mtandaoni. Thamani maalum ni chaguo-msingi, ambayo inamaanisha valueN zote ambazo hazijatajwa kwa uwazi.
ActionN inaweza kuchukua mojawapo ya aina zifuatazo:
- puuza: ikiwa kitendo hiki kitatumika pamoja na rundo la moduli, hali ya urejeshaji wa moduli haitachangia msimbo wa kurejesha ambao programu itapokea.
- mbaya: inaonyesha kuwa msimbo wa kurejesha unapaswa kuzingatiwa kama dalili ya kushindwa kwa moduli. Ikiwa sehemu hii ni ya kwanza katika rafu kushindwa, thamani yake ya hali itatumika kwa ile ya rafu nzima.
- kufa: sawa na mbaya lakini inaweza kusimamisha mrundikano wa sehemu na PAM kurudi mara moja kwenye programu.
- sawa: hii inaelekeza PAM kwamba msimamizi wa mfumo anafikiri kwamba msimbo huu wa kurejesha unapaswa kuchangia moja kwa moja kwenye msimbo wa kurejesha wa rundo kamili la moduli.
- imefanywa: sawa na sawa lakini inaweza kusimamisha mrundikano wa sehemu na PAM kurudi mara moja kwenye programu.
- N (nambari kamili ambayo haijatiwa saini): sawa na sawa lakini inaweza kuruka moduli za N zinazofuata kwenye rafu.
- Weka upya: kitendo hiki kitafuta kumbukumbu yote ya hali ya rafu ya moduli na ianze upya kwa kutumia moduli inayofuata iliyopangwa.
Kila moja ya maneno manne muhimu: inahitajika; hitaji; kutosha; na kwa hiari, uwe na usemi sawa kwa mujibu wa [...]
syntax, ambayo hukuruhusu kuandika sheria ngumu zaidi nazo ni:
- inahitajika: [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
- requisite: [success=ok new_authtok_reqd=ok ignore=ignore default=die]
- inatosha: [success=done new_authtok_reqd=done default=ignore]
- hiari: [success=ok new_authtok_reqd=ok default=ignore]
Ufuatao ni mfano kutoka kwa mfumo wa kisasa wa CentOS 7. Hebu tuzingatie sheria hizi kutoka /etc/pam.d/postlogin faili ya 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
Hapa kuna usanidi mwingine wa mfano kutoka /etc/pam.d/smartcard-auth faili ya 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
Kwa habari zaidi, angalia pam.d ukurasa wa mtu:
$ man pam.d
Hatimaye, maelezo ya kina ya sintaksia ya faili ya Usanidi na moduli zote za PAM zinaweza kupatikana katika hati za Linux-PAM.
PAM ni API yenye nguvu ya kiwango cha juu inayoruhusu programu zinazotegemea uthibitishaji kwa watumiaji halisi kwa programu katika mfumo wa Linux. Ni nguvu lakini ni changamoto sana kuelewa na kutumia.
Katika makala hii, tumeelezea jinsi ya kusanidi vipengele vya juu vya PAM katika Ubuntu na CentOS. Ikiwa una maswali au maoni ya kushiriki, tumia fomu ya maoni hapa chini.