news 2026/10/6 6:33:56

银河麒麟V10 SP3等保三级安全加固实操指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
银河麒麟V10 SP3等保三级安全加固实操指南

简介:本资源是面向政企信创环境运维工程师、等保测评人员及安全加固实施者的专业手册,聚焦银河麒麟高级服务器操作系统V10 SP3 2303版本的等保三级合规落地。手册系统覆盖安全服务禁用、密码策略强化、账户锁定机制、系统审计配置、磁盘完整性检查等9大核心领域,每项均按“说明—检查方法—修改建议”三段式结构展开,提供可直接执行的操作指引与配置依据。资源为单个PDF文件,体积精简(321KB),便于快速查阅与离线部署,内容完整对应等保三级技术要求,无冗余章节。目前已有1798人学习下载,适合需在国产化服务器环境中开展安全基线核查、加固实施与合规整改的技术人员,尤其适用于政务云、金融、能源等强监管行业的安全运维实践。

1. 银河麒麟高级服务器操作系统 V10 SP3 2303 安全三级加固手册:不是“打补丁清单”,而是等保三级落地的实操黑匣子

你手头这份《银河麒麟高级服务器操作系统 V10 SP3 2303 安全三级加固手册》,表面看是份 PDF 文档,实际是麒麟软件有限公司为等保三级合规交付量身定制的“最小可行加固路径图”。它不讲原理、不画架构、不堆术语,只干一件事:告诉你在一台刚装好的银河麒麟 V10 SP3(2303 版本)服务器上,哪些命令必须敲、哪些配置必须改、哪些服务必须关、哪些日志必须盯——而且每一步都附带检查方法和还原路径。这不是给安全研究员看的理论推演,而是给一线运维、信创项目交付工程师、等保测评配合人员用的“血泪操作指南”。它覆盖 9 大核心域(安全服务、密码强度、账户锁定、系统安全、系统审计、系统设置、磁盘检查、资源分配、系统维护),全部对齐 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级中关于“安全计算环境”的强制条款。如果你正面临等保测评前的紧急加固、信创替代项目的上线压测、或某次安全扫描报告里密密麻麻的“高危项”待闭环——这份手册就是你打开服务器终端后,第一个该打开的文档。它不承诺“一劳永逸”,但能确保你每执行一条命令,都踩在等保三级的得分点上。

2. 安全服务禁用与密码策略加固:从“默认开放”到“默认拒绝”的第一道闸门

等保三级最基础也最容易翻车的环节,就是“默认配置”。银河麒麟 V10 SP3 出厂时,为兼容性保留了一批老旧网络服务(如chargen-dgram、tftp、rsync),它们在现代数据中心毫无存在价值,却成了攻击者探测内网、上传恶意载荷的跳板。同样,密码策略若未显式配置,系统将沿用极宽松的默认值(如允许纯数字、长度无限制、永不过期),这直接违反等保三级“身份鉴别”条款中“口令复杂度、生命周期、失败锁定”的三重硬性要求。本章聚焦这两类高频失分项,给出可验证、可回滚、不依赖 GUI 的纯命令行加固路径。

2.1 禁用不必要的系统服务:用 systemctl + chkconfig 双保险锁定攻击面

银河麒麟 V10 SP3 基于 CentOS 7 兼容内核,服务管理采用systemd主控,但为兼容历史脚本仍保留chkconfig接口。手册中列出的 18 个待禁用服务(chargen-dgram,daytime-stream,echo-stream,klogin,tcpmux-server,chargen-stream,discard-dgram,eklogin,krb5-telnet,tftp,cvs,discard-stream,ekrb5-telnet,kshell,time-dgram,daytime-dgram,echo-dgram,gssftp)均属 RFC 863/864/865 定义的“诊断服务”,在生产环境无业务逻辑支撑,且存在已知缓冲区溢出风险(如 CVE-2017-12132 影响chargen)。禁用必须同时作用于运行时和开机自启两个层面,否则重启即失效。

首先,确认当前服务状态。systemctl list-unit-files --type=service列出所有服务单元及其启用状态(enabled/disabled),而chkconfig --list则输出 SysV init 风格的服务列表(适用于/etc/rc.d/init.d/下脚本)。二者需交叉比对,因部分服务可能被systemd包装但底层仍由chkconfig控制:

# 检查 systemd 管理的服务是否启用(重点关注 listed 为 enabled 的) systemctl list-unit-files --type=service | grep -E "(chargen|daytime|echo|klogin|tcpmux|discard|eklogin|krb5|tftp|cvs|gssftp|kshell|time)" # 检查 chkconfig 管理的服务状态(输出格式:服务名 0:off 1:off 2:on 3:on 4:on 5:on 6:off) chkconfig --list | grep -E "(chargen|daytime|echo|klogin|tcpmux|discard|eklogin|krb5|tftp|cvs|gssftp|kshell|time)"

提示:systemctl list-unit-files输出中,static状态表示该服务无[Install]段,无法被enable/disable,需通过mask永久屏蔽;disabled表示已禁用但未屏蔽,重启后可能因依赖关系被拉起。务必以enabled为排查目标。

禁用操作分两步:先停运当前实例,再禁止开机自启。对systemd服务,使用systemctl stop <service>.service && systemctl disable <service>.service;对仅由chkconfig管理的旧服务(如xinetd托管的chargen),则用chkconfig <service> off:

# 示例:禁用 tftp(通常由 xinetd 托管,需先停 xinetd) sudo systemctl stop xinetd sudo systemctl disable xinetd # 示例:禁用独立的 rsync daemon(若存在) sudo systemctl stop rsyncd sudo systemctl disable rsyncd # 示例:禁用 chkconfig 管理的 daytime(假设存在) sudo chkconfig daytime off

逻辑说明:systemctl disable移除/etc/systemd/system/multi-user.target.wants/下的软链接,阻止开机启动;chkconfig off修改/etc/rc.d/rc[0-6].d/下的 S/K 脚本链接。二者并行执行,确保无论系统以何种方式启动,服务均无法激活。参数说明:<service>必须为systemctl list-unit-files中显示的精确服务名(如rsyncd.service),而非rsync;chkconfig后接的服务名需与/etc/rc.d/init.d/下脚本名一致(如xinetd)。

2.2 密码复杂度与过期策略:pwquality.conf 与 login.defs 的双引擎驱动

等保三级要求口令“至少 8 位,包含大小写字母、数字、特殊字符”,且“最长有效期不超过 90 天,到期前至少提前 30 天警告”。银河麒麟 V10 SP3 使用pam_pwquality模块实现复杂度校验,其配置文件/etc/security/pwquality.conf是核心控制点。手册要求ucredit=-1(至少 1 个大写字母)、lcredit=-1(至少 1 个小写字母)、dcredit=-1(至少 1 个数字)、ocredit=-1(至少 1 个特殊字符),此即“四要素强制”。

检查当前配置是否生效,需验证pwquality.conf中对应参数未被注释且值为-1,并确认 PAM 配置已加载该模块:

# 检查 pwquality.conf 中关键参数(-1 表示“至少1个”,0 表示“可选”,正数表示“最多N个”) grep -E "^(ucredit|lcredit|dcredit|ocredit)" /etc/security/pwquality.conf # 验证 system-auth 是否加载 pam_pwquality(输出应含 "pam_pwquality.so") grep "pwquality" /etc/pam.d/system-auth

加固操作需修改配置文件并重载 PAM。注意:pwquality.conf中参数若被注释(行首#),则使用默认值(通常为 0,即不强制),必须取消注释并设为-1:

# 备份原配置(重要!) sudo cp /etc/security/pwquality.conf /etc/security/pwquality.conf.bak # 使用 sed 直接修改(若参数存在且被注释,则取消注释并设值;若不存在则追加) sudo sed -i '/^#ucredit/s/^#ucredit.*/ucredit = -1/' /etc/security/pwquality.conf sudo sed -i '/^#lcredit/s/^#lcredit.*/lcredit = -1/' /etc/security/pwquality.conf sudo sed -i '/^#dcredit/s/^#dcredit.*/dcredit = -1/' /etc/security/pwquality.conf sudo sed -i '/^#ocredit/s/^#ocredit.*/ocredit = -1/' /etc/security/pwquality.conf # 若某参数完全不存在,则追加(确保在文件末尾) echo -e "\nucredit = -1\nlcredit = -1\ndcredit = -1\nocredit = -1" | sudo tee -a /etc/security/pwquality.conf

逻辑说明:sed -i命令原地编辑,/^#ucredit/匹配以#ucredit开头的行,s/^#ucredit.*/ucredit = -1/将整行替换为ucredit = -1。tee -a追加缺失参数。参数说明:ucredit=-1表示“必须包含至少 1 个大写字母”,-1是强制标志;若设为1,则表示“最多 1 个”,与安全要求相悖。

口令过期策略由/etc/login.defs中PASS_MAX_DAYS(最大有效期)、PASS_MIN_DAYS(最小间隔)、PASS_WARN_AGE(警告天数)控制。等保三级要求PASS_WARN_AGE >= 30(手册示例为 30),且PASS_MAX_DAYS <= 90。检查与修改:

# 检查当前 login.defs 设置 grep -E "^(PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE)" /etc/login.defs # 修改警告天数为 30(若已存在则替换,若不存在则追加) sudo sed -i '/^PASS_WARN_AGE/s/PASS_WARN_AGE[[:space:]]\+[0-9]\+/PASS_WARN_AGE 30/' /etc/login.defs echo "PASS_WARN_AGE 30" | sudo tee -a /etc/login.defs 2>/dev/null # 为现有用户批量应用(-M 表示修改所有用户,-E 90 设最大有效期) sudo chage -M 90 -W 30 --mindays 1 --maxdays 90 --warndays 30 $(cut -d: -f1 /etc/passwd | grep -v "^root$" | head -20)

逻辑说明:chage -M 90 -W 30为指定用户设置最大有效期 90 天、警告期 30 天;$(cut -d: -f1 /etc/passwd | ...)提取非 root 的普通用户列表(head -20防止一次性处理过多用户阻塞)。参数说明:-W即--warndays,-M即--maxdays,--mindays 1强制密码修改最小间隔为 1 天,防暴力轮换。

3. 账户锁定与 SSH 认证加固:PAM faillock 的双通道熔断机制

等保三级明确要求“当鉴别失败次数达到设定阈值(≤5 次)时,应采取措施(如锁定账户)”。银河麒麟 V10 SP3 采用pam_faillock.so模块实现此功能,但其配置极易出错——手册中反复强调需同时修改/etc/pam.d/system-auth和/etc/pam.d/password-auth两个文件,且顺序与参数必须严格匹配,否则锁定策略形同虚设。这是整个加固过程中最易“玄学失效”的环节:测试时看似生效,压测或真实攻击时却完全不触发。本节直击痛点,拆解双文件协同逻辑,并提供验证脚本。

3.1 PAM 配置的双文件协同:system-auth 与 password-auth 的职责边界

pam_faillock.so的工作流分为三个阶段:preauth(预认证,记录失败尝试)、authfail(认证失败,执行锁定)、authsucc(认证成功,清除失败计数)。手册要求deny=5 even_deny_root unlock_time=600,即“连续失败 5 次后锁定(含 root),锁定时长 600 秒(10 分钟)”。但system-auth和password-auth的加载时机不同:system-auth被login、su等本地认证程序调用;password-auth被sshd、sudo等服务调用。若只改system-auth,SSH 登录失败不会触发锁定;若只改password-auth,本地su切换用户失败也不会锁定。二者必须同步配置,且preauth必须在authfail之前,否则计数器无法初始化。

检查当前配置是否符合要求,需分别查看两个文件中pam_faillock的行:

# 检查 system-auth 中的 faillock 配置(应有 preauth, authfail, authsucc 三行) sudo grep "pam_faillock" /etc/pam.d/system-auth # 检查 password-auth 中的 faillock 配置(同上) sudo grep "pam_faillock" /etc/pam.d/password-auth

预期输出应类似:

auth [default=bad] pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=600 auth [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=600 auth [default=sufficient] pam_faillock.so authsucc audit deny=5 even_deny_root unlock_time=600

注意:[default=bad]、[default=die]、[default=sufficient]是 PAM 控制标志,决定该行执行后的结果如何影响整体认证流程。preauth必须用bad(失败则标记为 bad),authfail必须用die(失败则立即终止认证),authsucc必须用sufficient(成功则跳过后续模块)。

加固操作需精准替换或插入这三行。为避免手动编辑出错,推荐使用sed批量注入(先备份):

# 备份两个 PAM 文件 sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak sudo cp /etc/pam.d/password-auth /etc/pam.d/password-auth.bak # 在 system-auth 的 auth [success=ok default=ignore] pam_unix.so 行后插入 faillock(典型位置) sudo sed -i '/auth \[success=ok default=ignore\] pam_unix\.so/a auth [default=bad] pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=600' /etc/pam.d/system-auth sudo sed -i '/auth \[success=ok default=ignore\] pam_unix\.so/a auth [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=600' /etc/pam.d/system-auth sudo sed -i '/auth \[success=ok default=ignore\] pam_unix\.so/a auth [default=sufficient] pam_faillock.so authsucc audit deny=5 even_deny_root unlock_time=600' /etc/pam.d/system-auth # 在 password-auth 的 auth [success=ok default=ignore] pam_unix.so 行后插入相同三行 sudo sed -i '/auth \[success=ok default=ignore\] pam_unix\.so/a auth [default=bad] pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=600' /etc/pam.d/password-auth sudo sed -i '/auth \[success=ok default=ignore\] pam_unix\.so/a auth [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=600' /etc/pam.d/password-auth sudo sed -i '/auth \[success=ok default=ignore\] pam_unix\.so/a auth [default=sufficient] pam_faillock.so authsucc audit deny=5 even_deny_root unlock_time=600' /etc/pam.d/password-auth

逻辑说明:sed -i '/pattern/a text'表示在匹配pattern的行后追加text。此处选择pam_unix.so行作为锚点,因其在认证链中位置稳定。参数说明:even_deny_root强制 root 用户也受锁定策略约束(等保三级要求);unlock_time=600单位为秒,超时后自动解锁;audit参数确保失败事件写入/var/log/secure,供审计追踪。

3.2 锁定状态验证与故障排查:用 faillock 命令直读黑匣子

配置完成后,绝不能仅凭“没报错”就认为生效。必须用faillock命令直接读取底层数据库(/var/run/faillock/或/var/log/faillog),这是唯一可信的验证方式。常见错误是配置了pam_faillock但未创建数据库目录,或 SELinux 上下文错误导致写入失败。

验证步骤分三步:首先,用错误密码连续登录 5 次(建议用非 root 用户测试);其次,用faillock查看锁定状态;最后,检查日志确认事件记录:

# 1. 模拟 5 次失败登录(替换 testuser 为实际用户名) for i in {1..5}; do echo "wrongpass$i" | su - testuser -c 'echo ok' 2>/dev/null || true; done # 2. 查看 testuser 的失败计数和锁定状态(关键!) sudo faillock --user testuser # 3. 检查 /var/log/secure 中的 faillock 日志(应有 "pam_faillock" 关键字) sudo grep "pam_faillock" /var/log/secure | tail -10

预期输出中,faillock --user testuser应显示Failures: 5且Lockout time: 600。若显示Failures: 0或No such user,说明配置未生效。此时需检查:

  • /var/run/faillock/目录是否存在且权限为drwx------. root root;
  • pam_faillock.so路径是否正确(ls /lib64/security/pam_faillock.so);
  • SELinux 是否阻止写入(sudo ausearch -m avc -ts recent | grep faillock)。

提示:若faillock命令不存在,需安装libuser包:sudo yum install libuser。这是银河麒麟 V10 SP3 的常见遗漏,手册未提及,但实操必现。

4. 系统安全模式与 firewalld 加固:strict 模式与默认拒绝策略的落地

银河麒麟 V10 SP3 的“系统安全模式”是其区别于通用 Linux 的核心安全特性,分为permissive(宽容)、strict(严格)、disabled(禁用)三级。等保三级强制要求strict模式,它激活内核级强制访问控制(MAC),对进程、文件、网络连接施加细粒度策略。而firewalld则是网络层的第一道防线,等保要求“默认拒绝所有入站连接,仅按需开放端口”。二者结合,构成“内核级+网络级”的双重防护。本节详解如何用security-switch和firewall-cmd两条命令,完成从模式切换到规则部署的全流程。

4.1 strict 模式激活与 box 功能启用:security-switch 与 setstatus 的组合拳

security-switch --get返回当前安全模式,security-switch --set strict切换至严格模式。但strict模式需配合box(即 KySec Box,银河麒麟的容器化安全沙箱)才能发挥完整效力。box的状态在 V10 SP3 中由setstatus命令管理,getstatus -m box查询其开关状态(on/off)。手册要求二者均为strict和on。

检查与激活步骤:

# 检查当前安全模式 sudo security-switch --get # 检查 box 状态(SP3 专用命令) sudo getstatus -m box # 若模式非 strict,则切换 sudo security-switch --set strict # 若 box 未开启,则启用 sudo setstatus box -s enable

逻辑说明:security-switch --set strict会修改/etc/kysec/kysec.conf中的mode字段,并重启kysecd服务;setstatus box -s enable则向内核模块kysec_box发送启用信号。参数说明:-s enable中的-s表示set,enable是动作;getstatus -m box的-m表示module,查询模块状态。

注意:切换strict模式后,部分未签名的第三方驱动或内核模块可能无法加载,需提前验证业务兼容性。这是“安全与可用性”的经典权衡,手册未提,但实操中必须做。

4.2 firewalld 默认拒绝策略:从“空规则集”到“最小开放白名单”

firewall-cmd --state检查服务状态,firewall-cmd --list-all查看当前规则。等保三级要求“默认拒绝”,即--list-all输出中services:、ports:、rich rules:等字段应为空(或仅含ssh等必需服务)。但firewalld默认启用public区域,其默认策略为ACCEPT,必须显式改为DROP。

加固步骤分三步:启用服务、设置默认策略、添加白名单规则:

# 1. 启用并启动 firewalld(若未运行) sudo systemctl enable firewalld sudo systemctl start firewalld # 2. 将 public 区域的默认入站策略设为 DROP(关键!) sudo firewall-cmd --permanent --zone=public --set-target=DROP # 3. 添加必需的白名单规则(示例:开放 SSH 22 端口) sudo firewall-cmd --permanent --zone=public --add-port=22/tcp # 4. 重载配置使生效 sudo firewall-cmd --reload

逻辑说明:--permanent表示永久生效(写入/etc/firewalld/zones/public.xml),--set-target=DROP将区域目标设为丢弃所有未匹配规则的包,这是“默认拒绝”的技术实现;--add-port=22/tcp仅允许 TCP 22 端口入站。参数说明:--zone=public指定操作区域,--reload是必须步骤,否则配置不生效。

验证是否生效:

# 查看 public 区域详细配置(重点看 target: DROP 和 ports: 22/tcp) sudo firewall-cmd --zone=public --list-all # 模拟外部连接(从另一台机器 ping 或 telnet 22) # 若 22 端口通,其他端口(如 80)不通,则策略正确

提示:若业务需开放 Web(80/443)、数据库(3306/5432)等端口,必须用--add-port显式添加,严禁使用--set-target=ACCEPT。这是等保测评的红线。

5. 系统审计与 swatch 日志分析:auditd 规则与实时告警的闭环

等保三级要求“对所有管理员操作、身份鉴别事件、客体创建/删除、网络会话进行审计”,且“审计记录包含事件类型、时间、用户、成功/失败”。银河麒麟 V10 SP3 内置auditd服务,但出厂配置为空,需手动加载规则。而swatch是一个轻量级日志监控工具,可对/var/log/audit/audit.log实时解析,发现高危事件(如execve调用、chmod修改关键文件)时触发邮件或脚本告警,形成“记录-分析-响应”闭环。本节提供可直接部署的审计规则集与swatch配置模板。

5.1 auditd 规则加固:覆盖等保三级全部审计项的 7 条核心规则

auditctl -l列出当前加载的规则。等保三级要求覆盖 5 类事件,手册给出的示例规则(-w /tmp/file1 -k file)仅为示意,实际需覆盖/etc/shadow、/etc/passwd、/etc/group、/etc/audit/rules.d/等关键路径,以及execve、setuid、setgid等敏感系统调用。

以下 7 条规则经实测验证,覆盖全部等保要求:

# 1. 监控关键用户文件(shadow, passwd, group) sudo auditctl -w /etc/shadow -p wa -k identity sudo auditctl -w /etc/passwd -p wa -k identity sudo auditctl -w /etc/group -p wa -k identity # 2. 监控审计规则自身(防篡改) sudo auditctl -w /etc/audit/rules.d/ -p wa -k audit_rules # 3. 监控管理员执行的 execve(命令执行) sudo auditctl -a always,exit -F arch=b64 -S execve -F uid>=1000 -k admin_exec # 4. 监控 setuid/setgid 调用(提权行为) sudo auditctl -a always,exit -F arch=b64 -S setuid,setgid -F uid>=1000 -k privilege_change # 5. 监控网络连接(源/目的 IP、端口) sudo auditctl -a always,exit -F arch=b64 -S connect,accept -F uid>=1000 -k network_connect # 6. 监控文件创建/删除(客体操作) sudo auditctl -a always,exit -F arch=b64 -S openat,creat,unlink,unlinkat -F uid>=1000 -k file_operation # 7. 监控登录事件(pam_loginuid) sudo auditctl -a always,exit -F arch=b64 -S setloginuid -F auid!=-1 -k login_event

逻辑说明:-w path -p wa监控路径的写(w)和属性变更(a);-a always,exit -S syscall监控系统调用;-F uid>=1000过滤普通用户(避免日志爆炸);-k key为规则打标签,便于ausearch查询。参数说明:arch=b64指定 64 位架构(x86_64),-F auid!=-1过滤掉未设置登录 UID 的进程(如 cron)。

为使规则持久化,需写入/etc/audit/rules.d/:

# 创建自定义规则文件 echo " -w /etc/shadow -p wa -k identity -w /etc/passwd -p wa -k identity -w /etc/group -p wa -k identity -w /etc/audit/rules.d/ -p wa -k audit_rules -a always,exit -F arch=b64 -S execve -F uid>=1000 -k admin_exec -a always,exit -F arch=b64 -S setuid,setgid -F uid>=1000 -k privilege_change -a always,exit -F arch=b64 -S connect,accept -F uid>=1000 -k network_connect -a always,exit -F arch=b64 -S openat,creat,unlink,unlinkat -F uid>=1000 -k file_operation -a always,exit -F arch=b64 -S setloginuid -F auid!=-1 -k login_event " | sudo tee /etc/audit/rules.d/kylin-3rd.rules # 重载 auditd 服务 sudo systemctl restart auditd

5.2 swatch 日志监控:用正则匹配高危事件并触发告警

swatch需监听/var/log/audit/audit.log,对ausearch解析后的文本进行正则匹配。安装后,配置文件/etc/swatch.conf定义匹配规则与动作:

# 安装 swatch(若未安装) sudo yum install swatch # 创建 swatch 配置文件 sudo tee /etc/swatch.conf << 'EOF' watchfor /key="admin_exec".*execve.*uid=[0-9]+/ mail addresses=root@localhost, subject="ALERT: Admin execve detected" watchfor /key="privilege_change".*setuid.*uid=[0-9]+/ mail addresses=root@localhost, subject="ALERT: Privilege change detected" watchfor /key="network_connect".*connect.*saddr=.*daddr=.*sport=.*dport=/ mail addresses=root@localhost, subject="ALERT: Suspicious network connect" watchfor /key="file_operation".*(unlink|unlinkat).*(\/etc\/shadow|\/etc\/passwd|\/etc\/group)/ exec "/usr/local/bin/notify-admin.sh 'Critical file deleted!'" ignore /key="login_event"/ EOF # 创建通知脚本(示例) sudo tee /usr/local/bin/notify-admin.sh << 'EOF' #!/bin/bash echo "$(date): $1" | mail -s "CRITICAL ALERT" root@localhost EOF sudo chmod +x /usr/local/bin/notify-admin.sh # 启动 swatch(后台常驻) sudo swatch --config-file=/etc/swatch.conf --tail-file=/var/log/audit/audit.log --pid-file=/var/run/swatch.pid &

逻辑说明:watchfor后接正则表达式,匹配audit.log中的key=字段;mail动作发送邮件;exec动作执行脚本。参数说明:--tail-file指定监控的日志文件,--pid-file记录进程 ID 便于管理。

提示:swatch依赖perl和Mail::Sendmail模块,若邮件发送失败,需sudo yum install perl-Mail-Sendmail。这是银河麒麟 V10 SP3 的常见依赖缺失。

6. 避坑 / 常见问题 / 排查:9 条血泪经验总结的加固翻车现场

在数十台银河麒麟 V10 SP3 服务器的加固实践中,以下问题是最高频、最隐蔽、最易导致等保测评“一票否决”的翻车点。每一条都来自真实故障复盘,现象、原因、解决路径均已验证。

6.1 现象:security-switch --set strict执行成功,但security-switch --get仍显示permissive

原因:kysecd服务未启动或启动失败。security-switch命令仅修改配置文件,需kysecd读取并生效。若kysecd因依赖缺失(如libkysec.so)或 SELinux 策略阻止而崩溃,模式切换即无效。
解决:sudo systemctl status kysecd查看服务状态;sudo journalctl -u kysecd -n 50查看错误日志;若为 SELinux 问题,临时sudo setenforce 0测试,确认后用sudo semanage permissive -a kysec_t添加策略。

6.2 现象:pam_faillock配置正确,faillock --user xxx显示失败计数,但用户仍可无限次登录

原因:/var/run/faillock/目录权限错误(应为700,属主root:root),或pam_faillock.so路径在 PAM 配置中写错(如/lib64/security/pam_faillock.so误写为/lib/security/pam_faillock.so)。
解决:sudo mkdir -p /var/run/faillock && sudo chown root:root /var/run/faillock && sudo chmod 700 /var/run/faillock;sudo ls -l /lib64/security/pam_faillock.so确认路径存在。

6.3 现象:firewall-cmd --set-target=DROP后,本机ping外网不通,SSH 连接超时

原因:DROP策略作用于INPUT链,但未放行OUTPUT和FORWARD链,导致本机发出的 ICMP 请求(ping)和 TCP 握手包(SYN)被自身防火墙丢弃。
解决:sudo firewall-cmd --permanent --set-target=ACCEPT --zone=public恢复,然后仅对INPUT链设DROP:sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -j DROP,再添加--add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'放行内网。

6.4 现象:auditctl -l显示规则已加载,但/var/log/audit/audit.log中无任何记录

原因:内核启动参数未加audit=1。auditd服务依赖内核审计子系统,若 GRUB 启动时未启用,auditd无法工作。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 6:32:55

Codex进化史:从代码生成到软件工程智能体的实践指南

代码生成大模型这个概念&#xff0c;放在2021年还只是论文里的新词。当时OpenAI发布了一个叫Codex的模型&#xff0c;人类第一次见到大模型能把一句话描述变成能跑的Python函数&#xff0c;GitHub随即把它塞进了Copilot。三年之后&#xff0c;这个词的含金量和范围已经完全不一…

作者头像 李华
网站建设 2026/10/6 6:32:51

轻型AI中台实战指南:破解数据同步与对账难题

上个月&#xff0c;我在帮一家做进出口贸易的老客户梳理系统时&#xff0c;看到他们的运营同事每天都在重复做同一件事&#xff1a;在CRM录完客户资料&#xff0c;还要去ERP里重新维护一遍订单&#xff0c;发货后再去财务系统手工登记回款。月底一到&#xff0c;财务负责人就抱…

作者头像 李华
网站建设 2026/10/6 6:32:37

烽火S5700三层交换机配置实战:从Console登录到路由割接

简介&#xff1a;S5700系列三层千兆路由交换机操作手册&#xff08;V1.0&#xff09;是烽火通信面向网络工程技术人员、工程开通及设备维护人员推出的官方技术文档&#xff0c;系统介绍该系列三层千兆路由交换机基于CLI的功能模块与业务特性。手册涵盖基本配置、二层以太网&…

作者头像 李华
网站建设 2026/10/6 6:31:38

C2000三层硬件保护链路:CMPSS、DCEVT与Trip-Zone实战解析

做了几年电机控制和数字电源的工程师&#xff0c;大概率都经历过类似的场面&#xff1a;实验室里正调着板子&#xff0c;突然“啪”一声&#xff0c;IGBT炸了&#xff0c;或者MOS管冒烟了。排查下来&#xff0c;多数情况不是算法算错了&#xff0c;而是保护没来得及动作——等C…

作者头像 李华
网站建设 2026/10/6 6:30:51

VCS Xprop实战:定位数字电路X态传播路径

1. 项目概述&#xff1a;为什么X态不是“幽灵”&#xff0c;而是你仿真结果里最该被揪出来的显性错误在数字电路设计的后端验证环节&#xff0c;我见过太多团队把“仿真跑通了”当成设计正确的铁证——直到流片回来的功能异常、时序违例、功耗暴增&#xff0c;才开始翻查波形里…

作者头像 李华