Найти в Дзене

Вход в систему Linux.

(перевод части документации статьи google.translate ссылка) Если вкратце. В linux есть PAM это подключаемые модули аутентификации. В папке /etc/pam.d/ есть такие файлы, кроме прочих: commom-auth, commom-account, common-password, common-session Через эти файлы текстовые проходит настройка входа для пользователей и программ. (2.) Аутентификация с помощью PAM Linux использует PAM (подключаемые модули аутентификации) в процессе аутентификации в качестве промежуточного уровня между пользователем и приложением. Модули PAM доступны для всей системы, поэтому их может запросить любое приложение. В этой главе описывается, как работает модульный механизм аутентификации и как он настраивается. 2.1 Что такое ПАМ?
Системные администраторы и программисты часто хотят ограничить доступ к определенным частям системы или ограничить использование определенных функций приложения. Без PAM приложения необходимо адаптировать каждый раз, когда вводится новый механизм аутентификации, такой как LDAP, Samba ил
Оглавление

(перевод части документации статьи google.translate ссылка)

Если вкратце. В linux есть PAM это подключаемые модули аутентификации. В папке /etc/pam.d/ есть такие файлы, кроме прочих:

commom-auth, commom-account, common-password, common-session

Через эти файлы текстовые проходит настройка входа для пользователей и программ.

(2.) Аутентификация с помощью PAM

Linux использует PAM (подключаемые модули аутентификации) в процессе аутентификации в качестве промежуточного уровня между пользователем и приложением. Модули PAM доступны для всей системы, поэтому их может запросить любое приложение. В этой главе описывается, как работает модульный механизм аутентификации и как он настраивается.

2.1 Что такое ПАМ?


Системные администраторы и программисты часто хотят ограничить доступ к определенным частям системы или ограничить использование определенных функций приложения. Без PAM приложения необходимо адаптировать каждый раз, когда вводится новый механизм аутентификации, такой как LDAP, Samba или Kerberos. Однако этот процесс занимает много времени и подвержен ошибкам. Один из способов избежать этих недостатков — отделить приложения от механизма аутентификации и делегировать аутентификацию централизованно управляемым модулям. Всякий раз, когда требуется новая схема аутентификации, достаточно адаптировать или написать подходящий модуль PAM для использования рассматриваемой программой.

Концепция PAM состоит из:

  • Модули PAM -
    представляющие собой набор общих библиотек для определенного механизма аутентификации.
  • Стек модулей -
    состоящий из одного или нескольких модулей PAM.
  • Служба (service) с поддержкой PAM
    требующая аутентификации с использованием стека модулей или модулей PAM. Обычно служба — это знакомое имя соответствующего приложения, например login или su. Имя службы «other» — зарезервированное слово для правил по умолчанию.
  • Аргументы модуля-
    с помощью которых можно влиять на выполнение одного модуля PAM.
  • Механизм оценки каждого результата
    выполнения одного модуля PAM. Положительное значение запускает следующий модуль PAM. Способ обработки отрицательного значения зависит от конфигурации: допустимыми вариантами являются: «no influence, proceed» до «terminate immediately» и все, что находится между ними.

2.2 Структура файла конфигурации PAM

PAM можно настроить двумя способами:

  1. Конфигурация на основе файла (/etc/pam.conf)
    Конфигурация каждой службы хранится в /etc/pam.conf. Однако из соображений обслуживания и удобства использования эта схема конфигурации не используется в SUSE Linux Enterprise Server.
  2. Конфигурация на основе каталога (/etc/pam.d/)

    Каждая служба (или программа), использующая механизм PAM, имеет собственный файл конфигурации в каталоге /etc/pam.d/. Например, сервис для sshd можно найти в файле /etc/pam.d/sshd.

    Файлы в каталоге /etc/pam.d/ определяют модули PAM, используемые для аутентификации. Каждый файл состоит из строк, определяющих службу, и каждая строка состоит максимум из четырех компонентов:
Четыре компонента
Четыре компонента
TYPE CONTROL
MODULE_PATH MODULE_ARGS

Компоненты имеют следующее значение:

TYPE (ТИП) Объявляет тип службы. Модули PAM обрабатываются как стеки. Разные типы модулей имеют разное назначение. Например, один модуль проверяет пароль, другой проверяет местоположение, из которого осуществляется доступ к системе, а третий считывает пользовательские настройки. PAM знает о четырех различных типах модулей:

auth(авторизация) Проверьте подлинность пользователя, традиционно запросив пароль. Однако этого также можно добиться с помощью чип-карты или биометрии (например, отпечатков пальцев или сканирования радужной оболочки глаза).

account(аккаунт) Модули этого типа проверяют, есть ли у пользователя общее разрешение на использование запрашиваемой услуги. Например, такую проверку следует выполнить, чтобы убедиться, что никто не сможет войти в систему под именем пользователя учетной записи с истекшим сроком действия.

password(пароль) Целью этого типа модуля является обеспечение возможности изменения токена аутентификации. Обычно это пароль.

session(сессия) Модули этого типа отвечают за управление и настройку пользовательских сессий. Они запускаются до и после аутентификации для регистрации попыток входа в систему и настройки конкретной среды пользователя (учетные записи почты, домашний каталог, системные ограничения и т. д.).

CONTROL
Указывает поведение модуля PAM. Каждый модуль может иметь следующие флаги управления:

required(затребуемый) Модуль с этим флагом должен быть успешно обработан, прежде чем можно будет продолжить аутентификацию. После сбоя модуля с обязательным флагом все остальные модули с таким же флагом обрабатываются до того, как пользователь получит сообщение о неудачной попытке аутентификации.

requisite(реквизит) Модули, имеющие этот флаг, также должны быть успешно обработаны, почти так же, как и модуль с обязательным флагом. Однако в случае сбоя модуль с этим флагом немедленно отправляет пользователю обратную связь, и дальнейшие модули не обрабатываются. В случае успеха впоследствии обрабатываются другие модули, как и любые модули с обязательным флагом. Флаг необходимости можно использовать в качестве базового фильтра, проверяющего наличие определенных условий, необходимых для правильной аутентификации.

sufficient(удовлетворяющий) После успешной обработки модуля с этим флагом запрашивающее приложение получает немедленное сообщение об успехе, и дальнейшие модули не обрабатываются, при условии, что ранее не было сбоя модуля с требуемым флагом. Сбой модуля с флагом достаточности не имеет прямых последствий в том смысле, что любые последующие модули обрабатываются в соответствующем порядке.

optional(опциональный)

Сбой или успех модуля с этим флагом не имеет прямых последствий. Это может быть полезно для модулей, которые предназначены только для отображения сообщения (например, для сообщения пользователю о прибытии почты) без каких-либо дальнейших действий.
включать

include(включает)
Если указан этот флаг, в это место вставляется файл, указанный в качестве аргумента.


MODULE_PATH (МОДУЛЬ_ПУТЬ)

Содержит полное имя файла модуля PAM. Его не нужно указывать явно, если модуль расположен в каталоге по умолчанию /lib/security (для всех 64-разрядных платформ, поддерживаемых SUSE® Linux Enterprise Server, это каталог /lib64/security).

МОДУЛЬ_ARGS (аргументы модуля)

Содержит разделенный пробелами список параметров, влияющих на поведение модуля PAM, например debug (включает отладку) или nullok (разрешает использование пустых паролей).


Кроме того, в каталоге /etc/security имеются глобальные файлы конфигурации для модулей PAM, которые определяют точное поведение этих модулей (примеры включают pam_env.conf и time.conf). Каждое приложение, использующее модуль PAM, фактически вызывает набор функций PAM, которые затем обрабатывают информацию в различных файлах конфигурации и возвращают результат запрашивающему приложению.

Чтобы упростить создание и обслуживание модулей PAM, были введены общие файлы конфигурации по умолчанию для типов модулей аутентификации, учетной записи, пароля и сеанса. Они извлекаются из конфигурации PAM каждого приложения. Таким образом, обновления глобальных модулей конфигурации PAM в common-* распространяются на все файлы конфигурации PAM, не требуя от администратора обновления каждого отдельного файла конфигурации PAM.

Глобальные файлы конфигурации PAM поддерживаются с помощью инструмента pam-config. Этот инструмент автоматически добавляет в конфигурацию новые модули, изменяет конфигурацию существующих или удаляет модули (или опции) из конфигураций. Ручное вмешательство в поддержание конфигураций PAM сведено к минимуму или больше не требуется.

Примечание. Смешанные 64- и 32-битные установки.

При использовании 64-битной операционной системы можно также включить среду выполнения для 32-битных приложений. В этом случае убедитесь, что вы также установили 32-битную версию модулей PAM.


2.3 Конфигурация PAM sshd

В качестве примера рассмотрим конфигурацию PAM sshd:

Конфигурация sshd (/etc/pam.d/sshd)
Конфигурация sshd (/etc/pam.d/sshd)
  1. Объявляет версию этого файла конфигурации для PAM 1.0. Это всего лишь соглашение, но его можно использовать в будущем для проверки версии.
  2. Проверяет, существует ли /etc/nologin. Если это так, ни один пользователь, кроме root, не сможет войти в систему.
  3. Относится к файлам конфигурации четырех типов модулей: общая аутентификация, общая учетная запись, общий пароль и общий сеанс. Эти четыре файла содержат конфигурацию по умолчанию для каждого типа модуля.
  4. Устанавливает атрибут процесса входа в систему UID для процесса, который прошел проверку подлинности.
  5. Отображает информацию о последнем входе пользователя.

    Включая файлы конфигурации вместо добавления каждого модуля отдельно в соответствующую конфигурацию PAM, вы автоматически получаете обновленную конфигурацию PAM, когда администратор меняет настройки по умолчанию. Раньше вам нужно было вручную настраивать все файлы конфигурации для всех приложений, когда происходили изменения в PAM или устанавливалось новое приложение. Теперь конфигурация PAM выполняется с помощью центральных файлов конфигурации, и все изменения автоматически наследуются конфигурацией PAM каждой службы.

Первый включаемый файл (common-auth) вызывает три модуля типа аутентификации: pam_env.so, pam_gnome_keyring.so и pam_unix.so. См. пример 2.2, «Конфигурация по умолчанию для раздела аутентификации (common-auth)».

Пример 2.2: Конфигурация по умолчанию для раздела аутентификации (common-auth)

Конфигурация раздела по умолчанию (common-auth)
Конфигурация раздела по умолчанию (common-auth)

auth required pam_env.so 1
auth optional pam_gnome_keyring.so 2
auth required pam_unix.so try_first_pass 3

  1. pam_env.so загружает /etc/security/pam_env.conf, чтобы установить переменные среды, указанные в этом файле. Его можно использовать для установки правильного значения переменной DISPLAY, поскольку модуль pam_env знает о месте, из которого происходит вход в систему.
  2. pam_gnome_keyring.so проверяет логин и пароль пользователя по связке ключей GNOME.
  3. pam_unix проверяет логин и пароль пользователя по /etc/passwd и /etc/shadow.

Весь стек модулей аутентификации обрабатывается до того, как sshd получит информацию об успешном входе в систему. Все модули стека, имеющие необходимый флаг управления, должны быть успешно обработаны, прежде чем sshd получит сообщение о положительном результате. Если один из модулей не удался, весь стек модулей все равно обрабатывается и только тогда sshd уведомляется об отрицательном результате.

Когда все модули типа auth успешно обработаны, обрабатывается еще один оператор включения, в данном случае, как в примере 2.3, «Конфигурация по умолчанию для раздела учетной записи (common-account)». common-account содержит только один модуль — pam_unix. Если pam_unix возвращает результат, что пользователь существует, sshd получает сообщение, объявляющее об этом успехе, и обрабатывается следующий стек модулей (пароль), как показано в примере 2.4, «Конфигурация по умолчанию для раздела паролей (общий пароль)».

Пример 2.3: Конфигурация по умолчанию для раздела учетной записи (общая учетная запись)
Пример 2.4: Конфигурация по умолчанию для раздела пароля (общий пароль)

Конфигурация common-account и common-password
Конфигурация common-account и common-password

account required pam_unix.so try_first_pass

password requisite pam_cracklib.so
password optional pam_gnome_keyring.so use_authtok
password required pam_unix.so use_authtok nullok shadow try_first_pass

Опять же, конфигурация PAM sshd включает только оператор включения, ссылающийся на конфигурацию по умолчанию для модулей паролей, расположенных в common-password. Эти модули должны быть успешно завершены (обязательные и обязательные флаги управления) каждый раз, когда приложение запрашивает изменение токена аутентификации.

Изменение пароля или другого токена аутентификации требует проверки безопасности. Это достигается с помощью модуля pam_cracklib. Используемый впоследствии модуль pam_unix переносит все старые и новые пароли из pam_cracklib, поэтому пользователю не нужно повторно проходить аутентификацию после смены пароля. Эта процедура делает невозможным обход проверок, выполняемых pam_cracklib. Всякий раз, когда учетная запись или тип аутентификации настроены на жалобу на просроченные пароли, также следует использовать модули паролей.

Example 2.5: Default Configuration for the session Section (common-session)

Пример 2.5: Конфигурация по умолчанию для раздела сеанса (общий сеанс)

session required pam_limits.so
session required pam_unix.so try_first_pass
session optional pam_umask.so
session optional pam_systemd.so
session optional pam_gnome_keyring.so auto_start only_if=gdm,gdm-password,lxdm,lightdm
session optional pam_env.so

На заключительном этапе вызываются модули типа сеанса (входящие в состав файла common-session) для настройки сеанса в соответствии с настройками для рассматриваемого пользователя. Модуль pam_limits загружает файл /etc/security/limits.conf, который может определять ограничения на использование определенных системных ресурсов. Модуль pam_unix обрабатывается снова. Модуль pam_umask можно использовать для установки маски создания файлового режима. Поскольку этот модуль несет необязательный флаг, сбой этого модуля не повлияет на успешное завершение всего стека модулей сеанса. Модули сеанса вызываются второй раз, когда пользователь выходит из системы.

2.4 Конфигурация модулей PAM

Некоторые модули PAM настраиваются. Файлы конфигурации находятся в /etc/security. В этом разделе кратко описаны файлы конфигурации, относящиеся к примеру sshd — pam_env.conf и limits.conf

Конфигурация файла pam_env.conf
Конфигурация файла pam_env.conf

pam_env.conf можно использовать для определения стандартизированной среды для пользователей, которая устанавливается при каждом вызове модуля pam_env. С его помощью задайте переменные среды, используя следующий синтаксис:

VARIABLE (ПЕРЕМЕННАЯ)
Имя переменной среды, которую необходимо установить.
[DEFAULT=<value>] [ Значение по умолчанию=<значение>]

ЗНАЧЕНИЕ по умолчанию, которое хочет установить администратор.

[OVERRIDE=<value>][перезаписываемое=<значение>]

Значения, которые могут быть запрошены и установлены с помощью pam_env, переопределяя значение по умолчанию.

Типичным примером использования pam_env является адаптация переменной DISPLAY, которая изменяется при каждом удаленном входе в систему. Это показано в примере 2.6, «pam_env.conf».

Example 2.6: pam_env.conf
Пример 2.6: pam_env.conf

REMOTEHOST DEFAULT=localhost OVERRIDE=@{PAM_RHOST}
DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}


В первой строке для переменной REMOTEHOST устанавливается значение localhost, которое используется всякий раз, когда pam_env не может определить какое-либо другое значение. Переменная DISPLAY, в свою очередь, содержит значение REMOTEHOST. Дополнительную информацию можно найти в комментариях в файле /etc/security/pam_env.conf.

2.4.2 pam_mount.conf.xml #

Целью pam_mount является монтирование домашних каталогов пользователей во время процесса входа в систему и их размонтирование во время выхода из системы в среде, где центральный файловый сервер хранит все домашние каталоги пользователей. При использовании этого метода нет необходимости монтировать полный каталог /home, в котором будут доступны все домашние каталоги пользователей. Вместо этого монтируется только домашний каталог пользователя, который собирается войти в систему.


После установки pam_mount шаблон pam_mount.conf.xml доступен в /etc/security. Описание различных элементов можно найти на странице руководства man 5 pam_mount.conf.

Базовую настройку этой функции можно выполнить с помощью YaST. Выберите «Настройки сети» > «Членство в домене Windows» > «Экспертные настройки», чтобы добавить файловый сервер; см. Раздел 34.5, «Настройка клиентов».

2.4.3 Файл limits.conf

Системные ограничения могут быть установлены для пользователя или группы в файле limits.conf, который читается модулем pam_limits. Файл позволяет вам устанавливать жесткие ограничения, которые нельзя превышать, и мягкие ограничения, которые можно превышать временно. Дополнительную информацию о синтаксисе и параметрах см. в комментариях в файле /etc/security/limits.conf.


2.5 Настройка PAM с помощью pam-config

Инструмент pam-config помогает настроить глобальные файлы конфигурации PAM (/etc/pam.d/common-*) и несколько выбранных конфигураций приложений. Чтобы просмотреть список поддерживаемых модулей, используйте команду pam-config --list-modules. Используйте команду pam-config для сохранения файлов конфигурации PAM. Добавляйте новые модули в ваши конфигурации PAM, удаляйте другие модули или изменяйте параметры этих модулей. При изменении глобальных файлов конфигурации PAM не требуется ручная настройка параметров PAM для отдельных приложений.

(A simple use case for pam-config involves the following:)
Простой вариант использования pam-config включает в себя следующее:

1. Автоматически сгенерируйте новую конфигурацию PAM в стиле Unix. Позвольте pam-config создать простейшую возможную настройку, которую вы сможете расширить позже. Команда pam-config --create создает простую конфигурацию аутентификации Unix. Существующие ранее файлы конфигурации, не поддерживаемые pam-config, перезаписываются, но резервные копии сохраняются как *.pam-config-backup.

2.Добавьте новый метод аутентификации. Добавление нового метода аутентификации (например, LDAP) в ваш стек модулей PAM сводится к простой команде pam-config --add --ldap. LDAP добавляется везде, где это возможно, во все файлы конфигурации PAM common-*-pc.

3.Добавьте отладку для целей тестирования. Чтобы убедиться, что новая процедура аутентификации работает должным образом, включите отладку для всех операций, связанных с PAM. pam-config --add --ldap-debug включает отладку операций PAM, связанных с LDAP. Найдите выходные данные отладки в журнале systemd (см. главу 17, Journalctl: Запрос журнала systemd).