资讯动态

银河麒麟V10桌面系统登录安全加固:密码策略、失败锁定与SSH防护

发布时间:2026/10/23 7:12:18 来源:尧图企业网站定制
接手过银河麒麟V10桌面系统的管理员大多会有同一个感受服务器的安全基线文档满天飞桌面机的登录安全和密码策略却往往管得比较粗。大家知道要设密码可很少有人把登录失败锁定、密码复杂度、图形锁屏入口这些点串成一套完整策略。我在运维里见过一个反复出现的通病办公机上的普通账号用姓名缩写加123当密码账号永不过期还开着能被内网任意机器访问的远程登录服务结果遭遇一轮密码扫描机器直接沦陷。问题不在系统漏洞而在登录和密码这两个最基础的关口根本没有留下防线。这篇指南是银河麒麟V10桌面版系统管理员视角的实战配置笔记覆盖密码质量、密码老化、登录失败锁定、LightDM自动登录、UKUI锁屏、SSH加固与sudo/su边界等内容适合所有需要批量维护V10桌面机的运维和IT支持人员。我以Debian系构建的V10桌面版为例PAM配置集中在/etc/pam.d/common-*系列如果你的版本是RHEL系风格把路径换成system-auth即可原理完全一致。1. 桌面版V10的账户安全现状为什么先动登录和密码1.1 桌面机往往是被忽视的突破口很多单位对服务器的账户安全抓得紧对桌面机却基本处于“散养”状态。服务器上会有账号周期巡检、强密码要求、登录失败锁定桌面机往往装完系统、分好账号就再也不管。但桌面机恰恰是内网渗透里最喜欢碰的一类资产它长期在线防护能力弱而且一旦被拿下一个普通用户攻击者就可以用它做跳板扫描内网、尝试横向移动。更麻烦的是桌面机的使用者不是专业IT人员你告诉他“密码要设复杂一点”他转头就设置成公司名加年份满脑子记不住。我在实际维护中看到的问题高度集中在四点第一密码长度和复杂度没有任何强制用户想怎么设就怎么设第二密码永不过期有人从入职到离职几年没改过密码第三连续输错密码没有锁定机制攻击者可以慢慢爆破第四远程登录服务和自动登录开着等于把大门钥匙挂在了门框上。这四点单看都是小事叠在一起就是一台内网裸奔机器。所以这篇指南的顺序也很明确先堵住口令相关的弱项再收紧各个登录入口最后用一套验证流程确认策略真的生效。1.2 一次配置多个入口生效理解PAM银河麒麟V10桌面版的登录认证由PAM统一管理。PAM的全称是“可插拔认证模块”你可以把它理解成机场安检通道不管你是坐国内航班还是国际航班进安检口都要过同一套流程刷证件、扫行李、核对登机牌。对应到系统里图形登录、SSH登录、终端登录、sudo提权本质上都是“不同的航班”但它们都会经过PAM这条安检流水线而安检规则集中写在几份配置文件里。V10桌面版Debian系的PAM核心配置在/etc/pam.d/目录下重点这几份配置文件作用改动风险common-auth认证主流程验证密码、记录失败锁定高所有登录入口都会受影响common-account账户层检查比如账户是否过期、是否被锁定高配置错误可能谁都登不进common-password修改密码时的质量检查和更新逻辑中影响passwd和图形改密common-session登录会话建立时的初始化动作中多用于挂载用户目录、日志后面要配的密码复杂度、登录失败锁定全都是通过改这些PAM文件生效的。这么做的好处是覆盖面广你改一处配置图形登录、SSH、终端、sudo全都统一执行不会出现“登录界面还在收弱密码终端却已经强制复杂密码”的割裂感。坏处也很直接改错了可能连root都登不进去。所以每次动PAM配置前一定要保留至少一个已建立好的root会话并且先备份原文件再开始操作。2. 密码策略落地从pwquality到login.defs再到chage2.1 复杂度的真正裁判是pam_pwquality很多人以为修改密码复杂度是改/etc/login.defs其实login.defs管的是密码老化周期比如最长使用多少天、过期前多少天提醒它不做复杂度校验。真正的复杂度检查由PAM模块pam_pwquality负责配置文件在/etc/security/pwquality.conf。先看一下当前配置grep -Ev ^#|^$ /etc/security/pwquality.conf如果是刚装好的系统大概率看到的是空输出或者被注释掉的默认行。我给出一份适用于办公环境的推荐配置逐行说明含义# 最小密码长度 minlen 12 # 至少包含1个数字负值表示“至少出现N次” dcredit -1 # 至少包含1个大写字母 ucredit -1 # 至少包含1个小写字母 lcredit -1 # 至少包含1个特殊字符 ocredit -1 # 最多允许连续3个相同字符例如 aaa maxrepeat 3 # 同一类字符最多连续出现4次例如 abcd1234 会被扣分 maxclassrepeat 4 # 新密码中不能包含用户名 reject_username # 提示重试次数 retry 3改完后执行vi /etc/security/pwquality.conf然后重启相关服务吗不需要。PAM模块的配置是每次认证时实时读取的改完文件立刻对新改密码操作生效。但是要注意一个关键点复杂度策略只影响“修改密码”这个动作不会回头强制检查存量密码。也就是说你配了minlen12但用户现有密码还是abc123它不会被自动判死只有用户下一次改密码时新密码才必须满足这些要求。想让存量密码也被强制洗一遍就得靠老化策略和chage命令。2.2 老化策略login.defs 管新建用户chage 管存量用户密码老化周期配置在/etc/login.defs里。V10桌面版刚装好的默认值通常是PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_WARN_AGE 799999等于永远不会过期这显然不行。办公场景我给的标准是最长使用90天最短使用7天防止用户改完立刻又改回旧密码过期前14天提醒。sed -i s/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/ /etc/login.defs sed -i s/^PASS_MIN_DAYS.*/PASS_MIN_DAYS 7/ /etc/login.defs sed -i s/^PASS_WARN_AGE.*/PASS_WARN_AGE 14/ /etc/login.defs但这里有个非常容易踩的坑login.defs只对之后“新建”的用户生效已经存在的用户不受影响。所以新策略落地后必须针对存量账号批量设置老化参数我用chage命令配合一个循环来搞定# 列出所有能登录系统的普通用户排除root和系统账号 for u in $(awk -F: ($3 1000 $1 ! nobody) {print $1} /etc/passwd); do chage -M 90 -m 7 -W 14 $u doneawk的条件可以根据现场情况调整有的环境普通用户UID从1000开始有的从1001开始先跑一遍看输出对不对再执行。执行完可以抽查一个账号chage -l username输出里Maximum number of days between password change应该是90Warning days before password expiration应该是14说明存量账号已经被纳入老化管理。2.3 用户习惯改不了就强制第一次登录改密就算设了90天过期用户也可能用passwd改完又改回原来的Name123!。这不是复杂度能完全解决的但可以让策略在“第一次登录”就强制改密。做法是把用户的密码过期日期设为0代表密码已过期下一次登录必须修改chage -d 0 username执行后用户无论是图形界面登录还是SSH登录都会被系统要求先设置新密码且新密码必须满足pam_pwquality的复杂度规则。这个操作特别适合给新发出去的机器设初始密码管理员设一个临时初始密码然后chage -d 0丢给使用者强制他改成自己记得住的强密码管理员自己也不知道最终密码这也是账号安全里比较推荐的做法。3. 登录失败锁定pam_faillock配置及几个容易翻车的顺序问题3.1 为什么不用脚本而是选PAM模块暴力破解的防御思路很简单连续输错N次就锁定一段时间。有人会写个Shell脚本监控日志看到失败次数多就封IP这个可以做但不够通用。更好的方案是在PAM层做登录失败锁定因为PAM覆盖所有认证入口不管你是图形界面登录、SSH还是终端只要是密码认证失败都逃不过这层计数。V10桌面版常用的模块是pam_faillock它在认证流程里分三个阶段工作preauth认证前先检查是否已被锁定、authfail认证失败时记录次数、authsucc认证成功后重置计数。3.2 标准配置步骤建议先备份cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bak cp /etc/pam.d/common-account /etc/pam.d/common-account.bak然后编辑/etc/pam.d/common-auth在pam_unix.so这行之前插入以下内容auth required pam_faillock.so preauth silent audit deny5 unlock_time900 auth [defaultdie] pam_faillock.so authfail silent audit deny5 unlock_time900 auth sufficient pam_faillock.so authsucc silent audit deny5 unlock_time900 auth [success1 defaultignore] pam_unix.so nullok_secure参数含义deny5表示连续失败5次锁定unlock_time900表示锁定900秒也就是15分钟。silent和audit一个是减少冗余输出一个是在审计日志里记录细节建议加上。这里要特别注意common-auth文件原本的内容里可能还有pam_deny.so、pam_permit.so这些行不用删只要把三行pam_faillock插在pam_unix.so之前即可原有流程顺序不要乱动。接着编辑/etc/pam.d/common-account在文件末尾追加一行account required pam_faillock.so这行的作用是让账户阶段也会检查锁定状态。改完后PAM配置即时生效不需要重启服务但已经建立的旧会话不受影响新登录才走新策略。3.3 三个最容易翻车的顺序问题我一开始配pam_faillock的时候翻过好几次车问题基本都出在顺序和位置。第一个坑把preauth放到了pam_unix.so后面。这样用户每次都得先走完整密码验证再检查锁定等于给爆破者留足了验证密码的机会锁定机制形同虚设。preauth必须在认证流程最前面。第二个坑authfail那行的控制标识写错。我见过有人写成required而不是[defaultdie]结果失败计数也能记但某些条件下认证结果判断会异常明明用户输对了密码却因为之前的失败记录被判定为认证失败。标准写法里[defaultdie]的含义是“一旦走到这行说明认证已失败直接终止本层认证”这个语义不要随意改。第三个坑文件里存在auth sufficient pam_permit.so这类“无条件放行”的行而且位置在pam_faillock之前。这样所有请求都会提前被放行后续的锁定检查根本不会执行。新装系统里通常没有这一行但如果你做过自定义或者装了某些一键加固脚本先检查一下确保没有类似的放行逻辑插在前面。3.4 锁定后怎么查看、解锁和看日志某个账号被锁定后用faillock命令查看faillock --user username如果确实有失败记录会看到When和Count等字段。确认无误后手动解锁faillock --reset --user username查看全局锁定相关日志V10桌面版的认证日志通常在/var/log/auth.loggrep faillock /var/log/auth.log | tail -50这里有个很实用的经验用户被锁定时输对的密码也会登录失败因为preauth阶段就直接拒绝了。如果你配置后发现某账号“密码明明是对的但登不进去”第一反应去看faillock --user八成是之前手滑输错了几次触发了锁定。这种问题在图形登录界面尤其常见因为用户以为的打错一次和系统统计的连续失败次数不一定一致。4. 登录入口的全面体检LightDM、锁屏、SSH与提权边界4.1 LightDM自动登录和访客登录必须关掉图形桌面登录在V10桌面版上默认由LightDM管理。安全配置里最容易被忽略的就是LightDM的自动登录和访客登录。自动登录意味着开机后直接进桌面根本不经过PAM认证前面配的锁定和复杂度等于自动失效访客登录则是给攻击者提供了一个无密码的临时入口虽然权限受限但足够做信息收集和内网探测了。检查/etc/lightdm/lightdm.conf重点关注这几项[Seat:*] autologin-user autologin-user-timeout0 allow-guestfalseautologin-user一定要留空或者直接把行删掉allow-guest必须设为false。另外还要注意有的管理员会习惯性地在/etc/lightdm/lightdm.conf.d/目录下写自定义配置片段这些片段优先级可能覆盖主配置检查时要一起看grep -rEv ^#|^$ /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.d/ 2/dev/null如果确认有autologin-userxxx这一行去掉后重启lightdm服务systemctl restart lightdm4.2 UKUI桌面锁屏与唤醒认证密码策略做得再好用户离开座位不锁屏也是白搭。V10桌面版默认是UKUI桌面环境锁屏设置可以通过gsettings调整。我的建议是设置两分钟无操作进入待机并立即锁屏唤醒时必须重新输密码# 设置无操作延迟秒 gsettings set org.ukui.screensaver idle-delay 120 # 启用锁屏 gsettings set org.ukui.screensaver lock-enabled true # 待机后不额外延迟立即锁定 gsettings set org.ukui.screensaver lock-delay 0不同版本的UKUI桌面schema名称可能有差异有的版本键名是org.ukui.screensaver.lock-enabled有的是org.ukui.screensaver idle-delay。如果执行gsettings set时报错提示找不到schema可以用dconf-editor图形化工具进去搜screensaver确认准确的键名再改。批量部署时可以写个脚本把所有办公机的锁屏策略统一起来。有一个细节容易被忽略如果用户选择“休眠”而不是“待机”唤醒后系统可能直接回到桌面而不要求密码。要让休眠唤醒也走认证需要确认电源管理设置里对“从休眠恢复”这个动作要求输密码。这一步不是标准配置项建议在发机前实际休眠一次、唤醒一次做验证。4.3 SSH远程管理入口的收敛桌面机虽然以图形界面为主但很多管理员喜欢开SSH远程维护。SSH一旦开放就是最直接的暴力破解入口。编辑/etc/ssh/sshd_configPermitRootLogin no MaxAuthTries 3 LoginGraceTime 30 PubkeyAuthentication yes PasswordAuthentication no这里我要特别提醒如果还没有部署SSH公钥不要急着把PasswordAuthentication改成no否则你会把自己锁在外面。建议流程是先把公钥复制到目标机器验证公钥登录没问题再关掉密码登录。改完配置执行systemctl restart sshMaxAuthTries 3配合前面的pam_faillockSSH的暴力破解会被双保险限制住同一连接最多尝试3次密码错误累计5次又会锁定账号。不过要注意pam_faillock和MaxAuthTries的计数逻辑不完全一样pam_faillock是跨连接累计的这更好因为攻击者断开重连也逃不掉。4.4 sudo/su 的权限边界要单独收紧密码策略控制了登录但登录进来之后普通用户能不能提权到root也要纳入安全基线。V10桌面版里绝大多数用户是普通账号可很多办公机器为了让员工能装软件直接给了一堆sudo权限这等于把“普通用户”升级成了“准管理员”。检查当前拥有sudo权限的用户grep -E ^sudo|^wheel /etc/group原则是最小化只保留确实需要做系统维护的账号。如果某些用户只是偶尔需要执行一两条管理命令可以考虑限定命令范围而不是放行全部。另外su命令默认允许任何人切换到root只要知道root密码。如果不希望普通用户随意su可以配置pam_wheel.so只允许指定组使用su# /etc/pam.d/su auth required pam_wheel.so groupsudo这样只有sudo组的成员能su到root其他用户会被拒绝。配置前先确认组名是sudo还是wheelV10桌面版默认通常是sudo组。5. 配置完成后的五分钟验证清单与三个高频坑5.1 五分钟验证流程每次配完登录安全和密码策略我都会强制自己做一遍完整验证否则心里不踏实。验证流程如下用passwd给测试账号设置一个弱密码例如123456看系统是否拒绝。如果拒绝了输出里通常会有BAD PASSWORD之类的提示。设置一个满足复杂度的密码比如Kylin2024Cloud确认修改成功。在一个终端里连续输错5次密码然后输入正确密码确认仍然被拒绝进程退出码非0。用faillock --user 测试账号查看锁定记录确认计数为5然后faillock --reset解锁。在图形登录界面重复第3步确认图形登录也走锁定策略。如果是远程管理场景再从SSH连一次确认MaxAuthTries和pam_faillock都正常。查日志确认没有大量认证失败的异常记录。这套流程跑完基本可以确定策略是真的生效了而不是只写进了配置文件。5.2 坑位一改了老化策略现有用户却永远不弹改密提示这是最经常被问的问题。login.defs改成了90天结果老用户的密码状态还是never完全没有到期倒计时。原因前面提过login.defs只对新建用户生效。解决办法就是批量执行chage这段命令建议直接写进你的运维脚本里for u in $(awk -F: ($3 1000 $1 ! nobody) {print $1} /etc/passwd); do chage -M 90 -m 7 -W 14 $u done执行后用passwd -S 用户名查看状态出现P 01/01/2025 0 90 7 -1这串输出才说明老化策略已经覆盖到该账号。5.3 坑位二登录密码改了一解锁就弹“密钥环”框很多用户改了登录密码之后下一次解锁桌面会弹出一个窗口要求输入旧密码才能解锁“密钥环”。这个跟登录安全和密码策略无关它是桌面环境自带的密钥环机制在独立保存密码和证书。用户登录密码变了密钥环密码还停留在旧状态于是系统要求用户手动更新一次。从安全角度这不是坏事但它会极大影响用户对密码策略的配合度。处理办法有两种一是在弹出的窗口里输入旧登录密码让密钥环正常解锁并自动更新到新密码二是如果用户觉得麻烦可以删除当前用户下的密钥环文件重新初始化rm -rf ~/.local/share/keyrings/*删除后重启会话系统会重新创建密钥环。这个操作会让Wi-Fi密码、浏览器保存的凭据等需要重新录入建议给用户提前说明不要直接删用户数据。5.4 坑位三PAM策略改了图形登录却“不锁头”如果你按第3章的配置改完后终端登录已经能正常锁定但图形登录界面连续输错却不受影响大概率是LightDM的PAM配置文件没有走common-auth。排查方法很简单看/etc/pam.d/lightdm这个文件里面有没有include common-auth这一行。V10桌面版默认是有的但如果别人改过或者你装的是旧版本可能缺失。补上这一行然后重启LightDM即可。还有一种可能图形登录界面用的不是LightDM自带的greeter而是切换到xrdp、VNC这类远程桌面服务登录。这类服务有自己独立的PAM配置pam_faillock覆盖不到是正常现象。对远程桌面入口我的建议是不要直接暴露到网络上要么绑定管理网段要么通过跳板机访问不要指望一套PAM配置解决所有入口。5.5 应急恢复预案配置PAM最怕的就是把自己锁在门外。以防万一每次改动前要有一个可执行的应急方案。我的惯例是在机器上保留一个已经验证过的root会话不关闭同时在另一台机器上保持SSH root登录可用。万一真的把PAM改崩溃了先尝试用普通账号登录sudo su恢复备份如果连普通账号都登不进就利用物理控制台切到tty2试试本地root登录再不行重启进入恢复模式用维护Shell恢复/etc/pam.d/common-auth.bak。关键点其实不是“怎么恢复”而是“提前备份”。只要备份在恢复永远是几分钟的事。我见过太多直接在vi里改完PAM就关闭会话的案例最后只能拿Live系统去挂载硬盘救场这种血泪经验写出来希望后来的人别再踩。配置这种事最怕改完就忘了自己改过什么。我现在每台V10桌面机做完这套配置都会把/etc/pam.d/common-*的改动差异用diff导出保存命令记录到/root/security-baseline.txt同时保留.bak文件。看上去多花两分钟下次系统升级、重装或者排查问题直接照方抓药能省下好几个晚上的时间。安全配置从来不是“配完就一劳永逸”桌面机用户习惯一变账号出口就变过几个月回头看一眼策略总是能找到新的可收紧的地方。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑