Основы и настройка pam
Содержание:
Configuration
A number of paths are relevant for PAM, execute to see the default configuration files created. They relate to either for the modules, or the configuration.
Security parameters
The path contains system-specific configuration for variables the authentication methods offer. The base install populates it with default upstream configuration files.
Note Arch Linux does not provide distribution-specific configuration for these files. For example, the file can be used to define system-wide defaults for password quality. Yet, to enable it the module has to be added to the of modules, which is not the case per default.
See for some of the possibilities.
PAM base-stack
The path is exclusive for the PAM configuration to link the applications to the individual systems’ authentication schemes. During installation of the system base it is populated by:
- the package, which contains the base-stack of Arch Linux specific PAM configuration to be used by applications, and
- other base packages. For example, adds configuration for the central login and other programs, the package adds the Arch Linux defaults to secure and modify the user database (see Users and groups).
The different configuration files of the base installation link together and are stacked during runtime. For example, on a local user logon, the login application sources the policy, which in turn sources others:
/etc/pam.d/
login -> system-local-login -> system-login -> system-auth
For a different application, a different path may apply. For example, installs its PAM policy:
/etc/pam.d/
sshd -> system-remote-login -> system-login -> system-auth
Consequently, the choice of the configuration file in the stack matters. For the above example, a special authentication method could be required for only, or all remote logins by changing ; both changes would not affect local logins. Applying the change to or instead would affect local and remote logins.
Like the example of , any pam-aware application is required to install its policy to in order to integrate and rely on the PAM stack appropriately. If an application fails to do it, the default policy to deny and log a warning is applied.
Tip: PAM is dynamically linked at runtime. For example:
$ ldd /usr/bin/login | grep pam
libpam.so.0 => /usr/lib/libpam.so.0 (0x000003d8c32d6000) libpam_misc.so.0 => /usr/lib/libpam_misc.so.0 (0x000003d8c30d2000)
the login application is pam-aware and must, therefore, have a policy.
The PAM package manual pages and describe the standardized content of the configuration files. In particular they explain the four PAM groups: account, authentication, password, and session management, as well as the control values that may be used to configure stacking and behaviour of the modules.
Additionally, an extensive documentation is installed to which, among various guides, contains browsable man pages for each of the standard modules.
Warning: Changes to the PAM configuration fundamentally affect user authentication. Erroneous changes can result in that no or any user can log in. Since changes are not effective for already authenticated users, a good precaution is to perform changes with one user and test the result with another user in a separate console.
Examples
The factual accuracy of this article or section is disputed.
Two short examples to illustrate the above warning.
First, we take the following two lines:
/etc/pam.d/system-auth
auth required pam_unix.so try_first_pass nullok auth optional pam_permit.so
From : «The authentication component performs the task of checking the users credentials (password). The default action of this module is to not permit the user access to a service if their official password is blank. » — the latter being what is used for. Simply swapping the control values and for both lines is enough to disable password authentication, i.e. any user may logon without providing a password.
Second, as the contrary example, per default configuration of at /etc/pam.d/login, creating the following file:
# touch /etc/nologin
results in that no user other than root may login (if root logins are allowed, another default for Arch Linux). To allow logins again, remove the file. Possibly, from the console you created it with.
With that as background, see for particular use-case configuration.
配置 PAM
PAM 配置通常是在 或 (用于旧版本)中的配置文件中实现的。
配置文件的结构
对于使用 PAM 的各项服务,目录中都有一个对应的文件,其中包含应当如何获取该服务的验证及帐户信息的规则或说明。通常每一行有一个规则。
PAM 配置文件中的字段包括:
- 将指定服务/应用程序的名称(默认值为 OTHER)。
- 将为 字段中的相应服务指定模块类型()。
- 将指定模块的堆栈行为。它可以获取诸如 、、 和 之类的值。
- 将指定实现模块的库对象的路径名称。默认情况下,它将被设为 。
- /(可选字段)将指定可以传递给服务模块的选项或实参。
模块将按照在配置文件中列出的顺序被调用,这取决于每个条目允许的 的值。Control_flag 值包括:
- Required:堆栈中的所有 Required 模块必须看作一个成功的结果。如果一个或多个 Required 模块失败,则实现堆栈中的所有 Required 模块,但是将返回第一个错误。
- Sufficient:如果标记为 sufficient 的模块成功并且先前没有 Required 或 sufficient 模块失败,则忽略堆栈中的所有其余模块并返回成功。
- Optional:如果堆栈中没有一个模块是 required 并且没有任何一个 sufficient 模块成功,则服务/应用程序至少要有一个 optional 模块成功。
PAM 配置文件示例
表 1 显示了各种操作系统中的 PAM 配置文件的一些示例。
表 1. PAM 配置文件的世界
| 系统 | 配置文件所在位置 | 类型 | Control_flag | 模块 |
|---|---|---|---|---|
| Red Hat | /etc/pam.d | auth | required | /lib/security/pam_unix.so |
| Red Hat | /etc/pam.d | account | sufficient | /lib/security/pam_unix.so |
| Red Hat | /etc/pam.d | session | required | /lib/security/pam_limit.so |
| AIX | /etc/pam.conf | auth | required | /usr/lib/security/pam_aix |
| AIX | /etc/pam.conf | account | required | /usr/lib/security/pam_aix |
| AIX | /etc/pam.conf | password | required | /usr/lib/security/pam_aix |
| zSUSE 64-bit | 32-bit | /etc/pam.conf | auth | required | /lib64/security/pam_unix.so | /lib/security/pam_unix.so |
| zSUSE 64-bit | 32-bit | /etc/pam.conf | account | required | /lib64/security/pam_unix.so | /lib/security/pam_unix.so |
| zSUSE 64-bit | 32-bit | /etc/pam.conf | session | required | /lib64/security/pam_unix.so | /lib/security/pam_unix.so |
| Solaris | /etc/pam.conf | auth | required | /usr/lib/security/pam_unix.so.1 |
| Solaris | /etc/pam.conf | account | required | /usr/lib/security/pam_unix.so.1 |
| Solaris | /etc/pam.conf | password | required | /usr/lib/security/pam_unix.so.1 |
| HP-UX | /etc/pam.conf | auth | required | libpam_unix.so.1 |
| HP-UX | /etc/pam.conf | account | required | libpam_unix.so.1 |
| HP-UX | /etc/pam.conf | password | required | libpam_unix.so.1 |
PAM 的 “other” 文件
默认的 PAM 配置文件 用于没有明确配置的所有其他服务,并且可能是 PAM 所依赖的最简单而又最健壮的默认文件。该文件内部类似如下所示:
/etc/pam.d/other File auth required pam_warn.so auth required pam_deny.so account required pam_warn.so account required pam_deny.so password required pam_warn.so password required pam_deny.so session required pam_warn.so session required pam_deny.so
此文件非常简单。对于所有模块类型,Control_flag 都是一样的:。调用两个模块:
- 首先,调用 来记录关于正在进行的尝试的信息。
- 然后调用 仅返回错误并防止发生任何类型的连接或验证。
因此,使用 PAM 的所有服务都必须被明确配置为允许验证;否则,尝试将失败。
LDAP 用户的统一管理
经过以上 PAM 程序的开发和配置,LDAP 用户以后可以直接登陆 Linux 操作系统。企业中的用户只需要记录一套用户名和密码,就可以登录企业其他应用服务。当 LDAP server 上的用户出现新增、修改、删除等变化时,用户可以开发一套脚本,实现 Linux 操作系统和 LDAP server 上用户的同步。主要使用的命令如下:
新增用户使用的命令:
LDAP:ldapadd,例如 ldapadd -x -D <bindDN> -w <password>
Linux:useradd,例如 useradd –m –g <group> -s <shell> <name>
修改用户使用的命令:
LDAP:ldapmodify 或者 ldappasswd,ldappasswd 用于设置密码。
Linux:usermod,修改用户相关信息。
删除用户使用的命令:
LDAP:ldapdeleteldapdelete -x -D <bindDN> -w secret <userinfo>
Linux:userdel <username>
用户也可以不开发此类脚本,这样在操作系统上会存在一些冗余的用户,但是不影响用户的登陆,凡是在 LDAP server 上作废的用户,是无法在操作系统上登陆的。
Настройка PAM
4.1. Файлы политик
PAM
4.1.1. Файл
/etc/pam.conf
Традиционно файлом политик PAM является /etc/pam.conf. Он
содержит все политики PAM для вашей системы. Каждая строка файла описывает один шаг в
цепочке, как показано ниже:
login auth required pam_nologin.so no_warn
Поля следуют в таком порядке: имя службы, имя подсистемы, управляющий флаг, имя модуля
и параметры модуля. Любые дополнительные поля интерпретируются как дополнительные
параметры модуля.
Для каждой пары сервис/подсистема составляется отдельная цепочка, и тогда получается,
что, хотя порядок следования строк для одной и той же услуги и подсистемы является
значимым, порядок перечисления отдельных сервисов не значим. В примерах из оригинальной
работы по PAM строки конфигурации сгруппированы по подсистемам, в поставляемом с Solaris файле pam.conf именно так и
сделано, но в стандартном конфигурационном файле из поставки FreeBSD строки настроек
сгруппированы по сервисам. Подходит любой из этих способов; они имеют один и тот же
смысл.
OpenPAM и Linux-PAM поддерживают альтернативный механизм настройки, который для
FreeBSD является предпочтительным. В этой схеме каждая политика содержится в отдельном
файле с именем, соответствующем сервису, к которому она применяется. Эти файлы
размещаются в каталоге /etc/pam.d/.
Такие файлы политик, ориентированные на сервисы, имеют только четыре поля, вместо пяти
полей в файле pam.conf: поле имени сервиса опущено. Таким
образом, вместо примера строки файла pam.conf из предыдущего
раздела получится следующая строка в файле /etc/pam.d/login:
auth required pam_nologin.so no_warn
Как следствие такого упрощённого синтаксиса, возможно использование одних и тех же
политик для нескольких сервисов, связывая каждое имя сервиса с тем же самым файлом
политик. К примеру, для использования той же самой политики для сервисов su и sudo, можно сделать следующее:
# cd /etc/pam.d # ln -s su sudo
Это работает, потому что имя сервиса определяется именем файла, а не его указанием в
файле политики, так что один и тот же файл может использоваться для нескольких сервисов с
разными названиями.
Так как политика каждого сервиса хранится в отдельном файле, то механизм pam.d делает установку дополнительных политик для программных
пакетов сторонних разработчиков очень лёгкой задачей.
4.1.3.
Порядок поиска политик
Как вы видели выше, политики PAM могут находиться в нескольких местах. Что будет, если
политики для одного и того же сервиса имеются в разных местах?
Необходимо осознать, что система конфигурации PAM ориентирована на цепочки.
4.2.
Структура строки настройки
Как это объяснено в разделе ,
каждая строка файла /etc/pam.conf состоит из четырёх или
большего количества полей: имени сервиса, имени подсистемы, управляющего флага, имени
модуля и дополнительных параметров модуля, которые могут отсутствовать.
Имя сервиса обычно (хотя не всегда) является именем приложения, которое этот сервис
обслуживает. Если вы не уверены, обратитесь к документации по конкретному приложению для
определения используемого имени сервиса.
Заметьте, что если вы используете /etc/pam.d/ вместо /etc/pam.conf, то имя сервиса задается именем файла политики, и
опускается из строк настройки, которые в таком случае начинаются с названия
подсистемы.
Имя подсистемы представляет собой одно из четырёх ключевых слов, описанных в главе .
Точно также управляющий флаг является одним из четырёх ключевых слов, описанных в
разделе , в котором
рассказано, как интерпретировать возвращаемый из модуля код. В Linux-PAM поддерживается
альтернативный синтаксис, который позволяет указать действие, связанной с каждый
возможным кодом возврата, но этого следует избегать, так как он не является стандартным и
тесно связан со способом диспетчеризации вызовов сервисов в Linux-PAM (а он значительно
отличается от способа взаимодействия в Solaris и OpenPAM).
Не вызывает удивления тот факт, что в OpenPAM этот синтаксис не поддерживается.
Coworker relations
From her years working the front desk, Pam has become well-acquainted with the Dunder-Mifflin staff and is consistently shown to have a thorough understanding of her coworkers’ personalities, including the more eccentric individuals Dwight Schrute and Michael Scott. She uses this familiarity to manipulate them, often for their and the company’s best interests (such as her giving the staff elaborate instructions on how to handle a heartbroken Michael in «The Chump») but also occasionally for her own. This familiarity plays a large part in her efficiency as office administrator and was crucial to her being promoted to the previously non-existent position.
Roy Anderson
- When the series begins, Pam is engaged to her high school sweetheart Roy Anderson; this engagement is revealed to be three years old and running. They finally set a date, but Pam calls off the wedding at the last minute. They get back together once, briefly, but Pam is much more assertive, and finally breaks up with him after he has a violent outburst. Roy is deeply flawed — he is overbearing, neglectful, dismissive of her desire to be an artist, and offers her sex as a gift on Valentine’s Day. Jim comments in Season 2 that Pam does not like to «bother» Roy with her «thoughts or feelings». He tells the camera crew that the only two problems in Pam’s life seemed to be Roy and her job at Dunder Mifflin.
In season 5, Jim and Roy run into each other at a bar and Roy learns that Jim and Pam are engaged. The mood is somewhat awkward, but Roy is congratulatory, but then makes a somewhat passive-aggressive comment, seemingly meant to make Jim feel insecure about his current role in Pam’s life, which tempts him to drive to Pratt, where she is attending art classes. Jim gets on the freeway, but changes his mind and remembers that he trusts Pam. Jim didn’t want to treat Pam the same way Roy treated her.
Karen Filippelli
- Main article: Karen FilippelliPam and Karen first meet when the Stamford branch merges with the Scranton branch. («Branch Wars»).
Pam views Karen as the sort of woman she aspires to be: She is more sophisticated, with confidence and ambition. Jenna Fischer made this observation and incorporated into her portrayal of the relationship between the two characters.
Как использовать pam_passwdqc — модуль контроля качества паролей PAM
Отредактируем файл :
# cp /etc/pam.d/system-auth /root/backup/system-auth # nano /etc/pam.d/system-auth
Найти строку:
password requisite pam_cracklib.so try_first_pass retry=3
и заменить её на следующую строку:
password requisite pam_passwdqc.so min=disabled,disabled,13,13,12 retry=3
где:
min = N0, N1, N2, N3, N4 — минимально допустимая длина пароля для различных видов паролей. Ключевое слово может быть использовано, чтобы запретить пароли данного вида, независимо от их длины. Каждое последующее число должно быть не больше, чем предыдущее.
-
N0 используется для паролей, состоящих только из одного класса символов (цифры, строчные буквы, заглавные буквы и другие символы). Существует также специальный класс для не-ASCII символов, которые не могут быть классифицированы, но предполагаются без цифр.
-
N1 используется для паролей, состоящих из двух классов символов, которые не отвечают требованиям, предъявляемым к ключевой фразе.
-
N2 используется в фразах. Секретная фраза должна состоять из достаточных слов (см вариант идентификационной фразы ниже).
-
N3 и N4 используются для паролей, состоящих из символов из трех и четырех классов символов, соответственно.
-
При расчете количества классов символов, заглавные буквы, используемые в качестве первого символа и цифр, используемых в качестве последнего символа пароля не учитываются.
-
В дополнение к достаточно длинным, пароли должны содержать достаточное количество различных символов для классов символов.
retry=3 — количество раз модуль будет запрашивать новый пароль , если пользователь не в состоянии обеспечить достаточно надежный пароль и ввести его в два раза
первый раз.
max=N — (max=40) Максимально допустимая длина пароля. Эта опция может быть использовано для того, чтобы запретить пользователям установливать пароли, которые могут быть слишком длинным для некоторых системных служб. Значение 8 обрабатывается особым образом: пароли длиннее 8 символов, не отклоняются, а обрезаются до 8 символов для проверки надёжности (пользователь при этом предупреждается).
passphrase=N — (passphrase=3) Число слов, необходимых для ключевой фразы, или 0, чтобы отключить поддержку фраз.
Смотрите файл справки и справочной страничке pam_passwdqc остальные параметры конфигурации с описанием.
Comparison Chart
|
Example: on the hour |
Example: 10 minutes past | |||
| 24 Hour Clock | AM / PM | 24 Hour Clock | AM / PM | |
| 00:00 | 12 Midnight | 00:10 | 12:10 AM | |
| 01:00 | 1:00 AM | 01:10 | 1:10 AM | |
| 02:00 | 2:00 AM | 02:10 | 2:10 AM | |
| 03:00 | 3:00 AM | 03:10 | 3:10 AM | |
| 04:00 | 4:00 AM | 04:10 | 4:10 AM | |
| 05:00 | 5:00 AM | 05:10 | 5:10 AM | |
| 06:00 | 6:00 AM | 06:10 | 6:10 AM | |
| 07:00 | 7:00 AM | 07:10 | 7:10 AM | |
| 08:00 | 8:00 AM | 08:10 | 8:10 AM | |
| 09:00 | 9:00 AM | 09:10 | 9:10 AM | |
| 10:00 | 10:00 AM | 10:10 | 10:10 AM | |
| 11:00 | 11:00 AM | 11:10 | 11:10 AM | |
| 12:00 | 12 Noon | 12:10 | 12:10 PM | |
| 13:00 | 1:00 PM | 13:10 | 1:10 PM | |
| 14:00 | 2:00 PM | 14:10 | 2:10 PM | |
| 15:00 | 3:00 PM | 15:10 | 3:10 PM | |
| 16:00 | 4:00 PM | 16:10 | 4:10 PM | |
| 17:00 | 5:00 PM | 17:10 | 5:10 PM | |
| 18:00 | 6:00 PM | 18:10 | 6:10 PM | |
| 19:00 | 7:00 PM | 19:10 | 7:10 PM | |
| 20:00 | 8:00 PM | 20:10 | 8:10 PM | |
| 21:00 | 9:00 PM | 21:10 | 9:10 PM | |
| 22:00 | 10:00 PM | 22:10 | 10:10 PM | |
| 23:00 | 11:00 PM | 23:10 | 11:10 PM |
Casting and character development
The character was originally created to be very similar to the British counterpart, Dawn Tinsley. Even minute details, such as how Pam wore her hair each day, were considered by executive producer, Greg Daniels.
«When I went in for The Office, the casting director said to me, ‘Please look normal’,» recalls Jenna Fischer. «Don’t make yourself all pretty, and dare to bore me with your audition. Those were her words. Dare to bore me.»
«When I went into the audition, the first question that they asked me in the character of Pam—they said, ‘Do you like working as a receptionist?’ I said, ‘No.’ And that was it. I didn’t speak any more than that. And they started laughing.»
一、什么是Linux-PAM
为安全起见,计算机系统只有经过授权的合法用户才能访问,在这里如何正确鉴别用户的真实身份是一个关键的问题。所谓用户鉴别,就是用户向系统以一种安全的方式提交自己的身份证明,然后由系统确认用户的身份是否属实的过程。换句话说,用户鉴别是系统的门户,每个用户进入到系统中都必须经过鉴别这一道关。
最初,Linux系统的用户鉴别过程就像各种Unix系统的一样:系统管理员为用户建立一个帐号并为其指定一个口令,用户用此指定的口令登录后重新设置自己的口令,这样用户就具有了一个只有他自己知道的秘密口令。一般情况下,用户的口令经过加密处理后存放于 /etc/passwd 文件中。用户登录时,登录服务程序提示用户输入其用户名和口令,然后将口令加密并与 /etc/passwd 文件中对应帐号的加密口令进行比较,如果口令相匹配,说明用户的身份属实并允许此用户访问系统。这种思想基于只有用户自己知道他的口令,所以输入的口令是正确的话,那么系统就认定他是所声称的那个人。
后来,还采用了许多其他的鉴别用户的方法,如用于网络环境的 Kerberos 以及基于智能卡的鉴别系统等。但是这些鉴别方案有一个通病:实现鉴别功能的代码通常作为应用程序的一部分而一起编译,这样问题就来了——如果发现所用算法存在某些缺陷或想采用另一种鉴别方法时,用户不得不重写(修改或替换)然后重新编译原程序。很明显,我们原先的鉴别方案缺乏灵活性,这里的牵一发而动全身的情形很是让人恼火。
鉴于以上原因,人们开始寻找一种更佳的替代方案:一方面,将鉴别功能从应用中独立出来,单独进行模块化设计,实现和维护;另一方面,为这些鉴别模块建立标准 API,以便各应用程序能方便的使用它们提供的各种功能;同时,鉴别机制对其上层用户(包括应用程序和最终用户)是透明的。直到 1995 年,SUN 的研究人员提出了一种满足以上需求的方案—插件式鉴别模块(PAM)机制并首次在其操作系统 Solaris 2.3 上部分实现。插件式鉴别模块(PAM)机制采用模块化设计和插件功能,使得我们可以轻易地在应用程序中插入新的鉴别模块或替换原先的组件,而不必对应用程序做任何修改,从而使软件的定制、维持和升级更加轻松—因为鉴别机制与应用程序之间相对独立。应用程序可以通过 PAM API 方便的使用 PAM 提供的各种鉴别功能,而不必了解太多的底层细节。此外,PAM的易用性也较强,主要表现在它对上层屏蔽了鉴别的具体细节,所以用户不必被迫学习各种各样的鉴别方式,也不必记住多个口令;又由于它实现了多鉴别机制的集成问题,所以单个程序可以轻易集成多种鉴别机制如 Kerberos 鉴别机制和 Diffie — Hellman 鉴别机制等,但用户仍可以用同一个口令登录而感觉不到采取了各种不同鉴别方法。
在广大开发人员的努力下,各版本的 UNIX 系统陆续提供对 PAM 的支持。其中,Linux-PAM 是专门为 Linux 机器实现的,包括 Caldera 1.3、2.2、Debian 2.2、Turbo Linux 3.6、Red Hat 5.0 以及 SuSE 6.2 及它们的后续版本都提供对 PAM 的支持。FreeBSD 从 3.1 版开始支持 PAM。需要注意的是,除了具体实现不同外,各种版本 Unix 系统上的 PAM 的框架是相同的,所以我们在这里介绍的 Linux-PAM 框架知识具有普遍性。因此在下文介绍其框架的过程中可以看到,我们并没有刻意区分 PAM 与 Linux-PAM 这两个术语。
Заключение
Применение PAM для превращения работы с низкоуровневой аутентификацией в более управляемый и целостный процесс – это разумный шаг по упрощению этого механизма безопасности. В этой статье вы познакомились:
- с основами архитектуры PAM;
- с настройкой модулей PAM;
- с созданием PAM-приложения для входа в систему, помогающим понять его работу.
Теперь вы можете перейти к более сложным материалам по использованию PAM. Ссылки приведены в разделе
.
Похожие темы
- Оригинал статьи (EN).
-
Сборник руководств Linux-PAM
(EN) содержит документацию по проблемам системного администрирования, написанию модулей и разработке приложений. - Взгляд на PAM со стороны
Неофициального FAQ по SUSE Linux (EN). - Если вам необходимо обновление, на сайте Gentoo есть
руководство по обновлению Linux-PAM (EN). - Взгляните на
модель архитектуры X/Open Single Sign-on Service (XSSO) (EN). - Готовы к более подробным материалам по работе с PAM?
-
Сравнение подсистем безопасности в AIX, Linux и Solaris
(developerWorks, октябрь 2005 г.; ): как работают PAM в этих системах. - Применение пространства имен монтирования (developerWorks, сентябрь 2007 г.; ): познакомьтесь с соответствующей частью модулей PAM.
-
Централизованное управление учетными записями пользователей при помощи OpenLDAP
(developerWorks, май 2006 г.; EN): узнайте, как PAM в Linux взаимодействуют с LDAP. -
Усиление безопасности при помощи многоэкземплярности
(developerWorks, февраль 2008 г.; EN): использование подключаемых модулей аутентификации для защиты личной информации. -
Учебник для экзамена LPI 202, Тема 210: Управление сетевыми клиентами
(developerWorks, май 2006 г.): настройка PAM для обеспечения аутентификации. -
Настройка PAM в SUSE Enterprise Linux 9
(Technote (IBM Tivoli Netcool/OMNIbus), октябрь 2008 г.; EN): настройка модуля PAM для аутентификации локальных пользователей при помощи ObjectServer.
-
Сравнение подсистем безопасности в AIX, Linux и Solaris
- В
разделе Linux сайта developerWorks можно найти дополнительные ресурсы для разработчиков Linux и
самые популярные среди наших читателей статьи и руководства (EN). -
Посмотрите все
советы по Linux и
руководства по Linux на сайте developerWorks.
-
Используйте в своем следующем проекте разработки для Linux
ознакомительные версии программного обеспечения IBM, которые можно скачать непосредственно с developerWorks.(EN)