1 Star 0 Fork 11

coder_lw / wiki

forked from deepinwiki / wiki 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
pam简介.md 5.33 KB
一键复制 编辑 原始数据 按行查看 历史
htqx 提交于 2021-07-14 18:45 . 关闭强制密码复杂性

[TOC]

PAM 简介

前言

可插拔认证模块 PAM(Pluggable Authentication Modules)是linux中关于用户认证的一个核心技术。linux 是一个注重安全的系统,因此有许多帮助用户认证的技术,用户应该学习相关技术,来定制适合自己的安全系统。

pam

pam 模块:

  1. /usr/lib/security
    1. pam_crackib.so 密码检查,如长度,组合等
    2. pam_tally.so 限制登录,次数等
    3. pam_wheel.so 用户限制
    4. pam_limits.so 进程资源限制
    5. pam_env.so 环境变量
      1. /etc/security/pam_env.conf
      2. /etc/environment
    6. pam_mount.so 自动挂载
    7. pam_ecryptfs.so 自动挂载加密目录
    8. pam_exec.so 登录脚本
    9. pam_winbind.so LDAP认证
    10. pam_krb5.so Kerberos认证
    11. pam_ldap.so LDAP主对端认证
    12. pam_yubico.so Yubikey认证
    13. pam_oath.so 2FA认证
    14. pam_fprintd.so 指纹认证
    15. pam_usb.so USB设备认证
    16. pam_ssh.so 远端用户认证
    17. pam_abl.so 限制ssh暴力攻击
    18. pam_encfs.so 自动挂载加密目录
    19. pam_google_authenticator.so 谷歌2FA认证
    20. pam_pwdfile.so 非本地FTP登录和chroot限制
    21. pam_unix.so 传统系统登录验证
      1. /etc/passwd
      2. /etc/shadow
      3. nullok 允许空
      4. try_first_pass 尝试上级模块密码
      5. use_first_pass 使用上级模块密码
      6. nodelay 延迟
      7. use_authtok 使用上级授权
      8. authtok_type 密码提示
      9. nis
      10. shadow 使用shadow密码文件
      11. md5 加密算法
    22. pam_deny.so 默认拒绝
    23. pam_warn.so 默认警告
    24. pam_access.so 基于主机登录
      1. /etc/security/access.conf
    25. pam_debug.so 调试
    26. pam_echo.so 打印信息
    27. pam_faildealy.so 错误延迟
    28. pam_filter.so 过滤
    29. pam_ftp.so 匿名访问ftp
    30. pam_group.so 修改组权限
    31. pam_issue.so 问题文件
    32. pam_keyinit.so 显示keyinit文件
    33. pam_lastlog.so 上次登录日期
    34. pam_listfile.so 列出文件
    35. pam_localuser.so 是否在/etc/passwd
    36. pam_loginuid.so 登录uid
    37. pam_mail.so 邮件
    38. pam_mkhomedir.so 创建主用户目录
    39. pam_motd.so 显示motd文件
    40. pam_namespace.so 私有名称空间
    41. pam_nologin.so 禁止非root用户登录
    42. pam_permit.so
    43. pam_pwhistory.so 使用.pwhistory文件授权访问
    44. pam_rhosts.so 使用.rhosts授权访问
    45. pam_rootok.so 仅获得root用户访问权限
    46. pam_securetty.so 将root登录限制为特殊设备
    47. pam_selinux.so selinux支持
    48. pam_shells.so 检查有效shell
    49. pam_succeed_if.so 测试账户特征
    50. pam_time.so 时间控制
    51. pam_timestamp.so 缓存身份验证
    52. pam_umask.so 掩码
    53. pam_userdb.so 用户数据库
    54. pam_wheel.so 仅允许wheel组使用root权限
    55. pam_xauth.so 转发xauth密钥

pam 配置:

  1. /etc/pam.d
    1. login 登录程序的认证配置
    2. system-local-login 本地登录
    3. system-login 登录系统
    4. system-auth 用户认证
    5. sshd sshd的认证配置
    6. system-remote-login 远程登录
    7. other 默认认证配置
  2. 服务类型
    1. account 账户,允许登录的账户或条件
    2. auth 认证,登录并授权
    3. password 密码,更新密码,或一次性密码(提问/响应式认证)
    4. session 会话,维护登录环境
  3. 控制
    1. required 需要
    2. requisite 必要(立即返回错误)
    3. sufficient 足够(立即返回成功)
    4. optional 可选
    5. include 包含,导入其他配置对应类型行
    6. substack 子堆栈,导入但视为一个整体

示例:

# /etc/pam.d/login
# 类型  控制    模块    参数...  
auth       required     pam_securetty.so x=1 y=2 [z=x y]
auth       requisite    pam_nologin.so
auth       include      system-local-login
account    include      system-local-login
session    include      system-local-login

具体应用

/etc/pam.d/other

# 没有对应配置的默认配置,设置为拒绝或警告
auth      required   pam_deny.so # 拒绝
auth      required   pam_warn.so # 提示错误
account   required   pam_deny.so
account   required   pam_warn.so
password  required   pam_deny.so
password  required   pam_warn.so
session   required   pam_deny.so
session   required   pam_warn.so

怎么关闭强制密码强度

我个人最讨厌就是强制密码复杂强度这种功能。虽然它保证了安全,不过我挺反感强制性的东西。毕竟我也只是个人电脑,根本不需要这种东西。

新版的pam 会强制密码强度,它主要是依赖一个叫做 pam_passwdqc 的组件控制。

它的配置在:

  1. /etc/secrutity/passwdqc.conf

修改密码强度:

  1. enforce=none: 改成这个设置即可
    1. enforce=none: 表示只警告弱口令字,但不禁止它们使用
    2. enforce=users: 对系统上的全体非根用户实行这一限制
    3. enforce=everyone: 对包括根用户在内的全体用户实行这一限制

参考

  1. arch wiki:https://wiki.archlinux.org/index.php/PAM_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/coder_lw/wiki.git
git@gitee.com:coder_lw/wiki.git
coder_lw
wiki
wiki
master

搜索帮助