本地用户密码策略
本地用户密码策略
功能简介
本地用户密码策略用于约束 FortiGate 防火墙本地用户的密码复杂度、密码有效期和密码复用行为。相比早期版本只控制过期时间的本地用户密码策略,FortiOS 7.4.1 及后续版本可以进一步限制最小长度、大小写字母、数字、特殊字符、与旧密码不同的字符数量,以及是否允许重复使用旧密码。
该功能适用于使用 config user local 创建的本地防火墙用户,例如防火墙策略认证、Captive Portal、SSL VPN 或其他引用本地用户/用户组的认证场景。它不等同于系统管理员密码策略,管理员密码策略仍然通过 config system password-policy 配置。
配置命令
创建密码策略
config user password-policy
edit <policy_name>
set minimum-length <8-128>
set min-lower-case-letter <0-128>
set min-upper-case-letter <0-128>
set min-non-alphanumeric <0-128>
set min-number <0-128>
set min-change-characters <0-128>
set expire-status {enable | disable}
set expire-days <0-999>
set warn-days <0-30>
set expired-password-renewal {enable | disable}
set reuse-password {enable | disable}
set reuse-password-limit <0-20>
next
end绑定到本地用户
密码策略创建后,需要在本地用户上通过 passwd-policy 关联,才会对该用户生效。
config user local
edit <user_name>
set type password
set passwd-policy <policy_name>
next
end参数说明
minimum-length:密码最小长度,范围为 8~128,默认值为 8。min-lower-case-letter:密码中至少包含的小写字母数量,范围为 0~128,默认值为 0。min-upper-case-letter:密码中至少包含的大写字母数量,范围为 0~128,默认值为 0。min-non-alphanumeric:密码中至少包含的非字母数字字符数量,范围为 0~128,默认值为 0。min-number:密码中至少包含的数字数量,范围为 0~128,默认值为 0。min-change-characters:新密码中至少包含多少个旧密码中不存在的字符,范围为 0~128,默认值为 0。如果同时配置了reuse-password,该参数优先级更高。expire-status:是否启用密码过期机制,默认值为disable。expire-days:密码有效期,单位为天,范围为 0~999,默认值为 180。只有启用expire-status后,才会按该参数强制用户修改密码。warn-days:密码到期前多少天提示用户修改密码,范围为 0~30,默认值为 15。expired-password-renewal:是否允许用户在密码已经过期后自行更新密码,默认值为disable。reuse-password:是否允许重复使用旧密码,默认值为enable。reuse-password-limit:允许重复使用旧密码的次数,范围为 0~20,默认值为 0。设置为 0 时表示不限制重复使用次数。
配置示例
以下示例创建一个名为 strict-local-user 的本地用户密码策略,并将其绑定到用户 pwd-test1。
config user password-policy
edit "strict-local-user"
set minimum-length 8
set min-lower-case-letter 1
set min-upper-case-letter 1
set min-non-alphanumeric 3
set min-number 3
set min-change-characters 2
set expire-status enable
set expire-days 90
set warn-days 7
set expired-password-renewal enable
set reuse-password disable
next
end
config user local
edit "bing"
set type password
set passwd-policy "strict-local-user"
next
end当新密码满足策略时,可以正常提交:
config user local
edit "bing"
set passwd CCbcset123!!!
next
end当新密码不满足策略时,CLI 会拒绝提交并提示缺少的复杂度条件。例如以下密码只有 2 个数字,不满足 min-number 3:
config user local
edit "bing"
set passwd CCbXsetp23!!!
New password must conform to the password policy enforced on this user:
...
Command fail. Return code -49实际提示中会列出未满足的条件,例如最小长度、大小写字母数量、特殊字符数量、数字数量、与旧密码不同的字符数量,以及是否重复使用了旧密码。
升级注意事项
从 FortiOS 7.4.0 升级到 7.4.1 或后续版本后,原有 config user password-policy 中的 expire-days、warn-days、expired-password-renewal 配置会保留,但需要通过 CLI 启用 expire-status,密码过期机制才会真正生效。
可以在升级后检查已有策略:
config user password-policy
edit <policy_name>
get
next
end如果看到 expire-status: disable,即使 expire-days 已经配置,FortiGate 也不会按照该天数强制本地用户修改密码。需要显式启用:
config user password-policy
edit <policy_name>
set expire-status enable
next
endGUI 行为
管理员修改本地用户密码
在 GUI 中进入“用户与认证 → 设置用户”,编辑本地用户并点击“修改密码”时,如果新密码不符合该用户绑定的密码策略,界面会显示对应的复杂度告警,并指出需要修正的条件。例如密码中特殊字符数量不足时,会提示需要满足 min-non-alphanumeric 的要求。

防火墙认证用户修改过期密码
用户通过防火墙策略认证/Captive Portal 认证时,如果本地用户密码已经过期,FortiGate 会提示用户修改密码。新密码提交时同样会按该用户绑定的密码策略检查。

SSL VPN 用户修改过期密码
用户通过 SSL VPN 门户登录时,如果本地用户密码已经过期,也会进入密码更新流程。新密码满足策略后,用户才能继续登录 SSL VPN 门户。
