Giunsa ang Pag-configure ug Paggamit sa PAM sa Linux


Ang Linux-PAM (mubo alang sa Pluggable Authentication Modules nga milambo gikan sa Unix-PAM nga arkitektura) usa ka gamhanan nga suite sa gipaambit nga mga librarya nga gigamit sa dinamikong pag-authenticate sa usa ka user sa mga aplikasyon (o mga serbisyo) sa usa ka Linux system.

Gihiusa niini ang daghang mga module sa panghimatuud nga ubos ang lebel sa usa ka taas nga lebel nga API nga naghatag suporta sa dinamikong pag-authenticate alang sa mga aplikasyon. Gitugotan niini ang mga developers sa pagsulat sa mga aplikasyon nga nanginahanglan og authentication, nga independente sa nagpahiping sistema sa pag-authenticate.

Daghang mga modernong distribusyon sa Linux ang nagsuporta sa Linux-PAM (gitawag nga \PAM) sa default. Niini nga artikulo, among ipasabut kung giunsa ang pag-configure sa advanced PAM sa mga sistema sa Ubuntu ug CentOS.

Sa dili pa kita magpadayon, timan-i nga:

  • Isip usa ka administrador sa sistema, ang pinakaimportante nga butang mao ang pagkahanas kung giunsa ang (mga) configuration file sa PAM naghubit sa koneksyon tali sa mga aplikasyon (mga serbisyo) ug sa mga pluggable authentication modules (PAMs) nga naghimo sa aktuwal nga mga buluhaton sa pag-authenticate. Dili nimo kinahanglan nga masabtan ang internal nga pagtrabaho sa PAM.
  • Ang PAM adunay potensyal nga seryosong usbon ang seguridad sa imong Linux system. Ang sayop nga pag-configure mahimong maka-disable sa pag-access sa imong sistema nga partially, o hingpit. Pananglitan ang usa ka aksidenteng pagtangtang sa usa ka (mga) configuration file ubos sa /etc/pam.d/* ug/o /etc/pam.conf mahimong maka-lock nimo gikan sa imong kaugalingong sistema!

Giunsa Pagsusi ang usa ka Programa nga nahibal-an sa PAM

Aron magamit ang PAM, ang aplikasyon/programa kinahanglan nga PAM nahibalo; kini kinahanglan nga gisulat ug gihugpong ilabi na sa paggamit sa PAM. Aron mahibal-an kung ang usa ka programa mao ang \PAM-aware o dili, susiha kung kini giipon sa librarya sa PAM gamit ang ldd command.

Pananglitan sshd:

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

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

Giunsa ang Pag-configure sa PAM sa Linux

Ang nag-unang configuration file alang sa PAM mao ang /etc/pam.conf ug ang /etc/pam.d/ directory naglangkob sa PAM configuration files alang sa matag PAM-aware application/services. Ibaliwala sa PAM ang file kung naa ang direktoryo.

Ang syntax alang sa nag-unang configuration file mao ang mosunod. Ang file gilangkuban sa usa ka lista sa mga lagda nga gisulat sa usa ka linya (mahimo nimong i-extend ang mga lagda gamit ang \\” escape character) ug ang mga komento giunhan sa \#” marka ug ipaabot sa sunod nga katapusan sa linya.

Ang pormat sa matag lagda usa ka gilain nga espasyo nga koleksyon sa mga token (ang unang tulo kay case-insensitive). Atong ipatin-aw kini nga mga token sa sunod nga mga seksyon.

service type control-flag module module-arguments 

diin:

  • serbisyo: aktuwal nga ngalan sa aplikasyon.
  • matang: matang sa module/konteksto/interface.
  • control-flag: nagpaila sa kinaiya sa PAM-API kung ang module mapakyas sa paglampos sa iyang authentication task.
  • module: ang hingpit nga ngalan sa file o paryente nga ngalan sa dalan sa PAM.
  • mga modulo-argumento: gilain nga luna nga listahan sa mga token para sa pagkontrolar sa kinaiya sa module.

Ang syntax sa matag file sa /etc/pam.d/ susama nianang sa main file ug gilangkoban sa mga linya sa mosunod nga porma:

type control-flag module module-arguments

Kini usa ka pananglitan sa usa ka kahulugan sa lagda (walay module-argument) nga makita sa /etc/pam.d/sshd file, nga dili motugot sa mga non-root logins kung adunay /etc/nologin:

account required pam_nologin.so

Pagsabot sa PAM Management Groups ug Control-flags

Ang mga buluhaton sa pag-authenticate sa PAM gibahin sa upat nga independente nga mga grupo sa pagdumala. Kini nga mga grupo nagdumala sa lainlaing mga aspeto sa usa ka kasagaran nga hangyo sa tiggamit alang sa usa ka gidili nga serbisyo.

Ang usa ka module nalangkit sa usa niining mga tipo sa grupo sa pagdumala:

  • account: paghatag og mga serbisyo alang sa pag-verify sa account: na-expire na ba ang password sa user?; gitugutan ba kini nga tiggamit nga maka-access sa gihangyo nga serbisyo?.
  • authentication: pamatud-an ang usa ka user ug i-set up ang mga kredensyal sa user.
  • password: responsable sa pag-update sa mga password sa user ug magtrabaho kauban ang mga module sa pag-authenticate.
  • sesyon: pagdumala sa mga aksyon nga gihimo sa sinugdanan sa usa ka sesyon ug katapusan sa usa ka sesyon.

Ang PAM loadable object files (ang mga modules) ibutang sa mosunod nga direktoryo: /lib/security/ o /lib64/security depende sa architecture.

Ang gisuportahan nga control-flag mao ang:

  • kinahanglanon: ang kapakyasan nagbalik dayon sa kontrol sa aplikasyon nga nagpakita sa kinaiya sa unang module nga napakyas.
  • gikinahanglan: kining tanan nga mga module gikinahanglan aron molampos para sa libpam nga makabalik sa kalampusan sa aplikasyon.
  • igo: tungod kay ang tanan nga nag-una nga mga module milampos, ang kalampusan niini nga module mosangpot sa usa ka diha-diha ug malampuson nga pagbalik sa aplikasyon (ang kapakyasan niini nga module wala panumbalinga).
  • opsyonal: ang kalamposan o kapakyasan niini nga modyul kasagarang wala girekord.

Dugang pa sa mga sa ibabaw mao ang mga keyword, adunay duha pa ka balido nga kontrol nga mga bandila:

  • ilakip ug substack: iapil ang tanang linya sa gihatag nga tipo gikan sa configuration file nga gipiho isip argumento niini nga kontrol.

Giunsa Pagpugong ang Root Access sa SSH Service Pinaagi sa PAM

Isip usa ka pananglitan, among i-configure kung unsaon paggamit ang PAM aron ma-disable ang root user access sa usa ka sistema pinaagi sa SSH ug login programs. Dinhi, gusto namong i-disable ang root user access sa usa ka system, pinaagi sa pagpugong sa access sa login ug sshd services.

Mahimo namong gamiton ang /lib/security/pam_listfile.so nga module nga nagtanyag og dako nga pagka-flexible sa paglimit sa mga pribilihiyo sa piho nga mga account. Ablihi ug usba ang file para sa target nga serbisyo sa /etc/pam.d/ directory sama sa gipakita.

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

Idugang kini nga lagda sa duha ka mga file.

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

Pagpatin-aw sa mga token sa ibabaw nga lagda:

  • auth: mao ang klase sa module (o konteksto).
  • gikinahanglan: usa ka control-flag nga nagpasabot nga kung ang module gigamit, kinahanglan nga mopasar o ang kinatibuk-ang resulta mapakyas, bisan unsa pa ang kahimtang sa ubang mga module.
  • pam_listfile.so: usa ka module nga naghatag ug paagi sa pagdumili o pagtugot sa mga serbisyo base sa usa ka arbitraryong file.
  • onerr=succeed: argumento sa module.
  • item=user: module argumento nga nagtino kung unsa ang nalista sa file ug kinahanglan nga susihon.
  • sense=deny: module argumento nga nagtino sa aksyon nga buhaton kung makit-an sa file, kung ang butang DILI makit-an sa file, nan ang kaatbang nga aksyon gihangyo.
  • file=/etc/ssh/deniedusers: module argumento nga nagtino sa file nga adunay usa ka butang matag linya.

Sunod, kinahanglan naton nga buhaton ang file /etc/ssh/deniedusers ug idugang ang ngalan nga gamut niini:

$ sudo vim /etc/ssh/deniedusers

I-save ang mga pagbag-o ug isira ang file, dayon ibutang ang gikinahanglan nga mga pagtugot niini:

$ sudo chmod 600 /etc/ssh/deniedusers

Sukad karon, ang lagda sa ibabaw mosulti sa PAM nga konsultahon ang /etc/ssh/deniedusers file ug dumilian ang pag-access sa SSH ug mga serbisyo sa pag-login alang sa bisan kinsa nga nakalista nga tiggamit.

Giunsa ang Pag-configure sa Advanced PAM sa Linux

Aron masulat ang labi ka komplikado nga mga lagda sa PAM, mahimo nimong gamiton ang balido nga control-flag sa mosunod nga porma:

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

Diin ang valueN katumbas sa return code gikan sa function nga gigamit sa module diin ang linya gihubit. Makita nimo ang gisuportahan nga mga kantidad gikan sa on-line nga PAM Administrator's Guide. Ang usa ka espesyal nga bili kay default, nga nagpasabot sa tanang valueN nga wala hisgoti sa dayag.

Ang aksyonN mahimong makuha ang usa sa mosunod nga mga porma:

  • ibaliwala: kung kini nga aksyon gigamit uban sa usa ka stack sa mga module, ang kahimtang sa pagbalik sa module dili makatampo sa return code nga makuha sa aplikasyon.
  • dili maayo: nagpakita nga ang return code kinahanglan isipon nga timailhan sa pagkapakyas sa module. Kung kini nga module mao ang una sa stack nga mapakyas, ang status value niini gamiton para sa tibuok stack.
  • mamatay: katumbas sa dili maayo apan mahimong tapuson ang module stack ug PAM dayong balik sa aplikasyon.
  • ok: kini nagtudlo sa PAM nga ang system administrator naghunahuna nga kini nga return code kinahanglang direktang makatampo sa return code sa tibuok stack sa modules.
  • nahuman na: katumbas sa ok apan mahimong tapuson ang module stack ug PAM dayong balik sa aplikasyon.
  • N (usa ka unsigned integer): katumbas sa ok apan mahimong molukso sa sunod nga N modules sa stack.
  • Reset: kini nga aksyon nagwagtang sa tanang memorya sa kahimtang sa module stack ug magsugod pag-usab sa sunod nga stacked module.

Matag usa sa upat ka keyword: gikinahanglan; gikinahanglan; igo; ug opsyonal, adunay katumbas nga ekspresyon sa termino sa [...] syntax, nga nagtugot kanimo sa pagsulat sa mas komplikado nga mga lagda ug kini mao ang:

  • gikinahanglan: [success=ok new_authtok_reqd=ok ignore=baliwala ang default=daotan]
  • kinahanglanon: [success=ok new_authtok_reqd=ok ignore=baliwala ang default=mamatay]
  • igo: [success=done new_authtok_reqd=done default=baliwala]
  • opsyonal: [success=ok new_authtok_reqd=ok default=baliwala]

Ang mosunod usa ka pananglitan gikan sa modernong CentOS 7 nga sistema. Atong tagdon kini nga mga lagda gikan sa /etc/pam.d/postlogin PAM file:

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

Ania ang laing pananglitan nga pag-configure gikan sa /etc/pam.d/smartcard-auth PAM file:

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

Para sa dugang nga impormasyon, tan-awa ang panid sa tawo nga pam.d:

$ man pam.d 

Katapusan, ang usa ka komprehensibo nga paghulagway sa Configuration file syntax ug tanan nga PAM modules makita sa dokumentasyon para sa Linux-PAM.

Ang PAM usa ka kusgan nga taas nga lebel nga API nga nagtugot sa mga programa nga nagsalig sa pag-authenticate sa mga tinuud nga tiggamit sa mga aplikasyon sa usa ka sistema sa Linux. Gamhanan kini apan lisod kaayong sabton ug gamiton.

Niini nga artikulo, among gipasabut kung giunsa ang pag-configure sa mga advanced nga bahin sa PAM sa Ubuntu ug CentOS. Kung naa kay pangutana o komento nga ipaambit, gamita ang feedback form sa ubos.