nns负责名称解析,认证的过程是pam来处理。2套系统是独立运行的。
认证本身也可以不借用nss,自己去找对应的解析库。
以用户登陆为例:
用户名的解析 :
USERNAME--> nsswitch.conf --> passwd : file--> /etc/passwd
密码的解析:
PASSWORD --> nsswitch.conf --> shadow : file --> /etc/shadow
认证:
USERNAME -->compare (通过和解析到的用户名进行比较)
PASSWORD --> md5(salt ) -->compare(通过和解析到的密码进行比较)
认证的手段:
md5
mysql
ldap
nis
kerberos
pam:
中间层,和nss类似。通过库文件为应用程序认证提供手段。
库文件:
/lib/security/*
/lib64/security/*
栈(stack):
用来提供pam验证过程中不同的功能。
auth 检查用户输入的账号密码是否匹配
account 审核用户账号是否在有效期内
password 用户修改密码时检查修改这个动作动作是否被允许
session 设定会话的相关属性
配置文件:
/etc/pam.conf 主配置文件,默认不存在。
格式如下:
SERVERNAME TYPE CONTROL MODPATH MODARGS
/etc/pam.d/* 各个服务的配置文件
格式如下:
TYPE CONTROL MODPATH MODARGS
注意:other 这个文件使用来定义默认规则的。程序在认证的时候会先找到自己的配置文件,若无任何匹配和结果,则会使用other来认证。
配置文件详解:
SERVERNAME:服务二进制程序的文件名,必须全部小写。
TYPE: stack的类型
CONTROL:
返回值对应的处理动作。
格式为[VALUE1=ACTION1 VALUE2=ACTION2 ...]
VALUE
success 成功
ignore 忽略
default 失败
ACTION:
ok 此模块通过,继续检测
done 此模块通过,返回最终结果给应用程序
bad 此模块没通过,继续检测
die 此模块没通过,返回最终结果给应用程序
ignore 忽略结果
reset 忽略此前的所有结果,进行最终检查
处理动作的组合很多,有部分固定组合的可以使用以下几个替代:
required
有一票否决权,若匹配不通过则不通过。交给同stack中其他模块的进行匹配。
success=ok new_authtok_reqd=ok ignore=ignore default=bad
requisite
绝对一票否决,若匹配不通过则不通过,不进行本stack中的后续匹配。
success=ok new_authtok_reqd=ok ignore=ignore default=die
sufficient
绝对一票确定,若通过匹配则通过,后续不需要匹配。若匹配失败则继续进行后续匹配
success=done new_authtok_reqd=ok default=ignore
optional
陪衬性质,无实质作用
success=ok new_authtok_reqd=ok default=ignore
include
将判定的权利移交其他指定库文件,自己不做判定。
MODPATH 模块路径:
MODNAME.so
默认相对路径,相对于/lib/security/和/lib64/security/。若是其他路径则钥匙用绝对路径。
pam_unix.so 传统的密码验证,使用md5方式验证。
nullok
shadow
md5
pam_permit.so 总是允许访问,并没有什么作用
pam_deny.so 用来拒绝访问,通常用在other当中
pam_cracklib.so 依据字典来检查密码,用在用户修改密码使验证弱口令
minlen 密码的最小长度
difok 密码是否和以前相同
dcredit=NUM 密码中要包含的数字位输
ucredit=NUM 密码中包含大写字母位数
lcredit=NUM 密码中包含小写字母位数
ocredit=NUM 密码中包含特殊字符的位数
retry=NUM 重试次数为NUM次
pam_shell.so 用户登录时检测合法登陆shell,只能使用/etc/shells中有存在的shell登陆
pam_securetty.so 限定root用户只能通过限定的shell登陆,限定的文件为/etc/securetty。
pam_listfile.so 到指定的文本文件中验证用户是否可以登陆
item =tty|user|rhost|ruser|group|shell 文件条目的类型
sense=allow|deny
file=FILE
onen=successd|fail 一旦出现错误的处理机制,例如文件不存在或者是选项有错误。如果设定为successd,则返回PAM_SUCCESS,若设定为fail,则返回PAM_AUTH_ERR或者是PAM_SERVICE_ERR。
apply=user|@group
quiet
pam_rootok.so 只要uid=0直接通过
pam_limits.so 在一次用户会话中,能使用的资源数的限定。默认情况下使用配置文件/etc/security/limits.conf和/etc/security/limits.d/*.conf进行限定。普通用户只能调整软限定。临时调整使用#ulimit命令完成。
pam_env.so 设置或撤销环境变量的。默认配置文件在/etc/security/pam_env.conf。也可以编辑/etc/enviroment。
pam_while.so 限定哪些用户可以su到root。只有在wheel组中的用户可以切换root。
pam_time.so 根据时间限定登陆。配置文件/etc/security/time.conf。
格式为:
SERVICENAME;TTYS;USERS;TIMES
MOADARGS 模块的参数:
try_first_pass 若此前用户已输入过密码,则再次验证时尝试使用使用上次输入过的密码
use_first_pass 直接使用用户以前输入的密码
shadow 使用shadow方式读取或写入密码
md5 加密方式为md5
sha256 加密方式为sha256
sha512 加密方式为512
nullok 允许为空。默认情况下是禁止密码为空。
use_authok 当密码修改的时候强制使用指定模块中设定的密码
本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1666074
原文地址:http://ggvylf.blog.51cto.com/784661/1666074