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/05/16 08:45] (current) val [Использование pam_exec для регистрации подключений по ssh] |
||
---|---|---|---|
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 56: | Line 57: | ||
==== Приостановка регистрации пользователей ==== | ==== Приостановка регистрации пользователей ==== | ||
- | === 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 70: | ||
</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 101: | ||
</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 120: | ||
==== Автоматическое создание домашних каталогов ==== | ==== Автоматическое создание домашних каталогов ==== | ||
- | |||
- | * Уже установлено | ||
=== Debian/Ubuntu === | === Debian/Ubuntu === | ||
Line 125: | Line 125: | ||
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 147: | ||
</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 176: | ||
</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 208: | ||
... | ... | ||
</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 для регистрации подключений по ssh ==== | ||
+ | <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}- | ||
+ | </code> | ||
+ |