This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
использование_библиотеки_pam [2017/07/24 11:32] val [Использование pam_ssh для сервиса login] |
использование_библиотеки_pam [2025/09/15 09:38] (current) val |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| * [[http://www.freebsd.org/doc/ru/articles/pam/index.html|FreeBSD Handbook: Подключаемые Модули Аутентификации (PAM)]] | * [[http://www.freebsd.org/doc/ru/articles/pam/index.html|FreeBSD Handbook: Подключаемые Модули Аутентификации (PAM)]] | ||
| - | * [[http://www.ibm.com/developerworks/ru/library/l-pam/index.html|IBM: Основы и настройка PAM]] | + | * [[https://redos.red-soft.ru/base/redos-7_3/7_3-security/7_3-sys-auth/7_3-pam/|red-soft.ru Подключаемые модули аутентификации (PAM). Общие сведения]] |
| + | * [[https://losst.pro/nastrojka-pam-v-linux|Настройка PAM в Linux]] | ||
| ===== Терминология PAM ===== | ===== Терминология PAM ===== | ||
| Line 47: | Line 48: | ||
| ===== Примеры использования ===== | ===== Примеры использования ===== | ||
| + | |||
| + | ==== Использование pamtester ==== | ||
| + | |||
| + | * Пакет OpenVPN [[Пакет OpenVPN#Включение 2FA]] | ||
| + | |||
| + | <code> | ||
| + | # apt install pamtester | ||
| + | |||
| + | # pamtester openvpn student authenticate | ||
| + | pin | ||
| + | Password: | ||
| + | pamtester: successfully authenticated | ||
| + | </code> | ||
| ==== Права на команду su === | ==== Права на команду su === | ||
| Line 56: | Line 70: | ||
| ==== Приостановка регистрации пользователей ==== | ==== Приостановка регистрации пользователей ==== | ||
| - | === FreeBSD === | + | === Debian/Ubuntu === |
| <code> | <code> | ||
| - | [gate:~] # grep nologin /etc/pam.d/sshd | + | root@gate:~# grep nologin /etc/pam.d/sshd |
| </code><code> | </code><code> | ||
| - | account required pam_nologin.so | + | # Disallow non-root logins when /etc/nologin exists. |
| + | account required pam_nologin.so | ||
| </code><code> | </code><code> | ||
| - | [gate:~] # cat > /var/run/nologin | + | root@gate:~# cat > /etc/nologin |
| </code><code> | </code><code> | ||
| Please do not login now | Please do not login now | ||
| Line 69: | Line 83: | ||
| </code> | </code> | ||
| - | === Ubuntu === | + | === FreeBSD === |
| <code> | <code> | ||
| - | root@gate:~# grep nologin /etc/pam.d/sshd | + | [gate:~] # grep nologin /etc/pam.d/sshd |
| </code><code> | </code><code> | ||
| - | # Disallow non-root logins when /etc/nologin exists. | + | account required pam_nologin.so |
| - | account required pam_nologin.so | + | |
| </code><code> | </code><code> | ||
| - | root@gate:~# cat > /etc/nologin | + | [gate:~] # cat > /var/run/nologin |
| </code><code> | </code><code> | ||
| Please do not login now | Please do not login now | ||
| <Ctrl-D> | <Ctrl-D> | ||
| </code> | </code> | ||
| + | |||
| ==== Аутентификация сервиса login через pam radius ==== | ==== Аутентификация сервиса login через pam radius ==== | ||
| Line 99: | Line 114: | ||
| </code> | </code> | ||
| - | === Ubuntu === | + | === Debian/Ubuntu === |
| <code> | <code> | ||
| root@gate:~# apt install libpam-radius-auth freeradius-utils | root@gate:~# apt install libpam-radius-auth freeradius-utils | ||
| Line 118: | Line 133: | ||
| ==== Автоматическое создание домашних каталогов ==== | ==== Автоматическое создание домашних каталогов ==== | ||
| - | |||
| - | * Уже установлено | ||
| === Debian/Ubuntu === | === Debian/Ubuntu === | ||
| Line 125: | Line 138: | ||
| root@gate:~# apt install libpam-modules | root@gate:~# apt install libpam-modules | ||
| - | root@gate:~# cat /etc/pam.d/sshd | + | root@gate:~# pam-auth-update --enable mkhomedir |
| + | |||
| + | root@gate:~# less /etc/pam.d/common-session | ||
| </code><code> | </code><code> | ||
| ... | ... | ||
| Line 145: | Line 160: | ||
| </code> | </code> | ||
| ==== Использование pam_ssh для сервиса login ==== | ==== Использование pam_ssh для сервиса login ==== | ||
| + | |||
| + | === Debian/Ubuntu === | ||
| + | |||
| + | Все само пропишется, пароль ДОЛЖЕН совпадать с UNIX паролем | ||
| + | |||
| + | <code> | ||
| + | client1:~# apt install libpam-ssh | ||
| + | |||
| + | client1:~# grep -r ssh /etc/pam.* | ||
| + | |||
| + | client1:~# pam-auth-update | ||
| + | </code> | ||
| === FreeBSD === | === FreeBSD === | ||
| Line 162: | Line 189: | ||
| </code> | </code> | ||
| - | === Debian/Ubuntu === | ||
| - | Все само пропишется, пароль ДОЛЖЕН совпадать с UNIX паролем | ||
| - | |||
| - | <code> | ||
| - | root@client1:~# apt install libpam-ssh | ||
| - | </code> | ||
| ==== Использование pam_krb5 для сервиса login/xdm ==== | ==== Использование pam_krb5 для сервиса login/xdm ==== | ||
| - | === Ubuntu/Debian === | + | === Debian/Ubuntu === |
| <code> | <code> | ||
| root@client1:~# apt install libpam-krb5 | root@client1:~# apt install libpam-krb5 | ||
| Line 200: | Line 221: | ||
| ... | ... | ||
| </code> | </code> | ||
| + | |||
| + | ==== Использование pam_script ==== | ||
| + | |||
| + | * [[https://github.com/jeroennijhof/pam_script|jeroennijhof/pam_script]] | ||
| + | * См. рекламный вебинар: [[Зачем вводить системы Linux в домен Microsoft]] | ||
| + | * [[Зачем вводить системы Linux в домен Microsoft#Исправления и альтернативные варианты]] - Можно поручить монтирование домашних каталогов systemd | ||
| + | |||
| + | === Вариант использования для автоматического создания учетных записей после аутентификации через внешний сервис === | ||
| + | <code> | ||
| + | # less /etc/pam.d/common-auth | ||
| + | </code><code> | ||
| + | ... | ||
| + | auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000 | ||
| + | auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass | ||
| + | ... | ||
| + | </code><code> | ||
| + | # apt install libpam-script | ||
| + | |||
| + | # cat /etc/pam.d/common-auth | ||
| + | </code><code> | ||
| + | ... | ||
| + | # here are the per-package modules (the "Primary" block) | ||
| + | auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000 | ||
| + | auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass | ||
| + | auth requisite pam_deny.so | ||
| + | auth sufficient pam_script.so | ||
| + | auth required pam_permit.so | ||
| + | # and here are more per-package modules (the "Additional" block) | ||
| + | ... | ||
| + | </code><code> | ||
| + | # cat /usr/share/libpam-script/pam_script_auth | ||
| + | </code><code> | ||
| + | #!/bin/bash | ||
| + | |||
| + | id "$PAM_USER" &>/dev/null || useradd -m -s /bin/bash "$PAM_USER" | ||
| + | |||
| + | #echo "$PAM_USER:$PAM_AUTHTOK" | /usr/sbin/chpasswd | ||
| + | #useradd -m -p "$(/usr/bin/mkpasswd -m sha-512 $PAM_AUTHTOK)" -s /bin/bash "$PAM_USER" | ||
| + | </code> | ||
| + | |||
| + | === Вариант использования для автоматического монтирования домашнего каталога по протоколу CIFS с GSSAPI/Kerberos аутентификацией === | ||
| + | |||
| + | <code> | ||
| + | # cat /usr/share/libpam-script/pam_script_ses_open | ||
| + | </code><code> | ||
| + | #!/bin/sh | ||
| + | |||
| + | MYUID=`id -u $PAM_USER` | ||
| + | MYGID=`id -g $PAM_USER` | ||
| + | |||
| + | cp /tmp/krb5cc_${MYUID}* /tmp/krb5cc_0 | ||
| + | |||
| + | mount | grep -q /home/$PAM_USER || mount.cifs //gate.corpX.un/$PAM_USER -o rw,user,sec=krb5,vers=3.1.1,uid=$MYUID,gid=$MYGID /home/$PAM_USER/ | ||
| + | |||
| + | ###rm /tmp/krb5cc_0 | ||
| + | </code> | ||
| + | ==== Использование pam_exec для регистрации подключений ==== | ||
| + | <code> | ||
| + | # cat /etc/pam.d/sshd | ||
| + | </code><code> | ||
| + | ... | ||
| + | session optional pam_exec.so /bin/bash -c (echo${IFS}Subject:ssh-${PAM_USER}@$(hostname)-${PAM_RHOST};/usr/bin/env)|/usr/bin/curl${IFS}smtp://server.corpX.un${IFS}--mail-from${IFS}root@gate.corpX.un${IFS}--mail-rcpt${IFS}student@corpX.un${IFS}--upload-file${IFS}- | ||
| + | |||
| + | session optional pam_exec.so /bin/bash -c (/usr/bin/env|/usr/local/bin/send-to-telegram.sh) | ||
| + | </code> | ||
| + | |||