拓冰建站拓冰建站
首页 / 资讯中心 / 正文

国产麒麟系统等保整改实战:身份鉴别与安全审计配置指南

先问一句你是不是也接到过这种活儿——单位里一台装了国产麒麟系统的服务器领导说“要做等保”然后把配置任务丢给你留下一句“下周测评机构来”。等保到底查什么、麒麟系统该改哪些配置、哪些坑必须避开很多人第一次接触时都是一头雾水。我这几年经手过好几轮国产化服务器的等保整改银河麒麟V10、中标麒麟都碰过也和测评机构来回拉扯过。这篇文章把我在实际操作中总结的配置思路、具体命令、踩坑记录一次说清楚目标是让拿到一台国产麒麟服务器就能直接上手整改的人看完心里有底。1. 先搞清楚等保配置到底要配什么思路与准备1.1 等保测评到底查什么很多人的第一反应是“等保就是装个杀毒软件、改个密码”真这么想的话测评现场大概率会翻车。等保2.0的基本要求主要覆盖安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心这几个层面。对于一台服务器操作系统来说测评机构最常翻的点集中在身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范这些小节。翻译成人话就是你的系统能不能确认“谁在登录”、能不能限制“谁能干什么”、能不能记录“谁做了什么事”、能不能抵抗“常见的攻击手法”。国产麒麟系统基于Linux内核所以很多配置思路和RHEL/CentOS系操作系统是相通的但细节上有区别。比如PAM模块的配置文件路径、auditd的默认规则位置、firewalld和SELinux的默认状态都可能和你以前熟悉的发行版不一样。做整改之前先把系统版本摸清楚我用的命令是cat /etc/os-release cat /etc/kylin-release uname -a目前市面上主流的国产麒麟系统大多是银河麒麟V10ARM版或X86版都有中标麒麟在存量设备里也不少。两者命令风格接近但个别配置文件路径有差异下面所有操作我都按银河麒麟V10为主来写中标麒麟如果路径不一致我会单独标注。1.2 配置前一定要做的三件事这里必须先泼一盆冷水等保配置不是拿到服务器就开改尤其是生产环境。我见过不止一次有人为了赶进度直接在生产库上动了PAM配置结果所有账号都登不进去最后只能重启进单用户模式救场。所以第一步永远是备份。需要备份的内容包括/etc/pam.d/ 目录下的认证相关文件/etc/login.defs、/etc/profile、/etc/sysctl.conf/etc/ssh/sshd_config/etc/audit/ 下的审计配置/etc/selinux/config/etc/firewalld/ 下的防火墙规则备份命令很简单按时间戳建个目录统一存放就行mkdir -p /root/etcbackup_$(date %Y%m%d) cp -a /etc/pam.d /etc/login.defs /etc/profile /etc/ssh/sshd_config /etc/sysctl.conf /root/etcbackup_$(date %Y%m%d)/第二件事是确认网络规划。等保配置里有一项叫“安全审计”要求日志能够留存理想状态是往独立的时间服务器同步时间、往日志服务器传副本。如果单位内网里有NTP服务器或者日志服务器先把IP地址要过来配置的时候要用。没有的话先记下来后面可以用国内公共时间服务器临时顶上。第三件事是确认你手上有没有服务器的特权账号。麒麟系统安装时会创建一个管理员用户root账号可以登录。执行整改前必须保证至少有两个能用的管理通道一个是本机root终端一个是SSH远程连接。万一改PAM改坏了还能通过另一个通道进去救。2. 身份鉴别与访问控制加固最容易丢分也最好拿分的环节2.1 密码策略三件套login.defs、PAM模块与密码老化测评机构对“身份鉴别”这一项的核查点非常固定归纳下来就是密码长度够不够、复杂度够不够、登录失败会不会锁定、会话超时会不会自动断开、密码多久需要更换一次。对应的配置位置也相对固定。先看密码复杂度和长度。麒麟系统用PAM的pwquality模块控制密码质量配置文件是 /etc/pam.d/system-auth 或者 /etc/pam.d/passwd不同的版本习惯不同的写法。我的做法是在 system-auth 的 password 段加一行password requisite pam_pwquality.so try_first_pass local_users_only retry3 authtok_type minlen9 lcredit-1 ucredit-1 dcredit-1 ocredit-1这里解释一下参数含义minlen9 表示密码最少9位lcredit-1 表示必须包含至少1个小写字母ucredit-1 至少1个大写字母dcredit-1 至少1个数字ocredit-1 至少1个特殊字符。为什么要凑9位因为等保三级要求密码长度不少于8位且包含多种字符类型直接设9位留出余量测评机构不会在这种细节点上纠缠。注意如果你是先改完PAM再让用户改密码新策略才会生效。已有的密码不受影响所以整改后要让所有账号重新设置一次密码。批量设置可以用 chage 命令强制到期chage -M 90 -m 1 -W 7 testuser-M 90 表示密码90天过期-m 1 是最小修改间隔1天-W 7 是过期前7天提醒。登录失败锁定这一项麒麟系统一般用 pam_faillock 模块也有的版本预置了 pam_tally2两者不能同时启用否则会互相干扰。我在 /etc/pam.d/system-auth 和 /etc/pam.d/password-auth 里都加了这几行auth required pam_faillock.so preauth audit silent deny5 unlock_time900 even_deny_root auth required pam_faillock.so authfail audit deny5 unlock_time900 even_deny_root配置完后可以自己测试连续输错6次密码看账号是否被锁定locked时间是否为900秒。如果发现锁不住多半是system-auth里还有其他pam模块把它们的位置挡住了PAM的规则是“顺序即逻辑”必须把faillock放在auth段靠前的位置我在后面第5章会单独讲这个问题。2.2 SSH加固与登录会话控制远程登录方面SSH是最主要入口也是测评机构重点检查的对象。具体要改这几项禁止root直接用SSH登录限制SSH登录尝试次数和超时时间优先使用SSH密钥认证不推荐关闭密码认证的情况下还没配置好密钥就断连在 /etc/ssh/sshd_config 里做如下配置PermitRootLogin no MaxAuthTries 4 LoginGraceTime 60 ClientAliveInterval 300 ClientAliveCountMax 0 Protocol 2这里每项都有实际意义PermitRootLogin no 要求管理员先用普通用户登录再su切换这样审计日志里能清楚看到到底是谁切到了rootMaxAuthTries 4 限制最多尝试4次登录防止暴力破解LoginGraceTime 60 表示登录超时60秒自动断开ClientAliveInterval 300 ClientAliveCountMax 0 组合起来的意思是服务端每300秒向客户端发一次心跳探测连续没应答就判定客户端挂死并踢掉。这几项配完记得重启sshd服务systemctl restart sshd然后还要设置Shell会话自动超时。这个我之前吃过亏有次测评机构抽查发现测评人员开着的终端挂了一天随时能敲命令直接判了不合规。解决方式是在 /etc/profile 末尾添加export TMOUT600 readonly TMOUTTMOUT600表示会话空闲10分钟后自动退出readonly防止普通用户自己改回去。这个变量对交互式Shell生效不会影响后台服务。修改后用 source /etc/profile 重载再新开终端验证一下。最后是访问控制的收敛。麒麟系统默认的sudo配置非常宽松很多单位装了系统后直接把所有账号都加进了wheel组导致普通用户都能sudo到root这显然不符合“最小权限原则”。整改思路是先审查哪些人真的需要管理员权限把不需要sudo的账号从wheel组移除然后在 sudoers 里显式配置授权规则。我常用的写法是%wheel ALL(ALL) ALL只让wheel组用户具备sudo权限同时检查 /etc/sudoers.d/ 目录下是否有遗留的授权文件该清理就清理。如果测评机构比较严格还会要求为高危命令做黑白名单限制这时候可以把部分用户的 sudo 权限改成只允许指定命令opsuser ALL(ALL) /usr/bin/systemctl, /usr/bin/journalctl这个写法控制力度更细适合给运维值班人员使用前提是你真的了解他们日常需要执行哪些命令否则容易误伤。3. 安全审计与日志留存让每一次操作都有据可查3.1 auditd审计规则的配置与验证关于安全审计测评机构的常规要求是系统能够记录用户登录、命令执行、文件访问等关键安全事件日志要留存足够长时间通常要求6个月以上而且要防止被普通用户篡改。麒麟系统自带auditd但很多单位装了系统之后根本没启用或者启用了但没有加入任何规则审计功能形同虚设。先确认服务状态systemctl status auditd systemctl enable auditd然后添加关键审计规则。我一般会把规则写在 /etc/audit/rules.d/audit.rules 里因为这是auditd启动时自动加载的规则文件比随手用 auditctl -w 临时添加更持久。核心规则如下-w /etc/passwd -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/sudoers -p wa -k privilege -w /etc/ssh/sshd_config -p wa -k sshd_config -a always,exit -F archb64 -S execve -k exec_commands -w /var/log/audit/ -p wa -k audit_log每条规则后面都加了一个 -k 关键词作用是把同类事件打上标签后续用 ausearch -k 搜索时非常方便。比如想看所有和身份文件相关的事件直接执行ausearch -k identity -ts recent规则添加完成后执行service auditd restart auditctl -lauditctl -l 能列出当前生效的所有规则确认规则都在。如果在生产环境上不想重启auditd导致短暂中断审计也可以用auditctl -R /etc/audit/rules.d/audit.rules直接加载规则效果等同但更平滑。这里有一个比较容易踩的坑麒麟系统默认的auditd配置里日志文件 /var/log/audit/audit.log 的大小上限是8MB一旦写满不会自动切割新日志会在旧日志中循环覆盖导致关键操作记录丢失。等保测评对日志留存连续性要求很高所以得改配置。在 /etc/audit/auditd.conf 里调整max_log_file 100 max_log_file_action ROTATE num_logs 10max_log_file设置单个审计文件大小单位MBmax_log_file_action设为ROTATE表示写满后轮转生成新文件num_logs10表示保留最近10个审计日志文件。这样一套组合下来即使服务器有较高的操作频度也不会因为文件满了把早期日志丢掉。改完之后循环验证一下测到登录文件变动应该能立刻在审计日志里查到对应事件touch /etc/passwd ausearch -k identity -ts recent3.2 日志远程收集与时间同步本地留痕也要留证据本地日志存在硬盘上如果服务器被入侵攻击者第一件事往往是清日志。等保测评在“安全管理中心”这一级会特别关注日志是否集中收集。所以运维实操里最稳妥的做法是配置rsyslog把关键日志实时转发给一台独立的日志服务器让日志脱离被保护主机的控制范围。rsyslog的配置在麒麟系统里比较灵活只需要在 /etc/rsyslog.conf 或 /etc/rsyslog.d/ 下添加转发规则。我常用的配置是在 /etc/rsyslog.d/remote.conf 文件里写入*.* 192.168.10.20:514两个符号表示使用TCP协议传输相对单个的UDP更可靠不会因为网络抖动丢日志。配完重启rsyslogsystemctl restart rsyslog这里有个贴心的小经验测评机构有时会要求“日志同时保存在本地和远端”实际上rsyslog默认就是本地存储一份再转发一份本地路径通常是 /var/log/messages不需要额外配置。真正的难点在于日志服务器那一端要开好端口、建好存储目录很多单位第一次做等保只想着改被测评的机器结果忘了准备日志服务器到测评当天才发现日志根本没传过去。所以务必在整改前就把日志服务器准备工作做好。时间同步这一项测评机构会抽查系统时间和时间服务器是否一致。麒麟系统默认带chrony用来替代老旧的ntp服务配置文件在 /etc/chrony.conf。我通常这样配置server ntp.aliyun.com iburst server ntp.tencent.com iburst server time1.cloud.tencent.com iburst local stratum 10如果你单位内网有自己的NTP服务器第一行换成内网地址保证内网设备之间时间一致更重要。iburst参数表示初次同步时快速发送多个时间请求缩短对时时间。local stratum 10这行是用来说明允许本机作为时间源向下游设备提供时间适用于内网没有上级NTP的环境。配置完成后systemctl restart chronyd chronyc sources -v确认状态为^*星号加尖号表示已经与时间源同步成功。很多服务器刚配置完显示“时钟未同步”是因为系统时间与真实时间差距太大需要先手动校准一次再让chronyd跟踪。遇到这种情况执行chronyc makestep手动Step一下时间再等几秒看同步状态。3.3 不要让测试信息把日志目录塞满轮转与空间规划这里想多说一句运营人员在服务器上做调试时经常遇到“需要把调试信息保存到日志文档同时打印显示”的需求。这种需求本身没错但如果调试日志直接写到 /var/log 下又没有轮转机制很容易把磁盘塞满最终影响审计日志的写入。我处理这类需求时会把调试日志单独放到 /var/log/debug/ 目录并配置logrotate按天切割、保留7天/var/log/debug/*.log { daily rotate 7 compress delaycompress missingok notifempty }这段配置的意思是按天轮转保留最近7份旧日志压缩保存避免日志文件无限膨胀。实际工作中有些同事习惯把调试输出直接塞到 /tmp 下面结果系统一重启全没了再排查问题的时候无从下手。所以建议统一走logrotate既保证有据可查又不会撑爆磁盘这一点在等保场景里同样适用。4. 入侵防范与边界防护内核、SELinux、防火墙协同4.1 系统补丁与关键内核参数入侵防范这一项测评机构会检查系统补丁更新状态、内核安全参数、是否启用了SELinux、是否部署了主机入侵检测等。补丁方面做到最新即可麒麟V10可以通过系统自带的更新源执行yum update -y生产环境更新前一定先在测试机验证否则装完补丁出现业务兼容问题很难收场。如果单位内网有软件源镜像记得把yum源指向内网避免外网依赖出问题。设置源时注意检查 /etc/yum.repos.d/ 下的.repo文件确认baseurl指向的地址是可达的。内核参数方面我建议重点检查这几个sysctl项net.ipv4.conf.all.accept_redirects 0 net.ipv4.conf.all.send_redirects 0 net.ipv4.tcp_syncookies 1 net.ipv4.icmp_echo_ignore_broadcasts 1 kernel.randomize_va_space 2net.ipv4.tcp_syncookies1用来开启SYN Cookie防SYN Flood攻击accept_redirects和send_redirects设为0避免主机被伪造的ICMP重定向报文劫持路由kernel.randomize_va_space2是开启ASLR地址空间随机化增加攻击者利用内存漏洞的难度。修改 /etc/sysctl.conf 后执行 sysctl -p 使配置生效。这些参数如果不开测评报告里会写“存在中间人攻击或拒绝服务攻击风险”虽然不一定是高危但能顺手改就顺手改掉。另外还有一个很多人忽略的点检查系统是否存在多余的危险服务。麒麟系统默认安装包里有不少用不到的组件比如telnet-server、rsh-server这类明文传输协议的服务一旦被发现就是直接高危。排查可以用ss -lntup看看系统监听了哪些端口凡是业务不需要的端口一概关闭对应服务用 systemctl disable 禁用。4.2 SELinux与firewalld组合策略注意兼容性SELinux这一项等保测评几乎是必查的。麒麟系统默认SELinux是Enforcing模式但有些运维嫌它麻烦上线前就调成了Disabled。测评机构看到Disabled基本不会给过。我的建议是保持Enforcing不要随便关。如果担心影响业务可以先设置为Permissive观察一段时间日志确认没有SELinux拦截导致的功能问题后再切回Enforcing。查看和设置SELinux状态getenforce setenforce 1如果要永久改编辑 /etc/selinux/config把 SELINUXdisabled 改成 SELINUXenforcing重启生效。注意在运行时用 setenforce 1 和改配置文件要同时做才能保证重启后状态一致。防火墙方面麒麟系统使用的是firewalld。我见过太多服务器直接把firewalld停了理由是“内网环境不需要防火墙”。等保测评对区域边界的核查必然包含防火墙策略所以不仅不能关还要把策略收敛到最小必要范围。比如一个Web服务器只需要开放80和443端口firewall-cmd --permanent --zonepublic --remove-servicessh firewall-cmd --permanent --zonepublic --add-servicehttp firewall-cmd --permanent --zonepublic --add-servicehttps firewall-cmd --reload这里我把ssh服务从公网区域里删掉了只允许内网网段访问SSH这是测评机构非常看重的策略。更精细的写法是直接指定来源IP段firewall-cmd --permanent --zonepublic --remove-servicessh firewall-cmd --permanent --zonepublic --add-rich-rulerule familyipv4 source address192.168.10.0/24 service namessh accept firewall-cmd --reload这样只有内网192.168.10.0/24网段的机器能SSH登录其他来源一律拒绝。配置完用 firewall-cmd --list-all 检查最终生效的规则确保没有把管理端口意外暴露到外网。这里要额外提醒一句配置防火墙policy时先把当前已有的规则备份好避免把自己锁在外面。我处理过一个案例同事为了“严格防护”把默认区域设为drop却忘了把管理IP段加进去结果业务管理员远程SSH全断了只能跑机房接显示器救急。防火墙策略的每一步都要确保有退路尤其是远程维护的设备。5. 等保整改中的高频问题与排障实录5.1 常见不合规项速查表整理一张我在多次等保测评中遇到的典型不合规项以及对应的整改动作做成了速查表现场整改时可以直接对着表格逐项检查测评点常见不合规表现整改动作身份鉴别密码位数不足、缺少复杂度要求调整pam_pwquality参数登录失败处理未启用登录失败锁定配置pam_faillock并验证会话超时终端空闲连接长期不回收/etc/profile设置TMOUT远程管理允许root直接SSH登录sshd_config禁止root登录安全审计auditd未启用或无规则添加规则并重启auditd审计留存日志文件上限过小或未轮转修改auditd.conf轮转参数时间同步系统时间跳变或未配置NTP配置chrony并验证同步入侵防范内核参数安全项未开启修改sysctl.conf恶意代码防范未安装杀毒或主机防护软件部署合规的防病毒/EDR软件配置安全防火墙关闭或策略宽松启用firewalld并收敛端口这张表看起来简单但每一行背后都是实际的整改工作量。比如“配置安全”这一行如果你在测评前才发现防火墙没开重新配策略、验证连通性、确认业务不受影响至少要预留一天时间。所以强烈建议提前一周按表自查不要拖到测评前一天才赶工。5.2 三个实战踩坑记录希望你不用再踩一遍第一个坑PAM模块顺序错乱导致所有账号无法登录。我在一台麒麟V10服务器上配置faillock时把规则加在了system-auth文件的auth段末尾结果重启后所有账号一登录就被锁连root都进不去。原因在于PAM按顺序执行规则faillock必须放在account阶段之前而且不能放在pam_permit之后。最终我是通过单用户模式进去把规则移动到了文件靠前的位置才恢复。这个教训是PAM文件修改前一定备份修改后用pam_tally2 --user root确认当前锁定状态避免把自己锁死。第二个坑时间同步失败导致审计日志时间戳混乱。有次测评机构抽查日志发现某台服务器的审计日志时间跨了好几个小时后面排查发现是服务器初始时间和时间服务器差异过大chronyd默认的同步阈值不允许大幅Jump导致一直没有完成同步。后来我养成了一个习惯配置完chrony后第一件事就是执行 chronyc makestep把系统时间强制校准到和服务器一致。同步完成后再观察时间偏移是否保持在100毫秒以内。第三个坑系统字体库缺失导致终端和某些应用显示异常。这个严格来说和等保关系不大但非常影响整改效率和心情。有同事在麒麟系统里调试国产即时通讯工具时发现微信表情符号无法正常显示排查了老半天最后发现是系统缺少相应的字体包安装noto字体集后正常。等保整改期间我们经常要在终端和浏览器之间反复切截图留档字体显示不正常很容易让人误判为系统配置有问题。这里提一句遇到Linux系统下文字、符号显示乱码或空白先检查字体库不要花大把时间在等保配置上乱试。另外再补充一个小提醒单位里如果装了中孚密保卫士一类的合规管控软件不要因为觉得“占资源”就想卸载。这类软件本身就和等级保护合规强相关随意卸载很可能导致终端安全状态不合规。真遇到软件异常应该走厂商支持流程处理别自己动手这是我在现场见过不少次的实际问题。5.3 整改之后要做一次自测演练配置全部改完后不要急着跟测评机构约时间先自己做一轮模拟检查。我一般会准备一份检查脚本覆盖前面所有关键点检查密码策略参数、检查faillock配置、检查auditd状态和规则、检查chrony同步、检查防火墙监听端口、检查SELinux状态、检查可疑服务端口。把这些项目写成一段Shell脚本每执行一项自动输出OK或FAIL现场整改时能节省大量时间。自测时特别要注意几点sshd配置改完后有没有语法错误可以用sshd -t提前检查auditd规则有没有加载成功用auditctl -l核对防火墙规则有没有把管理端口误禁用另一台机器实际测试一次远程连接。这些都是我在测评现场吃过的教训宁可自查时多花半小时也不要等测评机构来开不符合项。等保配置这件事说到底是把操作系统里那些安全能力逐项打开并验证。很多人觉得麻烦是因为不熟悉配置项之间的相互影响但只要把“身份鉴别、访问控制、安全审计、入侵防范、边界防护”这几个维度拆开逐个击破就会发现大部分操作都是固定的套路。我个人在实际操作中最大的感受是每一步配置都要能讲清楚为什么而不是简单照抄命令因为测评机构在访谈环节很可能会问“这个参数是什么意思、这样设置有什么作用”。把原理弄明白无论面对什么版本的国产系统你都能举一反三。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门