关於Linux登录认证过程

发布时间:2018-08-03 15:27:52 编辑:Admin 手机版

?最近,安装pam和登录过程,一些经验总结如下:


Linux系统登录过程简述如下:


? ? ? ?read /etc/inittab? ? ? ? ? ? ? ? ? ? get username in tty? ? ? ? ? ? ?get password?
init ---------------------> mingetty ---------------------------> login ------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /etc/pam.d
-----> call PAM modules -------------> act/rej


Linux PAM 是一个通用认证机制。为库的形式。

配置文件放在/etc/pam.conf或/etc/pam.d/ . 配置文件可以使用include指令包含其它配置文件。当支持Linux-PAM的客户程序调用PAM api. PAM首先根据客户程序的类别,检查配置文件中的PAM在此类别中的堆叠模块数以及相应的堆叠模块名。依次调用这些模块进行认证检查。对於每一种模块的所需的配置文件放在/etc/security/目录中。


一般包括4种类别


auth? ? ? ? ? ? ? ? ? ? 验证类,用於登录验证
account? ? ? ? ? ? ? 帐号类,用於非验证的帐号管理,如限制/允许访问基於,时间,允许的最大用户数,用户名
password? ? ? ? ?口令维护类,用於修改口令
session? ? ? ? ? ? 会话类,用於用户在使用某项服务前或後必须先做某件事的检查。

模块後的域,一般是该模块的参数。

所以,要保证login,passwd正常工作必须保证PAM模块被正确安装和配置(配置文件必须存在),一般的安装目录为:
PAM全局文件:/etc/pam.conf? ?或 /etc/pam.d/* ; pam.d目录的存在会引起pam.conf被忽略。
PAM模块:/lib/security
PAM模块配置文件:/etc/security

系统登录(auth)修改(password)常用的模块是:
pam_unix :提供传统unix登录密码检查(从/etc/passwd和,或/etc/shadow)。
pam_cracklib:提供基於字典的密码复杂度和安全性检查。一般作为pam_unix的first pass(及上层堆叠模块)进行检查。pam_cracklib.so由PAM包提供。但它需要cracklib库(libcrack.so)。cracklib的字典文件一般位於:/usr/lib/cracklib_dict.*文件中,或/usr/share/cracklib/pw_dict.*文件中

典型的PAM配置文件如下:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth? ? ? ? required? ? ? pam_env.so
auth? ? ? ? sufficient? ? pam_unix.so nullok try_first_pass
auth? ? ? ? requisite? ? ?pam_succeed_if.so uid >= 500 quiet
auth? ? ? ? required? ? ? pam_deny.so

account? ? ?required? ? ? pam_unix.so
account? ? ?sufficient? ? pam_localuser.so
account? ? ?sufficient? ? pam_succeed_if.so uid < 500 quiet
account? ? ?required? ? ? pam_permit.so

password? ? requisite? ? ?pam_cracklib.so try_first_pass retry=3
password? ? sufficient? ? pam_unix.so md5 shadow nullok try_first_pass use_authtok
password? ? required? ? ? pam_deny.so

session? ? ?optional? ? ? pam_keyinit.so revoke
session? ? ?required? ? ? pam_limits.so
session? ? ?[success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session? ? ?required? ? ? pam_unix.so
本文已影响1
+1
0