Linux 系统防暴力破解

rpm系统:

auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        required      pam_faillock.so preauth audit silent deny=5 even_deny_root unlock_time=300
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=300
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_faillock.so authsucc audit deny=5 even_deny_root unlock_time=300
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 retry=3 authtok_type= dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8 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     [success=1 default=ignore] 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 delay=2000000:如果认证失败,系统会强制延迟 2000000 微秒(即 2 秒)再返回失败结果。这能有效拖慢暴力破解者的尝试速度。
  • auth required pam_faillock.so preauth audit silent deny=5 even_deny_root unlock_time=300(核心安全策略) 这是登录前的预检查。
    • preauth:在密码校验前检查账户是否已被锁定。
    • deny=5:连续失败 5 次就触发锁定。
    • even_deny_root:连 root 超级管理员也不例外,失败 5 次同样会被锁定。
    • unlock_time=300:锁定 300 秒(5 分钟)后自动解锁。
  • auth sufficient pam_fprintd.so:尝试使用指纹识别。sufficient 的意思是,如果指纹验证成功,直接通过,不再往下执行;如果失败,则继续往下走密码验证。
  • auth sufficient pam_unix.so try_first_pass:使用传统的本地密码(/etc/shadow)进行验证。try_first_pass 表示优先使用前面模块(如指纹)已经获取的密码,避免重复输入。
  • auth [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=300:如果上面的密码验证失败了,就会走到这一行。它负责记录失败次数,一旦达到 5 次,就正式将账户锁定 5 分钟。
  • auth requisite pam_succeed_if.so uid >= 1000 quiet_success:限制 UID 小于 1000 的系统账户不能通过常规方式登录(通常只有普通用户的 UID 是 1000 及以上)。requisite 表示如果条件不满足,立刻返回失败。
  • auth sufficient pam_faillock.so authsucc audit deny=5 even_deny_root unlock_time=300:如果密码验证成功,走到这一行。它的作用是清除该用户之前的失败记录,将计数器归零。
  • 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 retry=3 authtok_type= dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8 enforce_for_root(密码复杂度强制要求)
    • minlen=8:密码长度至少 8 位。
    • dcredit=-1:至少包含 1 个数字。
    • lcredit=-1:至少包含 1 个小写字母。
    • ucredit=-1:至少包含 1 个大写字母。
    • ocredit=-1:至少包含 1 个特殊字符。
    • enforce_for_root:即使是 root 用户修改密码,也必须遵守上述复杂度要求。
    • retry=3:输错格式允许重试 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 [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid:如果当前服务是 crond(定时任务),则跳过下一行(pam_unix.so),避免定时任务执行时产生不必要的日志或干扰。
  • session required pam_unix.so:常规的会话设置,如记录登录日志等。

debian系统:

common-auth
auth    [default=ignore]  pam_faillock.so preauth silent audit deny=5 even_deny_root unlock_time=300
auth    [success=1 default=ignore]  pam_unix.so nullok
auth    [default=die]     pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=300
auth    sufficient        pam_faillock.so authsucc audit
auth    requisite         pam_deny.so
auth    required          pam_permit.so
auth    optional          pam_cap.so

common-password
password        requisite       pam_pwquality.so retry=3 minlen=8 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 enforce_for_root
password        [success=1 default=ignore]      pam_unix.so obscure sha512
password        requisite                       pam_deny.so
password        required                        pam_permit.so

common-account
account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so
account requisite                       pam_deny.so
account required                        pam_permit.so
account required      pam_faillock.so

解释:

一、 /etc/pam.d/common-auth(认证与登录失败锁定)
此文件控制用户的身份验证过程以及登录失败后的锁定策略。

auth [default=ignore] pam_faillock.so preauth silent audit deny=5 even_deny_root unlock_time=300
   作用:预检模块(Pre-authentication)。在用户输入密码之前执行,检查该用户是否因为之前连续失败 5 次而处于锁定状态。
   参数解析:
     preauth:表示这是认证前的检查。
     silent:静默模式,不向用户提示“账号已锁定”等详细信息(防止攻击者通过提示信息枚举用户名)。
     audit:将详细的锁定信息记录到系统日志中。
     deny=5:连续失败 5 次触发锁定。
     even_deny_root:即使是 root 用户,连续失败 5 次也会被锁定。
     unlock_time=300:锁定 300 秒(5分钟)后自动解锁。
     [default=ignore]:控制标志。如果该模块返回非成功状态(例如发生错误),PAM 会忽略这个结果,继续向下执行下一行。

auth [success=1 default=ignore] pam_unix.so nullok
   作用:标准的 Linux 密码验证模块,负责核对用户输入的密码与 /etc/shadow 中加密后的密码是否匹配。
   参数解析:
     [success=1 default=ignore]:这是 PAM 栈跳转的核心。如果密码验证成功(success),则跳过接下来的 1 行(即跳过下面的 authfail 记录失败模块),直接执行 authsucc;如果失败,则忽略该结果,继续向下执行。
     nullok:允许密码为空的用户登录(如果不想要这个特性,可以删掉它)。

auth [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=300
   作用:失败处理模块。只有当上一行的 pam_unix.so 验证密码失败时,才会执行到此行。
   参数解析:
     authfail:表示这是认证失败后的处理。它会将本次失败记录到 /var/run/faillock/ 目录下的用户计数文件中。
     [default=die]:控制标志。如果记录失败时发生任何错误,PAM 会立即终止整个认证流程(die),直接拒绝登录。

auth sufficient pam_faillock.so authsucc audit
   作用:成功处理模块。只有当 pam_unix.so 验证密码成功时,才会执行到此行。
   参数解析:
     authsucc:表示认证成功。它的核心作用是清除该用户之前的失败登录计数,防止历史失败记录导致误锁定。
     sufficient:控制标志。表示只要这一行执行成功,整个认证栈就立刻返回成功,不再向下执行后面的 pam_deny.so 等兜底模块。

auth requisite pam_deny.so
   作用:兜底拒绝模块。如果前面的密码验证失败,且 authsucc 没有被执行到,流程就会走到这里。requisite 表示无条件拒绝访问,并立即返回失败结果。

auth required pam_permit.so
auth optional pam_cap.so
   作用:系统默认的兜底允许模块和 Linux 能力(Capabilities)模块。在正常的 faillock 流程中,这两行通常不会被执行到(因为成功被 authsucc 拦截,失败被 pam_deny.so 拦截)。

二、 /etc/pam.d/common-password(密码复杂度策略)
此文件仅在用户修改密码(如执行 passwd 命令)时生效。

password requisite pam_pwquality.so retry=3 minlen=8 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 enforce_for_root
   作用:密码复杂度检查模块。在写入新密码前,强制校验新密码是否符合安全规范。
   参数解析:
     requisite:如果密码不符合要求,立即拒绝修改,不再往下执行。
     retry=3:允许用户有 3 次机会输入符合要求的新密码。
     minlen=8:密码最小长度为 8 位。
     dcredit=-1:必须包含至少 1 个数字。
     lcredit=-1:必须包含至少 1 个小写字母。
     ucredit=-1:必须包含至少 1 个大写字母。
     ocredit=-1:必须包含至少 1 个特殊字符。
     enforce_for_root:即使是 root 用户修改密码,也必须遵守上述复杂度要求。

password [success=1 default=ignore] pam_unix.so obscure sha512
   作用:实际的密码写入模块。将符合复杂度的新密码加密(sha512)后写入 /etc/shadow。
   参数解析:
     [success=1 default=ignore]:如果密码修改成功,跳过下一行(pam_deny.so),直接结束流程。

password requisite pam_deny.so
password required pam_permit.so
   作用:标准的兜底拒绝与允许模块。

三、 /etc/pam.d/common-account(账户有效性检查)
此文件在用户通过密码验证后,进一步检查账户是否具备访问权限。

account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
   作用:检查账户是否过期、是否被锁定(如 passwd -l 锁定)等基础状态。

account requisite pam_deny.so
account required pam_permit.so
   作用:标准的兜底拒绝与允许模块。

account required pam_faillock.so
   作用:账户锁定状态二次校验。
   为什么需要它? 在 common-auth 阶段,preauth 检查了锁定状态;但当用户成功登录后,系统还需要在 account 阶段再次确认该账户没有被锁定,这是 pam_faillock 完整生效的必要条件。                                     

Geovia Surpac、Whittle 与 MineSched 完全指南### 课程主页翻译(精准专业版)**格式信息**MP4 视频英文(含字幕)**总课时**:35 讲(7 小时 ) | **文件大小**:4.8GB## 通过 Surpac、Whittle 与 MineSched 软件## 学习实用的矿山规划技能### 你将学到- 掌握 Geovia Surpac 操作能力- 掌握 Geovia Whittle 操作能力- 掌握 Geovia MineSched 操作能力- 提供矿山规划与矿山进度安排免费咨询### 学习要求- 具备矿山基本概念基础### 课程介绍本套综合课程基于行业主流软件 **Surpac、Whittle、MineSched**,提供现代矿山规划的深度实战教学。无论你是矿山从业者、学生还是技术顾问,都能从零掌握矿山全流程设计、优化与进度编排的核心技能。课程从矿山规划基础讲起,逐步带你掌握行业通用的专业工具:- 使用 **Surpac** 导入地质数据、构建块体模型、进行露天矿设计- 使用 **Whittle** 基于经济参数进行露天坑优化,生成坑体轮廓与战略规划成果- 使用 **MineSched** 制定短期与长期生产计划,融入实际约束条件与报表工具通过真实案例与分步教程,你不仅能熟练使用各款工具,更能理解它们**如何协同工作**,形成一套完整流畅的矿山规划工作流。### 适合人群- 所有对现代矿山规划工具感兴趣的人员- 矿山工程师与规划师- 地质师与资源建模师- 矿业及地质工程专业学生与毕业生- 技术顾问与分析师A Complete Guide to Geovia Surpac, Whittle, and MineSched
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值