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的说明文件
  • 查看应用程序是否支持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