Generell indeks for serien: Datanettverk for små og mellomstore bedrifter: Introduksjon
Hei venner og venner!
Denne artikkelen har som mål å gi en oversikt over PAM- autentisering . Vi er vant til å bruke arbeidsstasjonene våre med Linux/UNIX-operativsystemer daglig, og vi stopper sjelden opp for å studere hvordan autentiseringsmekanismen fungerer hver gang vi logger oss inn. Er vi i det hele tatt klar over eksistensen av filene /etc/passwd og /etc/shadow , som utgjør hoveddatabasen for lokal brukerautentiseringsinformasjon? Vi håper at du etter å ha lest dette innlegget – i det minste – har en klar forståelse av hvordan PAM fungerer.
autentisering
Autentisering – i praksis – er måten en bruker verifiserer seg selv på i et system. Autentiseringsprosessen krever et sett med identiteter og legitimasjonsinformasjon – brukernavn og passord – som sammenlignes med informasjon lagret i en database. Hvis de presenterte legitimasjonsinformasjonene samsvarer med de som er lagret, og brukerens konto er aktiv, sies det at brukeren har autentisert seg eller bestått autentiseringsprosessen.
Når brukeren er autentisert, sendes informasjonen til tilgangskontrolltjenesten for å avgjøre hva brukeren kan gjøre i systemet og hvilke ressurser de har riktig autorisasjon til å få tilgang til.
Informasjon for å verifisere brukeren kan lagres i lokale databaser på systemet, eller det lokale systemet kan referere til en eksisterende database på et eksternt system, for eksempel LDAP, Kerberos, NIS-databaser og så videre.
De fleste UNIX® / Linux-operativsystemer har de nødvendige verktøyene for å konfigurere klient- / servergodkjenningstjenesten for de vanligste typene brukerdatabaser. Noen av disse systemene har veldig komplette grafiske verktøy som Red Hat / CentOS, SUSE / openSUSE og andre distribusjoner.
PAM: Pluggbar godkjenningsmodul
Vi bruker modulene som er satt inn for autentisering daglig når vi logger oss på skrivebordet vårt med et Linux/UNIX-basert operativsystem, og ved mange andre anledninger når vi får tilgang til lokale eller eksterne tjenester som har en bestemt lokal PAM-modul satt inn for autentisering mot den tjenesten.
En praktisk idé om hvordan PAM-moduler settes inn kan fås gjennom autentiseringstilstandssekvensen på en Debian-maskin og på en CentOS-maskin , som vi utvikler nedenfor.
Debian
dokumentasjon
Hvis vi installerer libpam-doc- pakken, vil vi ha veldig god dokumentasjon plassert i katalogen /usr/share/doc/libpam-doc/html.
root @ linuxbox: ~ # aptitude installer libpam-doc root @ linuxbox: ~ # ls -l / usr / share / doc / libpam-doc /
Det er også mer dokumentasjon om PAM i katalogene:
root @ linuxbox: ~ # ls -l / usr / share / doc / | grep pam drwxr-xr-x 2 rotrot 4096 5. april 21:11 libpam0g drwxr-xr-x 4 rotrot 4096 7. april 16:31 libpam-doc drwxr-xr-x 2 rotrot 4096 5. april 21:30 libpam-gnome- nøkkelring drwxr-xr-x 3 rotrot 4096 5. april 21:11 libpam-moduler drwxr-xr-x 2 rotrot 4096 5. april 21:11 libpam-moduler-bin drwxr-xr-x 2 rotrot 4096 5. april 21: 11 libpam-runtime drwxr-xr-x 2 root root 4096 5. apr 21:26 libpam-systemd drwxr-xr-x 3 root root 4096 5. apr 21:31 python-pam
Vi tror at før vi går ut for å lete etter dokumentasjon på Internett, bør vi gjennomgå den som allerede er installert, eller den som vi kan installere direkte fra programlagrene som finnes for noe, og ved mange anledninger kopierer vi dem til harddisken vår . Eksempel på dette er følgende:
root @ linuxbox: ~ # less / usr / share / doc / libpam-gnome-keyring / README gnome-keyring er et program som holder passord og andre hemmeligheter for brukerne. Den kjøres som en demon i økten, i likhet med ssh-agent, og andre applikasjoner finner den via en miljøvariabel eller en D-Bus. Programmet kan administrere flere nøkkelringer, hver med sitt eget hovedpassord, og det er også en øktnøkkelring som aldri lagres på disken, men glemmes når økten avsluttes. Biblioteket libgnome-keyring brukes av applikasjoner for å integrere med GNOME-nøkkelring.
Som oversatt veldig fritt vil uttrykke:
- gnome-keyring er programmet som har ansvaret for å oppbevare passord og andre hemmeligheter for brukerne. I hver økt kjører den som en demon, som ligner på ssh-agent, og til andre applikasjoner som er lokalisert gjennom en miljøvariabel - miljø eller via D-Bus. Programmet kan håndtere flere nøkkelringer, hver med sitt eget hovedpassord. Det er også en nøkkelring-økt som aldri er lagret på harddisken og blir glemt når økten avsluttes. Programmer bruker libgnome-nøkkelring-biblioteket for å integrere med GNOME-nøkkelring-systemet.
Debian med basisoperativsystemet
Vi starter med en datamaskin der vi nettopp har installert Debian 8 «Jessie» som operativsystem, og under installasjonsprosessen valgte vi bare «Grunnleggende systemverktøy», uten å sjekke noen andre alternativer for å installere oppgaver eller forhåndsdefinerte pakker som OpenSSH-serveren. Hvis vi kjører følgende etter å ha startet den første økten:
root @ master: ~ # pam-auth-update
vi vil oppnå følgende utganger:
Dette viser oss at den eneste PAM-modulen som var i bruk frem til det tidspunktet var UNIX-autentisering. Verktøyet pam-auth-update lar oss konfigurere den sentrale autentiseringspolicyen for et system ved hjelp av forhåndsdefinerte profiler levert av PAM-modulene. For mer informasjon, se pam-auth-update man-siden.
Siden vi ennå ikke har installert OpenSSH-serveren, finner vi ikke PAM-modulen i /etc/pam.d/-katalogen , som vil inneholde PAM-modulene og profilene som er lastet inn frem til dette punktet:
root @ master: ~ # ls -l /etc/pam.d/ totalt 76 -rw-r - r-- 1 rotrot 235 30. september 2014 atd -rw-r - r-- 1 rotrot 1208 6. april 22:06 felleskonto -rw-r - r-- 1 rotrot 1221 6. apr 22:06 felles-auth -rw-r - r-- 1 rotrot 1440 6. april 22:06 felles-passord -rw-r - r-- 1 rotrot 1156 6. april 22:06 fellessession -rw -r - r-- 1 rotrot 1154 6. april 22:06 vanlig sesjon-ikke-interaktiv -rw-r - r-- 1 rotrot 606 11. juni 2015 cron -rw-r - r - 1 rotrot 384 19. november 2014 chfn -rw-r - r-- 1 root root 92 Nov 19 2014 chpasswd -rw-r - r-- 1 root root 581 Nov 19 2014 chsh -rw-r-- r-- 1 root root 4756 Nov 19 2014 login -rw-r - r-- 1 rotrot 92 nov 19 2014 nybrukere -rw-r - r-- 1 rotrot 520 6. januar 2016 annet -rw-r- -r-- 1 rotrot 92 19. november 2014 passwd - rw-r - r-- 1 rotrot 143 29. mars 2015 runuser -rw-r - r-- 1 rotrot 138 29. mars 2015 runuser-l -rw -r - r-- 1 rotrot 2257 19. november 2014 su - rw-r - r-- 1 rotrot 220 2. september 2016 systemd-bruker
For eksempel konfigurerer PAM-modulen `/etc/pam.d/chfn` Shadow- tjenesten , mens `/etc/pam.d/ cron` konfigurerer cron- daemonen. For å lære mer kan vi lese innholdet i hver av disse filene, noe som er veldig lærerikt. Som et eksempel vises innholdet i `/etc/pam.d/ cron`-modulen nedenfor :
root @ master: ~ # mindre /etc/pam.d/cron # PAM-konfigurasjonsfilen for cron-demonen @ inkluderer felles-godkjenning # Angir den nødvendige loginuid-prosessattributtøkten pam_loginuid.so # Les miljøvariabler fra pam_envs standardfiler, / etc / environment # og /etc/security/pam_env.conf. økt kreves pam_env.so # I tillegg må du lese systeminformasjon om lokal språkøkt pam_env.so envfile = / etc / default / locale @ inkluderer felleskonto @ inkluderer fellessesjon-ikke-interaktiv # Setter opp brukergrenser, vennligst definer grenser for cron-oppgaver # gjennom /etc/security/limits.conf-økt nødvendig pam_limits.so
Rekkefølgen på uttalelsene i hver av filene er viktig. Generelt sett anbefaler vi ikke å endre noen av dem med mindre vi vet veldig godt hva vi gjør.
Debian med base OS + OpenSSH
root @ master: ~ # aptitude installer oppgave-ssh-server
Følgende NYE pakker blir installert: openssh-server {a} openssh-sftp-server {a} task-ssh-server
Vi vil bekrefte at PAM sshd- modulen ble lagt til og konfigurert riktig :
root @ master: ~ # ls -l /etc/pam.d/sshd -rw-r - r-- 1 rotrot 2133 22. juli 2016 /etc/pam.d/sshd
Hvis vi vil vite innholdet i den profilen:
root @ master: ~ # mindre /etc/pam.d/sshd
Med andre ord, når vi prøver å starte en ekstern økt fra en annen datamaskin ved hjelp av ssh , gjøres autentisering på den lokale datamaskinen hovedsakelig gjennom sshd PAM-modulen , uten å glemme de andre autorisasjons- og sikkerhetsaspektene som er involvert i selve ssh-tjenesten.
Forresten, hovedkonfigurasjonsfilen for denne tjenesten er /etc/ssh/sshd_config , og i hvert fall på Debian er den installert som standard uten å tillate interaktiv root- pålogging . For å aktivere den må vi endre /etc/ssh/sshd_config -filen og endre følgende linje:
PermitRootLogin uten passord
av
PermitRootLogin ja
og start på nytt og kontroller tjenestens status ved å:
root @ master: ~ # systemctl start ssh på nytt root @ master: ~ # systemctl status ssh
Debian med LXDE-skrivebordet
Vi fortsetter med samme team - vi endrer navnet deres eller vertsnavn av "Linuxbox»For fremtidig bruk - som vi ferdig med å installere LXDE Desktop. La oss løpe pam-auth-oppdatering og vi vil oppnå følgende utganger:

Systemet har allerede aktivert alle profilene -Modules- som er nødvendige for riktig autentisering under installasjonen av LXDE-skrivebordet, som er følgende:
- UNIX-godkjenningsmodul.
- Modul som registrerer brukersessioner i den hierarkiske kontrollgruppen for systemd.
- GNOME nøkkelring Daemon-modul
- Vi benytter anledningen til å anbefale at når vi blir spurt "PAM-profiler for å aktivere", velger vi alternativet Med mindre vi vet veldig godt hva vi gjør. Hvis vi endrer PAM-konfigurasjonen som automatisk blir laget av selve operativsystemet, kan vi enkelt deaktivere påloggingen på datamaskinen.
I de foregående tilfellene snakker vi om lokal autentisering eller autentisering mot den lokale datamaskinen, slik det skjer når vi starter en ekstern økt ved hjelp av ssh.
Hvis vi implementerer en ekstern autentiseringsmetode på den lokale datamaskinen, slik at brukere med påloggingsinformasjonen sin lagres på en ekstern OpenLDAP-server eller i en Active Directory, vil systemet ta hensyn til den nye formen for autentisering og legge til de nødvendige PAM-modulene.
Hovedfiler
- / Etc / passwd: Brukerkontoinformasjon
- / etc / skygge: Sikker informasjon om brukerkontoer
- /etc/pam.conf: Fil som bare skal brukes hvis katalogen ikke eksisterer /etc/pam.d/
- /etc/pam.d/: Katalog der programmer og tjenester installerer PAM-modulene
- /etc/pam.d/passwd: PAM-konfigurasjon for passwd.
- /etc/pam.d/common-account: Autorisasjonsparametere som er felles for alle tjenester
- /etc/pam.d/common-auth: Autentiseringsparametere som er felles for alle tjenester
- /etc/pam.d/common-password: PAM-moduler som er felles for alle tjenester relatert til passord - passord
- /etc/pam.d/common-session: PAM-moduler som er felles for alle tjenester relatert til brukersessioner
- /etc/pam.d/common-session-noninteractive: PAM-moduler som er felles for alle tjenester relatert til ikke-interaktive økter eller som ikke krever brukerintervensjon, for eksempel oppgaver som utføres i begynnelsen og slutten av ikke-interaktive økter.
- / usr / del / doc / passwd /: Dokumentasjonskatalog.
Vi anbefaler å lese man-sidene for passwd og shadow ved å bruke `man passwd` og `man shadow` . Det er også lurt å lese innholdet i filene `common-account`, `common-auth`, `common-passwrod`, `common-session` og `common-session-noninteractive`.
PAM-moduler tilgjengelig
For å få en idé om PAM-modulene som er tilgjengelige a priori i standard Debian-depotet, kjører vi:
buzz @ linuxbox: ~ $ aptitude search libpam
Listen er lang, og vi vil bare gjenspeile modulene som viser hvor omfattende den er:
libpam-afs-session - PAM module to set up a PAG and obtain AFS tokens libpam-alreadyloggedin - PAM module to skip password authentication for logged users libpam-apparmor - changehat AppArmor library as a PAM module libpam-barada - PAM module to provide two-factor authentication based on HOTP libpam-blue - PAM module for local authenticaction with bluetooth devices libpam-ca - POSIX 1003.1e capabilities (PAM module) libpam-ccreds - Pam module to cache authentication credentials libpam-cgrou - control and monitor control groups (PAM) libpam-chroot - Chroot Pluggable Authentication Module for PAM libpam-ck-connector - ConsoleKit PAM module libpam-cracklib - PAM module to enable cracklib support libpam-dbus - A PAM module which asks the logged in user for confirmation libpam-duo - PAM module for Duo Security two-factor authentication libpam-dynalogin - two-factor HOTP/TOTP authentication - implementation libs libpam-encfs - PAM module to automatically mount encfs filesystems on login libpam-fprintd - PAM module for fingerprint authentication trough fprintd libpam-geo - PAM module checking access of source IPs with a GeoIP database libpam-gnome-keyring - PAM module to unlock the GNOME keyring upon login libpam-google-authenticator - Two-step verification libpam-heimdal - PAM module for Heimdal Kerberos libpam-krb5 - PAM module for MIT Kerberos libpam-krb5-migrate-heimdal - PAM module for migrating to Kerberos libpam-lda - Pluggable Authentication Module for LDA libpam-ldapd - PAM module for using LDAP as an authentication service libpam-mkhomedir - libpam-mklocaluser - Configure PAM to create a local user if it do not exist already libpam-modules - Pluggable Authentication Modules for PAM libpam-modules-bin - Pluggable Authentication Modules for PAM - helper binaries libpam-mount - PAM module that can mount volumes for a user session libpam-mysql - PAM module allowing authentication from a MySQL server libpam-nufw - The authenticating firewall [PAM module] libpam-oath - OATH Toolkit libpam_oath PAM module libpam-ocaml - OCaml bindings for the PAM library (runtime) libpam-openafs-kaserver - AFS distributed filesystem kaserver PAM module libpam-otpw - Use OTPW for PAM authentication libpam-p11 - PAM module for using PKCS#11 smart cards libpam-passwdqc - PAM module for password strength policy enforcement libpam-pgsql - PAM module to authenticate using a PostgreSQL database libpam-pkcs11 - Fully featured PAM module for using PKCS#11 smart cards libpam-pold - PAM module allowing authentication using a OpenPGP smartcard libpam-pwdfile - PAM module allowing authentication via an /etc/passwd-like file libpam-pwquality - PAM module to check password strength libpam-python - Enables PAM modules to be written in Python libpam-python-doc - Documentation for the bindings provided by libpam-python libpam-radius-auth - The PAM RADIUS authentication module libpam-runtime - Runtime support for the PAM library libpam-script - PAM module which allows executing a script libpam-shield - locks out remote attackers trying password guessing libpam-shish - PAM module for Shishi Kerberos v5 libpam-slurm - PAM module to authenticate using the SLURM resource manager libpam-smbpass - pluggable authentication module for Samba libpam-snapper - PAM module for Linux filesystem snapshot management tool libpam-ssh - Authenticate using SSH keys libpam-sshauth - authenticate using an SSH server libpam-sss - Pam module for the System Security Services Daemon libpam-systemd - system and service manager - PAM module libpam-tacplus - PAM module for using TACACS+ as an authentication service libpam-tmpdir - automatic per-user temporary directories libpam-usb - PAM module for authentication with removable USB block devices libpam-winbind - Windows domain authentication integration plugin libpam-yubico - two-factor password and YubiKey OTP PAM module libpam0g - Pluggable Authentication Modules library libpam0g-dev - Development files for PAM libpam4j-java - Java binding for libpam.so libpam4j-java-doc - Documentation for Java binding for libpam.so
Tegn dine egne konklusjoner.
CentOS
Hvis vi velger alternativet « Server med GUI » under installasjonsprosessen , får vi en god plattform for implementering av ulike tjenester for SMB-nettverket. I motsetning til Debian tilbyr CentOS/Red Hat® en rekke konsoll- og grafikkverktøy som gjør livet enklere for en system- eller nettverksadministrator.
dokumentasjon
Installert som standard finner vi det i katalogen:
[root @ linuxbox ~] # ls -l /usr/share/doc/pam-1.1.8/ totalt 256 -rw-r - r--. 1 rotrot 2045 18. juni 2013 Copyright drwxr-xr-x. 2 rotrot 4096 9. apr 06:28 html -rw-r - r--. 1 rotrot 175382 5. nov 19:13 Linux-PAM_SAG.txt -rw-r - r--. 1 rotrot 67948 18. juni 2013 rfc86.0.txt drwxr-xr-x. 2 rotrot 4096 9. apr 06:28 tekster
[root @ linuxbox ~] # ls /usr/share/doc/pam-1.1.8/txts/ README.pam_access README.pam_exec README.pam_lastlog README.pam_namespace README.pam_selinux README.pam_timestamp README.pam_console README.pam_faildelay README.pam_limits README.pam_nologin README.pam_sepermit README.pam_tty_audit README.pam_cracklib README.pam_faillock README.pam_listfile README.pam_permit README. pam_shells README.pam_umask README.pam_chroot README.pam_filter README.pam_localuser README.pam_postgresok README.pam_stress README.pam_unix README.pam_debug README.pam_ftp README.pam_loginuid README.pam_pwhistory README.pam_succeed_if README.pam_userdb README.pam_deny README.pam_group README.pam_mail LESMEG .pam_rhosts README.pam_tally README.pam_warn README.pam_echo README README.pam_issue README.pam_mkhomedir README.pam_rootok README.pam_tally2 README.pam_wam.
Ja, vi kaller også CentOS-teamet "linuxbox" som med Debian, som vil tjene oss for fremtidige artikler om SMB Networks.
CentOS med GNOME3 GUI
Når vi velger alternativet « Server med GUI » under installasjonen , installeres GNOME 3 Desktop og andre verktøy og basisprogrammer for å utvikle en server. På konsollnivå kjører vi følgende for å sjekke autentiseringsstatusen:
[root @ linuxbox ~] # authconfig-tui

Vi sjekker at bare PAM-modulene som er nødvendige for den nåværende serverkonfigurasjonen er aktivert, til og med en modul for å lese fingeravtrykk, et autentiseringssystem som vi finner i noen modeller av bærbare datamaskiner.
CentOS med GNOME3 GUI ble koblet til en Microsoft Active Directory

Som vi kan se, er de nødvendige modulene – winbind – for autentisering mot en Active Directory lagt til og aktivert , mens vi bevisst deaktiverte modulen for lesing av fingeravtrykk, fordi den ikke er nødvendig.
I en kommende artikkel vil vi dekke i detalj hvordan du kobler en CentOS 7-klient til en Microsoft Active Directory. Foreløpig vil vi bare nevne at verktøyet autoconfig-gtk i stor grad automatiserer installasjonen av nødvendige pakker, konfigurasjonen av automatisk oppretting av domenekataloger for lokalt autentiserte brukere og selve prosessen med å koble klienten til Active Directory-domenet. Etter at du har koblet deg til, trenger du kanskje bare å starte datamaskinen på nytt.
Hovedfiler
Filene relatert til autentisering i CentOS ligger i /etc/pam.d/-katalogen :
[root @ linuxbox ~] # ls /etc/pam.d/ atd liveinst smartcard-auth-ac authconfig login smtp authconfig-gtk annet smtp.postfix authconfig-tui passwd sshd config-util passord-auth su crond passord-auth-ac sudo kopper pluto sudo-i chfn polkit-1 su-l chsh postlogin system-auth fingeravtrykk-auth postlogin-ac system-auth-ac fingeravtrykk-auth-ac ppp system-config-autentisering gdm-autologin ekstern systemd-bruker gdm-fingeravtrykk runuser vlock gdm-lanseringsmiljø runuser-l vmtoolsd gdm-passord samba xserver gdm-pin setup gdm-smartcard smartcard-auth
PAM-moduler tilgjengelig
Vi har basisrepositoriene centosplus, epel og updates . I dem finner vi – blant annet – følgende moduler som bruker kommandoene `yum search pam-` , `yum search pam_` og `yum search libpam` :
nss-pam-ldapd.i686: En nsswitch-modul som bruker katalogservere nss-pam-ldapd.x86_64: En nsswitch-modul som bruker katalogservere ovirt-guest-agent-pam-module.x86_64: PAM-modul for oVirt Guest Agent-pam -kwallet.x86_64: PAM-modul for KWallet pam_afs_session.x86_64: AFS PAG- og AFS-tokens ved pålogging pam_krb5.i686: En pluggbar autentiseringsmodul for Kerberos 5 pam_krb5.x86_64: En pluggbar autentiseringsmodul for Kerberos 5 pam_api .x86_64: En PAM-modul for pluggbar påloggingsautentisering for OATH pam_pkcs86.i64: PKCS # 11 / NSS PAM-påloggingsmodul pam_pkcs686.x11_11: PKCS # 86 / NSS PAM-påloggingsmodul pam_radius.x64_11: PAM-modul for RADIUS Authentication pam_script.x: PAM_script. modul for å utføre skript pam_snapper.i86: PAM-modul for å ringe snapper pam_snapper.x64_86: PAM-modul for å ringe snapper pam_ssh.x64_686: PAM-modul for bruk med SSH-nøkler og ssh-agent pam_ssh_agent_86 64: PAM-modul for autentisering med ssh-agent pam_ssh_agent_auth.x86_64: PAM-modul for autentisering med ssh-agent pam_url.x686_86: PAM-modul for å autentisere med HTTP-servere pam_wrapper.x64_86: Et verktøy for å teste PAM-applikasjoner og PAM-moduler pam_yubico.x64_: En pluggbar autentiseringsmodul for yubikeys libpamtest-doc.x86_64: libpamtest API-dokumentasjonen python-libpamtest.x86_64: En python-omslag for libpamtest libpamtest.x86_64: Et verktøy for å teste PAM-applikasjoner og PAM-moduler libpamtest-devel.x86_64: Et verktøy for å teste PAM-applikasjoner og PAM-moduler
Oppsummering
Det er viktig å ha et minimum av kunnskap om PAM hvis vi på en generell måte vil forstå hvordan autentisering utføres hver gang vi logger på Linux / UNIX-datamaskinen vår. Det er også viktig å vite at bare med lokal autentisering kan vi tilby tjenester til andre datamaskiner i et lite SMB-nettverk som Proxy, Mail, FTP, etc., alt konsentrert på en enkelt server. Alle de tidligere tjenestene - og mange flere som vi så tidligere - har deres PAM-modul.
Kilder konsultert
- Kommandohåndbøker - mannssider.
- autentisering: Wikipedia-siden på spansk
- Pluggbare autentiseringsmoduler
- Red_Hat_Enterprise_Linux-6-Deployment_Guide-no-US
PDF-versjon
Last ned PDF-versjonen her.
Fram til neste artikkel!
Forfatter: Federico A. Valdes Toujague
[e-postbeskyttet]
https://blog.desdelinux.net/author/fico
