Общ индекс на поредицата: Компютърни мрежи за МСП: Въведение
Здравейте приятели и приятели!
С тази статия възнамеряваме да предложим Общ преглед на темата за удостоверяване чрез PAM. Свикнали сме да използваме нашата работна станция ежедневно с операционна система Linux / UNIX и рядко спираме, за да проучим как възниква механизмът за удостоверяване всеки път, когато стартираме сесия. Знаем ли за съществуването на архивите / И т.н. / ако съществуваИ / и т.н. / сянка които представляват основната база данни на удостоверителните удостоверения на местните потребители. Надяваме се, че след като прочетете тази публикация, ще имате най-малкото ясна представа за това как работи PAM.
заверка
Удостоверяването - за практически цели - е начинът, по който потребителят е проверен спрямо система. Процесът на удостоверяване изисква наличието на набор от самоличност и идентификационни данни - потребителско име и парола - които се сравняват с информацията, съхранявана в база данни. Ако представените идентификационни данни са същите като съхраняваните и акаунтът на потребителя е активен, се казва, че потребителят е такъв автентичен успешно или успешно премина заверка.
След като потребителят бъде удостоверен, тази информация се предава на услуга за контрол на достъпа за да се определи какво този потребител може да направи в системата и какви ресурси им се дължат упълномощаване за достъп до тях.
Информацията за проверка на потребителя може да се съхранява в локални бази данни в системата или локалната система може да се позовава на съществуваща база данни на отдалечена система, като LDAP, Kerberos, NIS бази данни и т.н.
Повечето операционни системи UNIX® / Linux разполагат с необходимите инструменти за конфигуриране на услугата за удостоверяване на клиент / сървър за най-често срещаните типове потребителски бази данни. Някои от тези системи имат много пълни графични инструменти като Red Hat / CentOS, SUSE / openSUSE и други дистрибуции.
PAM: Сменяем модул за удостоверяване
Лос Модули, които са вмъкнати за удостоверяване Използваме ги ежедневно, когато влезем в нашия работен плот с операционна система, базирана на Linux / UNIX, и в много други случаи, когато имаме достъп до локални или отдалечени услуги, които имат специфичен локален PAM модул добавя за удостоверяване срещу тази услуга.
Практическа идея за това как се вмъкват модулите PAM може да бъде получена чрез последователността на състоянията на удостоверяване en екип с Debian и en друг с CentOS че ние се развиваме по-нататък.
Debian
документация
Ако инсталираме пакета libpam-doc ще имаме много добра документация, намираща се в директорията / usr / share / doc / libpam-doc / html.
root @ linuxbox: ~ # aptitude инсталирайте libpam-doc root @ linuxbox: ~ # ls -l / usr / share / doc / libpam-doc /
В директориите има и още документация за PAM:
root @ linuxbox: ~ # ls -l / usr / share / doc / | grep pam drwxr-xr-x 2 root root 4096 5 април 21:11 libpam0g drwxr-xr-x 4 root root 4096 7 април 16:31 libpam-doc drwxr-xr-x 2 root root 4096 5 април 21:30 libpam-gnome- ключодържател drwxr-xr-x 3 root root 4096 5 април 21:11 libpam-модули drwxr-xr-x 2 root root 4096 5 април 21:11 libpam-modules-bin drwxr-xr-x 2 root root 4096 5 април 21: 11 libpam-runtime drwxr-xr-x 2 root root 4096 5 април 21:26 libpam-systemd drwxr-xr-x 3 root root 4096 5 април 21:31 python-pam
Вярваме, че преди да излезем за търсене на документация в Интернет, трябва да прегледаме вече инсталираната или тази, която можем да инсталираме директно от програмните хранилища, които съществуват за нещо, и в много случаи ги копираме на твърдия си диск . Пример за това е следното:
root @ linuxbox: ~ # по-малко / usr / share / doc / libpam-gnome-keyring / README gnome-keyring е програма, която пази парола и други тайни за потребителите. Той се изпълнява като демон в сесията, подобно на ssh-agent, а други приложения го намират чрез променлива на околната среда или D-Bus. Програмата може да управлява няколко ключодържателя, всеки със собствена главна парола, а има и ключодържател на сесия, който никога не се съхранява на диск, но се забравя, когато сесията приключи. Библиотеката libgnome-keyring се използва от приложенията за интегриране със системата за ключове GNOME.
Това преведено много свободно иска да изрази:
- gnome-keyring е програмата, която отговаря за запазването на пароли и други тайни за потребителите. Във всяка сесия той се изпълнява като демон, подобно на ssh-agent, и на други приложения, които се намират чрез променлива на околната среда - среда или чрез D-Bus. Програмата може да обработва няколко ключодържателя, всеки със собствена главна парола. Има и сесия за ключове, която никога не се съхранява на твърдия диск и се забравя, когато сесията приключи. Приложенията използват библиотеката libgnome-keyring, за да се интегрират със системата за ключове GNOME..
Debian с основната операционна система
Започваме от компютър, на който току-що сме инсталирали Debian 8 „Jessie“ като операционна система и по време на инсталационния процес избираме само „Основни системни помощни програми“, без да маркираме друга опция за инсталиране на задачи - задачи или предварително дефинирани пакети като сървъра на OpenSSH. Ако след стартиране на първата сесия изпълним:
root @ master: ~ # pam-auth-update
ще получим следните изходи:
Което ни показва, че единственият PAM модул, използван до този момент, е UNIX удостоверяване. Полезност pam-auth-актуализация ни позволява да конфигурираме централната политика за удостоверяване на системата при използване на предварително дефинирани профили, предоставени от модулите PAM. За повече информация вижте човек pam-auth-update.
Тъй като все още не сме инсталирали сървъра OpenSSH, няма да намерим неговия PAM модул в директорията /etc/pam.d/, който ще съдържа PAM модулите и профилите, заредени до тези моменти:
root @ master: ~ # ls -l /etc/pam.d/ общо 76 -rw-r - r-- 1 корен корен 235 септември 30 2014 atd -rw-r - r-- 1 корен корен 1208 6 април 22:06 обща сметка -rw-r - r-- 1 корен корен 1221 6 април 22:06 common-auth -rw-r - r-- 1 корен корен 1440 6 април 22:06 common-password -rw-r - r-- 1 корен root 1156 6 април 22:06 common-session -rw -r - r-- 1 корен на корен 1154 6 април 22:06 common-session-noninteractive -rw-r - r-- 1 корен на корен 606 11 юни 2015 г. cron -rw-r - r - 1 корен на корен 384 19 ноември 2014 г. chfn -rw-r - r-- 1 корен корен 92 ноември 19 2014 chpasswd -rw-r - r-- 1 корен корен 581 ноември 19 2014 chsh -rw-r-- r-- 1 корен корен 4756 ноември 19 2014 вход -rw-r - r - 1 корен корен 92 ноември 19 2014 newusers -rw-r - r - 1 корен корен 520 6 януари 2016 други -rw-r- -r - 1 корен корен 92 ноември 19 2014 passwd - rw-r - r - 1 корен корен 143 март 29 2015 runuser -rw-r - r - 1 корен корен 138 март 29 2015 runuser-l -rw -r - r - 1 корен корен 2257 19 ноември 2014 г. su - rw-r - r-- 1 корен корен 220 септември 2 2016 systemd-потребител
Например с помощта на модула PAM /etc/pam.d/chfn системата конфигурира услугата Сянка, докато през /etc/pam.d/cron демонът е конфигуриран Cron. За да знаем малко повече, можем да прочетем съдържанието на всеки от тези файлове, което е много поучително. Като пример даваме по-долу съдържанието на модула /etc/pam.d/cron:
root @ master: ~ # по-малко /etc/pam.d/cron # Конфигурационният файл на PAM за демона cron @include common-auth # Задава сесията на атрибута на процеса loginuid, необходима pam_loginuid.so # Прочетете променливите на средата от файловете по подразбиране на pam_env, / etc / environment # и /etc/security/pam_env.conf. изисква се сесия pam_env.so # Освен това прочетете информацията за системния локал изисква се сесия pam_env.so envfile = / etc / default / locale @включва общ акаунт @include обща-сесия-неинтерактивна # Настройва потребителски ограничения, моля, дефинирайте ограничения за cron задачи # чрез /etc/security/limits.conf сесия изисква pam_limits.so
Редът на изявленията във всеки от файловете е важен. Като цяло не препоръчваме да модифицираме някой от тях, освен ако не знаем много добре какво правим.
Debian с основна OS + OpenSSH
root @ master: ~ # aptitude инсталирайте task-ssh-server Ще бъдат инсталирани следните НОВИ пакети: openssh-server {a} openssh-sftp-server {a} task-ssh-server
Ще проверим дали PAM модулът е добавен и конфигуриран правилно SSHD:
root @ master: ~ # ls -l /etc/pam.d/sshd -rw-r - r - 1 корен на корен 2133 22 юли 2016 г. /etc/pam.d/sshd
Ако искаме да знаем съдържанието на този профил:
root @ master: ~ # по-малко /etc/pam.d/sshd
С други думи, когато се опитваме да стартираме отдалечена сесия от друг компютър, използващ SSH, удостоверяването на локалния компютър се извършва чрез PAM модула SSHD главно, без да се забравят другите аспекти на оторизацията и сигурността, включени в услугата ssh като такива.
Между другото добавяме, че основният конфигурационен файл на тази услуга е / И т.н. / SSH / sshd_configи че поне в Debian той е инсталиран по подразбиране, без да позволява интерактивно потребителско влизане корен. За да го разрешим, трябва да модифицираме файла / И т.н. / SSH / sshd_config и променете реда:
PermitRootLogin без парола
от
PermitRootLogin да
и след това рестартирайте и проверете състоянието на услугата, като:
root @ master: ~ # systemctl рестартирайте ssh root @ master: ~ # systemctl статус ssh
Debian с десктопа LXDE
Продължаваме със същия екип - сменяме им името или име на хост от "линукс кутия»За бъдеща употреба - към която приключихме с инсталирането на LXDE Desktop. Хайде да бягаме pam-auth-актуализация и ще получим следните изходи:
Системата вече е активирала всички профили -модули- необходими за правилно удостоверяване по време на инсталирането на работния плот на LXDE, които са следните:
- UNIX удостоверителен модул.
- Модул, който записва потребителски сесии в йерархичната контролна група на systemd.
- Модул за демон на GNOME за ключове
- Използваме тази възможност, за да препоръчаме, че във всички случаи, когато ни бъде поискано „PAM профилите да се активират“, ние избираме опцията Освен ако не знаем много добре какво правим. Ако променим конфигурацията на PAM, която автоматично се прави от самата операционна система, можем лесно да деактивираме влизането в компютъра.
В горните случаи говорим Локално удостоверяване или удостоверяване срещу локалния компютър, както се случва, когато инициираме отдалечена сесия чрез SSH.
Ако внедрим метод на Отдалечено удостоверяване в местния екип За потребители с техните идентификационни данни, съхранени в отдалечен сървър на OpenLDAP или в Active Directory, системата ще вземе под внимание новата форма за удостоверяване и ще добави необходимите модули PAM.
Основни файлове
- / И т.н. / ако съществува: Информация за потребителския акаунт
- / и т.н. / сянка: Защитена информация за потребителските акаунти
- /etc/pam.conf: Файл, който трябва да се използва само ако директорията не съществува /etc/pam.d/
- /etc/pam.d/: Директория, където програми и услуги инсталират своите PAM модули
- /etc/pam.d/passwd: PAM конфигурация за ако съществува.
- /etc/pam.d/common-account: Разрешителни параметри, общи за всички услуги
- /etc/pam.d/common-auth: Параметри за удостоверяване, общи за всички услуги
- /etc/pam.d/обща парола: PAM модули, общи за всички услуги, свързани с пароли - пароли
- /etc/pam.d/common-session: PAM модули, общи за всички услуги, свързани с потребителски сесии
- /etc/pam.d/common-session-noninteractive: PAM модули, общи за всички услуги, свързани с неинтерактивни сесии или които не изискват намеса на потребителя, като задачи, които се изпълняват в началото и в края на неинтерактивните сесии.
- / usr / share / doc / passwd /: Директория с документация.
Препоръчваме ви да прочетете страниците с ръководството на ако съществува y сянка чрез човек passwd y мъжка сянка. Също така е здравословно да четете съдържанието на файловете общ-акаунт, общ-авторизация, общ-парола, обща-сесия y обща сесия-неинтерактивна.
Налични PAM модули
За да получите представа за наличните модули PAM априори В стандартното хранилище на Debian изпълняваме:
buzz @ linuxbox: ~ $ aptitude търсене libpam
Списъкът е дълъг и ние ще отразяваме само модулите, които показват колко обширен е:
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
Направете свои изводи.
CentOS
Ако по време на инсталационния процес изберете опцията «Сървър с GUI«, Ще получим добра платформа за внедряване на различни услуги за МСП мрежата. За разлика от Debian, CentOS / Red Hat® предлага серия от конзолни и графични инструменти, които улесняват живота на системния или мрежовия администратор.
документация
Инсталиран по подразбиране, ние го намираме в директорията:
[root @ linuxbox ~] # ls -l /usr/share/doc/pam-1.1.8/ общо 256 -rw-r - r--. 1 корен корен 2045 юни 18 2013 Copyright drwxr-xr-x. 2 корен корен 4096 9 април 06:28 HTML -rw-r - r--. 1 корен корен 175382 5 ноември 19:13 Linux-PAM_SAG.txt -rw-r - r--. 1 корен корен 67948 18 юни 2013 rfc86.0.txt drwxr-xr-x. 2 корен корен 4096 9 април 06:28 txts
[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 README .pam_rhosts README.pam_tally README.pam_warn README.pam_echo README.pam_issue README.pam_mkhomedir README.pam_rootok README.pam_tally2 README.pam_wheel README.pam_ADMEADMADMADMADMADMADMADMADMADAMADAMADAMADAMADAMADAMADAM
Да, ние също наричаме екипа на CentOS "linuxbox" както при Debian, който ще ни служи за бъдещи статии за SMB мрежи.
CentOS с GNOME3 GUI
Когато изберем опцията «Сървър с GUI«, GNOME3 Desktop и други помощни програми и базови програми са инсталирани за разработване на сървър. На ниво конзола, за да знаем състоянието на удостоверяването, което изпълняваме:
[root @ linuxbox ~] # authconfig-tui
Проверяваме дали са активирани само модулите PAM, необходими за текущата конфигурация на сървъра, дори модул за четене на пръстови отпечатъци, система за удостоверяване, която откриваме в някои модели лаптопи.
CentOS с GNOME3 GUI, присъединен към Microsoft Active Directory
Както виждаме, необходимите модули са добавени и активирани -winbind- за удостоверяване срещу Active Directory, докато умишлено деактивираме модула за четене на пръстови отпечатъци, защото това не е необходимо.
В следваща статия ще разгледаме подробно как да се присъедините към клиент на CentOS 7 към Microsoft Active Directory. Очакваме това само чрез инструмента authoconfig-gtk Инсталирането на необходимите пакети, конфигурацията на автоматичното създаване на директории на потребители на домейна, които се удостоверяват локално, и самият процес на присъединяване на клиента към домейна на Active Directory е изключително автоматизиран. Може би след обединението ще е необходимо само да рестартирате компютъра.
Основни файлове
Файловете, свързани с удостоверяване CentOS, се намират в директорията /etc/pam.d/:
[root @ linuxbox ~] # ls /etc/pam.d/ atd liveinst smartcard-auth-ac authconfig login smtp authconfig-gtk other smtp.postfix authconfig-tui passwd sshd config-util password-auth su crond password-auth-ac sudo cups pluto sudo-i chfn polkit-1 su-l chsh postlogin system-auth fingerprint-auth postlogin-ac system-auth-ac fingerprint-auth-ac ppp system-config-authentication gdm-autologin remote systemd-user gdm-fingerprint runuser vlock gdm-launch-environment runuser-l vmtoolsd gdm-password samba xserver gdm-pin setup gdm-smartcard smartcard-auth
Налични PAM модули
Разполагаме с хранилищата основа, centosplus, epel, y актуализации. В тях намираме - сред другите - следните модули, използващи командите yum търсене pam-, yum търсене pam_И yum търсене libpam:
nss-pam-ldapd.i686: Модул nsswitch, който използва сървъри на директории nss-pam-ldapd.x86_64: Модул nsswitch, който използва сървъри директории ovirt-guest-agent-pam-module.x86_64: PAM модул за oVirt Guest Agent pam -kwallet.x86_64: PAM модул за KWallet pam_afs_session.x86_64: AFS PAG и AFS маркери за вход pam_krb5.i686: Сменяем модул за удостоверяване за Kerberos 5 pam_krb5.x86_64: Сменяем модул за удостоверяване за Kerberos 5 pam_mapi чрез MAPI срещу сървър Zarafa pam_oath.x86_64: PAM модул за включване на удостоверяване за вход за OATH pam_pkcs86.i64: PKCS # 11 / NSS PAM модул за вход pam_pkcs686.x11_11: PKCS # 86 / NSS PAM модул за вход pam_radius.x64_11: PAM модул RADIUS удостоверяване pam_script.x86_64: PAM модул за изпълнение на скриптове pam_snapper.i86: PAM модул за извикване на snapper pam_snapper.x64_686: PAM модул за извикване на snapper pam_ssh.x86_64: PAM модул за използване с SSH ключове и ssh-agent pam_ssh_86 64: PAM модул за удостоверяване с ssh-agent pam_ssh_agent_auth.x686_86: PAM модул за удостоверяване с ssh-agent pam_url.x64_86: PAM модул за удостоверяване с HTTP сървъри pam_wrapper.x64_86: Инструмент за тестване на PAM приложения и PAM модули pam_yubico.x64_86: Сменяем модул за удостоверяване за yubikeys libpamtest-doc.x64_86: Документацията за API на libpamtest python-libpamtest.x64_86: Обвивка на python за libpamtest libpamtest.x64_86: Инструмент за тестване на PAM приложения и PAM модули libpamtest-devel.x64_86: A инструмент to libpamtest-devel.x64_XNUMX PAM приложения и PAM модули
Обобщение
Важно е да имаме минимум познания за PAM, ако искаме да разберем по общ начин как се извършва удостоверяването всеки път, когато влезем в нашия Linux / UNIX компютър. Също така е важно да се знае, че само с Локално удостоверяване можем да предоставяме услуги на други компютри в малка МСП мрежа като прокси, поща, FTP и др., Всички концентрирани на един сървър. Всички предишни услуги - и много повече, както видяхме по-рано - имат своя PAM модул.
Консултирани източници
- Ръководства за команди - man pages.
- заверка: Страница на Уикипедия на испански
- Сменяеми модули за удостоверяване
- Red_Hat_Enterprise_Linux-6-Deployment_Guide-bg-САЩ
PDF версия
Изтеглете PDF версията тук.
До следващата статия!
Автор: Federico A. Valdes Toujague
federicotoujague@gmail.com
https://blog.desdelinux.net/author/fico
Много подробна статия за удостоверяване с помощта на PAM, признавам, че не познавах в детайли операцията по удостоверяване и безкрайния брой по-подробни и сигурни приложения, които бихме могли да ви предоставим. Това е страхотна статия, която ви позволява да визуализирате обхвата на PAM удостоверяването, което също може да има множество цели в МСП.
Още един от вашите страхотни приноси, благодаря ви много за толкова добър материал на Fico
Благодаря ви за коментара, скъпа Луиджис. Целта на статията е да отвори умовете на читателите по отношение на PAM и неговите модули. Мисля, че публикацията е успешна.
Между другото ви информирам, че коментарите не стигат до мен по пощата.
хаха, забравих да напиша имейл адреса си в предишния коментар. Ето защо Anonymous излиза. 😉
Страхотна статия, както винаги.
Много поучителен Federico, трябваше да се справя с PAM повече от веднъж и се възхищавам на дизайна, много е полезно да мога да вмъкна функционалност в куките, които той позволява, например последното нещо, което направих, беше REST API в Python / Flask, който събира влизанията и излизането на потребителите на моя домейн (стил на големия брат, за да знам всичко), тъй като те не познават къде поставям повикванията, за да информирам api? Ами да, с PAM.
Благодаря HO2GI за оценката на публикацията.
Dhunter: Отново поздрави. Както винаги правите много интересни неща. Нищо, тази публикация е една от тези, които каталогизирам „за отворени умове“.