Linux 系统防暴力破解 📅 2026/8/5 18:04:11 rpm系统auth required pam_env.so auth required pam_faildelay.so delay2000000 auth required pam_faillock.so preauth audit silent deny5 even_deny_root unlock_time300 auth sufficient pam_fprintd.so auth sufficient pam_unix.so try_first_pass auth [defaultdie] pam_faillock.so authfail audit deny5 even_deny_root unlock_time300 auth requisite pam_succeed_if.so uid 1000 quiet_success auth sufficient pam_faillock.so authsucc audit deny5 even_deny_root unlock_time300 auth required pam_deny.so account required pam_faillock.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid 1000 quiet account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry3 authtok_type dcredit-1 lcredit-1 ucredit-1 ocredit-1 minlen8 enforce_for_root password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session [success1 defaultignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so debian系统解释️ 1. auth认证阶段这个阶段负责验证“你是谁”也就是校验密码或生物特征。auth required pam_env.so加载用户的环境变量。auth required pam_faildelay.so delay2000000如果认证失败系统会强制延迟 2000000 微秒即 2 秒再返回失败结果。这能有效拖慢暴力破解者的尝试速度。auth required pam_faillock.so preauth audit silent deny5 even_deny_root unlock_time300核心安全策略这是登录前的预检查。preauth在密码校验前检查账户是否已被锁定。deny5连续失败 5 次就触发锁定。even_deny_root连 root 超级管理员也不例外失败 5 次同样会被锁定。unlock_time300锁定 300 秒5 分钟后自动解锁。auth sufficient pam_fprintd.so尝试使用指纹识别。sufficient的意思是如果指纹验证成功直接通过不再往下执行如果失败则继续往下走密码验证。auth sufficient pam_unix.so try_first_pass使用传统的本地密码/etc/shadow进行验证。try_first_pass表示优先使用前面模块如指纹已经获取的密码避免重复输入。auth [defaultdie] pam_faillock.so authfail audit deny5 even_deny_root unlock_time300如果上面的密码验证失败了就会走到这一行。它负责记录失败次数一旦达到 5 次就正式将账户锁定 5 分钟。auth requisite pam_succeed_if.so uid 1000 quiet_success限制 UID 小于 1000 的系统账户不能通过常规方式登录通常只有普通用户的 UID 是 1000 及以上。requisite表示如果条件不满足立刻返回失败。auth sufficient pam_faillock.so authsucc audit deny5 even_deny_root unlock_time300如果密码验证成功走到这一行。它的作用是清除该用户之前的失败记录将计数器归零。auth required pam_deny.so最后的兜底模块。如果前面所有的认证方式都走不通直接拒绝登录。 2. account账户检查阶段认证通过后检查这个账户当前是否被允许登录。account required pam_faillock.so核心联动再次检查账户的锁定状态。如果前面 auth 阶段发现账户已经被锁这里会直接拦截登录。account required pam_unix.so检查账户的常规状态比如密码是否过期、账户是否被手动禁用等。account sufficient pam_localuser.so如果是本地用户存在于/etc/passwd直接放行。account sufficient pam_succeed_if.so uid 1000 quiet如果是 UID 小于 1000 的系统账户直接放行系统服务运行需要。account required pam_permit.so兜底放行允许通过。 3. password密码修改策略阶段当用户执行passwd命令修改密码时由这个模块接管。password requisite pam_pwquality.so try_first_pass local_users_only retry3 authtok_type dcredit-1 lcredit-1 ucredit-1 ocredit-1 minlen8 enforce_for_root密码复杂度强制要求minlen8密码长度至少 8 位。dcredit-1至少包含 1 个数字。lcredit-1至少包含 1 个小写字母。ucredit-1至少包含 1 个大写字母。ocredit-1至少包含 1 个特殊字符。enforce_for_root即使是 root 用户修改密码也必须遵守上述复杂度要求。retry3输错格式允许重试 3 次。password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok使用 SHA512 强加密算法将新密码写入/etc/shadow文件。password required pam_deny.so兜底拒绝。️ 4. session会话管理阶段用户成功登录后系统为其建立运行环境。session optional pam_keyinit.so revoke初始化用户的内核密钥环退出时撤销。session required pam_limits.so加载/etc/security/limits.conf中的资源限制如最大打开文件数等。-session optional pam_systemd.so将用户会话注册到 systemd 中方便系统管理用户进程。前面的-表示即使该模块加载失败也不会影响登录。session [success1 defaultignore] pam_succeed_if.so service in crond quiet use_uid如果当前服务是crond定时任务则跳过下一行pam_unix.so避免定时任务执行时产生不必要的日志或干扰。session required pam_unix.so常规的会话设置如记录登录日志等。debian系统/etc/pam.d/common-auth auth required pam_faillock.so preauth audit silent deny5 even_deny_root unlock_time300 auth required pam_faildelay.so delay2000000 auth sufficient pam_unix.so try_first_pass auth [defaultdie] pam_faillock.so authfail audit silent deny5 even_deny_root unlock_time300 auth required pam_deny.so auth sufficient pam_faillock.so authsucc audit silent deny5 even_deny_root unlock_time300 /etc/pam.d/common-account account required pam_faillock.so account required pam_unix.so /etc/pam.d/common-password password requisite pam_pwquality.so retry3 minlen8 dcredit-1 lcredit-1 ucredit-1 ocredit-1 enforce_for_root password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok password required pam_deny.so解释️ 1. /etc/pam.d/common-auth登录认证阶段这个文件决定了用户登录时系统如何验证身份并处理失败情况。auth required pam_faillock.so preauth audit silent deny5 even_deny_root unlock_time300作用这是登录前的“预检查”。当用户尝试登录时系统会先检查该账户是否已经被锁定。参数deny5表示连续失败 5 次触发锁定even_deny_root表示 root 超级管理员也不例外unlock_time300表示锁定 300 秒5 分钟后自动解锁。auth required pam_faildelay.so delay2000000作用防暴力破解的延迟机制。如果认证失败系统会强制等待 2000000 微秒即 2 秒再返回失败结果有效拖慢黑客的密码猜测速度。auth sufficient pam_unix.so try_first_pass作用使用系统本地的传统密码/etc/shadow进行验证。sufficient的意思是如果密码正确直接通过不再往下执行try_first_pass表示尽量复用前面模块获取的密码避免用户重复输入。auth [defaultdie] pam_faillock.so authfail audit silent deny5 even_deny_root unlock_time300作用如果上面的密码验证失败了就会走到这一行。它负责记录失败次数。[defaultdie]表示如果该模块执行出错则直接终止认证。一旦失败次数达到 5 次就正式将账户锁定 5 分钟。auth required pam_deny.so作用兜底拒绝模块。如果前面的认证逻辑都没通过直接拒绝登录。auth sufficient pam_faillock.so authsucc audit silent deny5 even_deny_root unlock_time300作用如果密码验证成功走到这一行。它的作用是清除该用户之前的失败记录将失败计数器归零。 2. /etc/pam.d/common-account账户检查阶段认证通过后系统会检查这个账户当前是否被允许登录。account required pam_faillock.so作用与 auth 阶段联动再次检查账户的锁定状态。如果账户处于被锁定状态这里会直接拦截登录。account required pam_unix.so作用检查账户的常规状态比如密码是否过期、账户是否被手动禁用等。 3. /etc/pam.d/common-password密码修改策略阶段当用户执行passwd命令修改密码时由这个模块接管。password requisite pam_pwquality.so retry3 minlen8 dcredit-1 lcredit-1 ucredit-1 ocredit-1 enforce_for_root作用强制实施高强度的密码复杂度策略。参数minlen8要求密码至少 8 位dcredit-1至少 1 个数字、lcredit-1至少 1 个小写字母、ucredit-1至少 1 个大写字母、ocredit-1至少 1 个特殊字符enforce_for_root表示即使是 root 用户修改密码也必须遵守上述复杂度要求。password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok作用使用 SHA512 强加密算法将新密码写入/etc/shadow文件。use_authtok表示直接使用前面pam_pwquality模块验证过的新密码。password required pam_deny.so作用兜底拒绝模块。