pam模块

📅 2026/7/5 20:45:16
pam模块
pam模块PAM认证简介PAM模块新闻pam_faillock安装pam模块pam模块目录PAM认证的配置文件模块类型(module-type)控制条件(Control)pam配置工具authselectpam配置案例/etc/pam.d/system-auth密码复杂度配置/etc/pam.d/system-auth配置账号锁定时间/etc/pam.d/system-auth配置口令重复次数限制/etc/login.defs新用户的口令安全默认策略配置文件/etc/pam.d/login登录失败策略配置文件生产案例:pam安全整改确认密码重用是否受限制确认root计算机用户默认组的GID是否为0确认SSH的MaxAuthTries(ssh最大尝试次数)是否配置为小于等于4limits.conf解除Linux进程数和线程数及文件打开数允许开启的线程数量系统中可同时打开的文件数配置用户或用户组资源限制软硬一起限制---生产示例使配置生效PAM认证简介参考: https://sites.google.com/site/linuxxuexi/shi-zhan-gong-cheng-shi-xi-lie/shi-yi-pam-ren-zheng-mo-kuai参考: https://documentation.suse.com/zh-cn/sles/15-SP2/html/SLES-all/cha-pam.htmlPAMPluggable Authentication Modules 是由Sun公司提出的一种认证机制。通过提供一些动态链接库和一套统一的API将系统提供的服务和该服务的认证方式分开。使得系统管理员可以灵活地根据需求给不同的服务配置不同的认证方式而无需更改服务程序同时也便于向系统中添加新的认证手段。PAM模块新闻pam_faillockhttps://unix.stackexchange.com/questions/557894/what-is-the-difference-between-pam-faillock-and-pam-tally2由于 Linux-PAM 1.4.02020 年 6 月 8 日pam_tally和pam_tally2已弃用并引入了pam_faillock版本 1.5.02020 年 11 月 10 日删除了pam_tally和pam_tally2, 如果你的发行版提供pam_faillock请使用该版本如果没有请使用pam_tally2来源 https://github.com/linux-pam/linux-pam/tags安装pam模块# rheldnfinstall-yyam# debianaptinstall-ypampam模块目录# 列出pam模块ls/lib64/security/PAM认证的配置文件Redhat强烈建议您使用authconfig工具配置 PAM而不是手动编辑 PAM 配置文件。https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/7/html/system-level_authentication_guide/pam_configuration_files文件名称作用解释/etc/pam.d/system-auth系统级别的认证的核心配置 包含了所有用户的基本认证和账户管理设置。/etc/pam.d/password-auth修改密码相关的配置定义了密码验证和密码策略的具体实现。/etc/login.defs定义新用户账号和密码的默认配置,例如是否创建home目录使用哪种shell密码默认有效期等/etc/pam.d/login定义登录认证的模块和策略/etc/pam.d/passwd配置passwd命令的行为/etc/pam.d/common-password/etc/pam.d/passwd的子配置/etc/pam.d/system-auth配置样本模块类型(module-type)模块作用阶段参考https://docs.oracle.com/cd/E19253-01/819-7061/pam-29/index.html红帽官方翻译为module_interface 模块用途接口模块类型解释用途auth验证用户的身份确保用户是合法用户例如它请求并验证密码的有效性。带有此接口的模块也可以设置凭据如组成员资格。account管理账户有效性及非认证类功能;检查用户的账号是否有效防止过期或被锁定的账号登录。它会检查用户帐户是否已过期或者是否允许用户在特定时刻登录。password密码复杂度检查机制及修改规则。用于加强密码安全性防止弱密码被破解session管理用户会话提供用户登录后的环境,用户会话期资源控制如最大文件数、进程数限制。使用此界面的模块还可以执行允许访问所需的其他任务例如挂载用户的主目录和使用户的邮箱可用。-模块类型缺失时不会加载的模块且不记录日志适用于非必装模块。控制条件(Control)常用的PAM模块控制标志控制条件参数优先级行为逻辑required必要条件模块需返回成功才能通过认证。若失败继续执行同类型其他模块。requisite一票否决模块失败则立即终止后续同类型模块执行。sufficient一票通过模块成功则直接通过认证失败则忽略优先级高于required/requisite。optional可选成功与否不影响认证结果。include调用其他配置文件中定义的配置信息。pam配置工具authselectRHEL8引入了authselect工具来统一管理 PAM 和 NSS 配置,不要直接编辑system-auth 或 password-auth这两个文件是 authselect 的输出结果会被工具覆盖。# 查看当前 profileauthselect current# 使用 profile 自定义 feature如启用 faillock、with-sudo 等authselectselectsssd with-faillock--force# 自定义策略应放在 /etc/authselect/custom/ 下pam配置案例模块类型控制标志模块路径名称模块参数authsubstacksystem-authaccountrequiredpam_nologin.so/etc/pam.d/system-auth密码复杂度配置/etc/pam.d/system-auth是负责密码复杂度和密码锁定策略的配置文件.# 查看配置文件cat/etc/pam.d/system-auth密码策略分为:● 密码复杂度、● 口令锁定策略、● 口令重复次数限制、● 口令生存期配置## 编辑密码复杂度配置文件vim/etc/pam.d/system-auth将如下内容添加到配置文件的指定位置。注可根据现场实际情况在ucredit-1lcredit-1dcredit-1ocredit-1中任选三种参数对密码复杂度进行配置。●ucredit大写字母个数。●lcredit小写字母个数。●dcredit数字个数。●ocredit特殊字符个数。# ucredit大写字母个数# lcredit小写字母个数# dcredit数字个数# ocredit特殊字符个数# 大写 小写 数字 特殊字符 至少各有一个password requisite pam_cracklib.soucredit-1lcredit-1dcredit-1ocredit-1作用阶段模块是否必须模块名模块参数字段passwordrequisitepam_cracklib.soucredit-1 lcredit-1 dcredit-1解释模块作用阶段: 密码更改时。一票否决PAM 的一个模块专门用于检查密码的复杂度。 ucredit-1 密码中至少1个大写字母。 lcredit-1 密码中至少1个小写字母 dcredit-1 密码中至少1个数字。 ocredit-1 密码中至少一个特殊字符将代码框中的内容添加到下图中箭头指向的位置然后保存并退出。/etc/pam.d/system-auth配置账号锁定时间# 配置账号锁定时间为300秒auth required pam_tally2.sodeny5onerrfail no_magic_rootunlock_time300模块类型控制标志模块路径名称模块参数accountrequiredpam_tally2.sodeny5 onerrfail no_magic_root unlock_time300作用阶段必要条件 deny5 # 最大连续失败次数 onerrfail # 模块异常时拒绝访问 no_magic_root # root 用户同样受锁定限制 unlock_time300 # 锁定 5 分钟后自动解锁注其中unlock_time的单位为秒具体参数数值请根据现场实际情况进行设置。/etc/pam.d/system-auth配置口令重复次数限制# 配置口令重复次数为5次password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtokremember5模块类型控制标志模块路径名称模块参数passwordsufficientpam_unix.somd5 shadow nullok try_first_pass use_authtok remember5一票通过 md5 使用 MD5 # 加密算法推荐sha512 shadow \ # 启用影子密码安全必须 nullok \ # 允许空密码高风险建议禁用 try_first_pass \ # 复用认证阶段密码优化体验 use_authtok \ # 强制使用认证阶段密码安全必须 remember5 # 记录最近 5 次密码防复用注remember参数为口令重复次数请根据现场实际情况进行设置。/etc/login.defs新用户的口令安全默认策略配置文件/etc/login.defs文件定义了系统新用户及口令安全默认策略的配置.密码有效期配置vim /etc/login.defsPASS_MAX_DAYS90#// 口令最大有效天数PASS_MIN_DAYS0#// 口令最小有效天数PASS_MIN_LEN8#// 口令最少字符数PASS_WARN_AGE7#// 口令过期提前警告天数/etc/pam.d/login登录失败策略配置文件# deny3登录失败次数3次# lock_time300锁定300秒# even_deny_root root_unlock_time300root用户锁定300秒auth required pam_tally2.sodeny3lock_time300even_deny_rootroot_unlock_time300模块类型控制标志模块路径名称模块参数passwordsufficientpam_unix.somd5 shadow nullok try_first_pass use_authtok remember5一票通过 deny3登录失败次数3次 lock_time300锁定300秒 even_deny_root root_unlock_time300root用户锁定300秒生产案例:pam安全整改确认密码重用是否受限制禁止使用最近用过的x个密码己使用过的密码会被保存在/etc/security/opasswd下面# 查看密码重用次数是否限制grepremember /etc/pam.d/system-authvim /etc/pam.d/system-auth变更为password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtokremember5模块类型控制标志模块路径名称模块参数passwordsufficientpam_unix.sosha512 shadow nullok try_first_pass use_authtok remember5作用阶段: 修改密码时一票通过Unix密码验证模块 sha512 指定密码的哈希算法为SHA-512 shadow 使用shadow密码文件(通常位于/eetc/shadow)来获取加密的密码哈希。 nullok 允许用户没有密码(空密码)进行身份验证 try_first_pass PAM首先尝试使用用户上次提供的密码进行身份验证,而不是提示用户输入新密码 use_authtok PAM使用之前在身份验证过程中输入的密码作为认证令牌(authtok)。 remember5 禁止使用最近用过的5个密码己使用过的密码会被保存在 /etc/security/opasswd 下面确认root计算机用户默认组的GID是否为0# 确认root计算机用户默认组的GID是否为0idroot|grepuid0echotrue||echofailes确认SSH的MaxAuthTries(ssh最大尝试次数)是否配置为小于等于4# 查看SSH服务器允许的最大认证尝试次数cat/etc/ssh/sshd_config|grepMaxAuthTries#MaxAuthTries 6修改为MaxAuthTries 3limits.conf解除Linux进程数和线程数及文件打开数limits.conf是Linux系统资源限制配置文件允许开启的线程数量# 加大允许开启的线程数量vm.max_map_count262144系统中可同时打开的文件数# 系统中可同时打开的最大文件数目fs.file-max52706963# 单个进程可分配的最大文件数fs.nr_open52706963# 查看系统中可同时打开的最大文件数sysctlfs.file-max# 查看单进程可打开的最大文件数sysctlfs.nr_open配置用户或用户组资源限制参考: limits.conf配置文件说明配置文件在/etc/security/limits.conf配置项 (Item)含义常用场景 / 备注nofile最大打开文件数最常用。解决 “Too many open files” 报错。高并发 Web 服务如 Nginx、数据库建议设为 65535 或更高。nproc最大进程数防止因某个用户开启过多进程如程序 Bug 产生大量线程导致系统假死。memlock最大锁定内存允许进程将内存留在 RAM 中而不被 Swap 到磁盘。常用于 Elasticsearch、Oracle、Redis。msgqueuePOSIX 消息队列Message Queuecore核心转储文件大小程序崩溃时生成的 Core 文件大小限制。设为 0 禁止生成设为 unlimited 用于调试。stack最大栈大小限制线程栈空间。如果程序有极深递归可能需要调大。fsize最大文件大小限制用户能创建的单个文件最大体积防止日志爆掉磁盘。cpu最大 CPU 时间限制用户进程占用的 CPU 总时长分钟超时会被系统杀掉。maxlogins最大登录数限制同一个用户同时登录系统的次数。priority进程优先级设置用户进程默认的运行优先级Priority。nice最大 Nice 值允许用户调高进程优先级的范围-20 到 19。rtprio实时优先级实时系统中允许非特权进程设置的最大实时优先级。软限制是用户可以临时提高的而硬限制是管理员设置的上限不能被用户或进程改变针对用户(*表示所有用户)限制方法限制类型限制的值*代表针对所有用户soft: 软限制noproc是最大进程数11000*hard: 硬限制nofile是最大文件打开数4100*-为soft和hard全部限制noproc(最大进程数)1100*-nofile(最大文件打开数)4100修改Linux最大文件描述符及ulimit相关使用os的openfile值,建议加大。# 所有用户最大内存锁定的软限制为未限制## unlimited (Value)表示不设限制* soft memlock unlimited# 所有用户最大内存锁定的硬限制为未限制* hard memlock unlimited# 针对所有用户软限制最大进程数* soft noproc11000# 针对所有用户硬限制最大进程数* hard noproc11000# 针对所有用户软限制最大文件打开数* soft nofile65535# 针对所有用户硬限制最大文件打开数* hard nofile65535# 最大核心转储文件的大小为未限制* soft core unlimited * hard core unlimited软硬一起限制—生产示例# 最大核心转储文件的大小## unlimited (Value)表示不设限制* - core unlimited# *代表针对所有用户-表示软硬都限制noproc是最大进程数* - noproc1000000# *代表针对所有用户-表示软硬都限制nofile是最大文件打开数* - nofile1000000# *代表针对所有用户-表示软硬都限制memlock是最大内存锁定* - memlock32000# 所有用户的消息队列内存上限为 8MB* - msgqueue8192000使配置生效重启系统或者重新登录用户才会让/etc/security/limits.conf配置生效也可以通过重新加载PAM配置的方法让limits.conf配置热生效。重新加载 PAM 配置可能会导致当前用户的会话中断或其他不可预测的结果。# 重新加载 PAMPluggable Authentication Modules配置让limits.conf配置热生效sudosystemctl restart systemd-logind# 注销用户logout# 登录sshxxx查看配置生效后的限制数量# 查看所有值ulimit-n# 查看用户进程能够打开的最大文件数ulimit-n# 查看用户最大进程数ulimit-u# 查看虚拟内存大小ulimit-v# 查看CPU时间限制ulimit-t# 查看最大核心转储文件的大小ulimit-c