6.1 nsswitch
:名称解析
- 认证的中间桥梁,通过libnss库
- 位置:/etc/nsswitch.conf
- 查看so文件的命令:readelf 命令
getent hosts www.baidu.com
:查找百度的解析地址getent 文件 内容
6.2 PAM 验证
6.2.1 相关文件
- 嵌入式认证模块,PAM 本身不会执行验证,必须执行策略和模块进行验证
ldd
命令 :查看与服务相关的模块ldd service_path
- /etc/pam.d/service_name (系统中支持pam认证的服务名称)
- /etc/pam.d/other (当系统中支持pam认证的服务没有匹配到任何条目时,匹配other中的配置)
6.2.2 /etc/pam.d/service_name格式
- 格式:type control modules [modules_args]
- type :
- auth(authentication):身份验证,匹配用户名密码
- account :检查用户名和密码的有效性!有效性
- password :检查修改密码时,密码是否符合标准
- session :检查用户会话相关属性
- control:
- required:一票否决权,继续匹配下面的条目,最后不匹配(保护系统安全性)
- requisite:一票否决权,不继续匹配下面的条目,直接给用户返回结果
- sufficient:一票同意权,不匹配下面的条目,直接给用户返回结果(慎用)
- optional:不影响最终的结果
- include:引用其他的配置文件,把匹配权交给其他配置文件,(如果其他匹配跳出,则整个匹配结束)
- substack:引用其他配置,把匹配权交给其他配置文件(如果其他配置跳出,则仅仅跳出子匹配)
- modules:匹配认证模块 (value = action)
- value:
- success、open_err、symbol_err、service_err、 system_err、buf_err、perm_denied、auth_err、cred_insufficient、authinfo_unavail、user_unknown、maxtries、new_authtok_reqd、acct_expired、 session_err、cred_unavail、cred_expired、cred_err、no_module_data、conv_err、 authtok_err、authtok_recover_err、authtok_lock_busy、authtok_disable_aging、 try_again、ignore、abort、authtok_expired、module_unknown、bad_item和default.最后一个(default)能够用来设置上面的返回值无法表达的行为.
- action值:
- ignore:忽略执行结果
- bad:如果失败,结果被用于整个执行栈,后续栈继续执行
- die:和bad相似,但是失败直接返回结果,后续栈不执行
- ok:如果PAM_SUCCESS覆盖之前值
- done:和ok 相似,但是栈直接返回结果
- reset:重置栈当前状态
- 部分语法:
- required [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
- requisite [success=ok new_authtok_reqd=ok ignore=ignore default=die]
- sufficient [success=done new_authtok_reqd=done default=ignore]
- optional [success=ok new_authtok_reqd=ok default=ignore]
- modules:PAM认证模块相关文件:
- /etc/pam.d/*:每一个应用程序PAM配置文件
- /usr/lib64/security/*:PAM认证模块文件的实际存放位置
- /etc/security/*:其他PAM环境的配置文件,比如 access.conf
- /usr/share/doc/pam-x:存放详细的PAM的说明文件
- value:
- 查看应用程序是否支持PAM认证:
- ldd app_path
- 如: ldd /usr/sbin/vsftpd | grep libpam
- 如:ldd
which httpd
| grep libpam
- linux-pam 官方文档下载地址: http://www.linux-pam.org/
- 部分pam-*.so文件解释:
- pam_env.so:设置环境变量的模块,如果需要额外的环境变量,可以使用
- pam_env.so进行设置,配置文件/etc/security/pam_env.conf
- pam_unix.so:提供验证阶段的验证功能,也可以提供授权管理
- pam_secruetty.so:限制系统管理员只能够从安全的终端登录,安全终端:/etc/securetty
- pam_nologin.so:限制普通使用者能否登录主机进行使用,当/etc/nologin文件存在时,所有的普通用户都无法登录
- pam_cracklib.so:可是限制恶意攻击,检查密码强度
- pam_pwquality.so:完全兼容pam_cracklib.so,检查密码强度,包括设置的密码是否在字典
- pam_limits.so:限制使用者打开文件数量,单个文件大小
- pam_rootok.so:如果UID为0,直接通过,如root用户su到普通用户使用此模
- pam_listfile.so:验证使用其他的文件
- pam_access.so:控制访问的模块,默认配置/etc/security/access.conf: ALL EXCEPT gooann:ALL