国产信创基线检查配置大全

覆盖麒麟 / 统信 UOS / openEuler
SSH加固 · 密码策略 · 审计日志 · 内核参数 · 一键检查脚本

2025 年 11 月 3 日,工信部信创漏洞库联合麒麟软件、统信软件等发布了《国产操作系统安全基线手册》,这是信创领域第一份官方安全配置标准,填补了国产系统安全基线的空白。

本文基于该手册及 openEuler 安全配置基线标准 v1.0,整理出覆盖 10 大安全域、100+ 条配置项的基线检查配置大全,附带可直接执行的检查脚本,助你快速完成信创系统安全加固。

一、信创基线检查概览

信创操作系统主要包括:

操作系统厂商适用场景基线标准来源
银河麒麟 Kylin麒麟软件党政军、金融、能源国产操作系统安全基线手册
统信 UOS统信软件政务、企业桌面/服务器国产操作系统安全基线手册
openEuler华为/开放原子基金会云原生、服务器openEuler 安全配置基线标准 v1.0
麒麟信安麒麟信安高安全场景等保 2.0 + 行业规范

1.1 基线检查 10 大安全域

安全域检查重点等保对应
身份鉴别账号策略、密码复杂度、登录失败处理等保 2.0 - 身份鉴别
访问控制权限最小化、敏感文件权限、sudo 配置等保 2.0 - 访问控制
安全审计auditd 配置、日志留存、日志保护等保 2.0 - 安全审计
入侵防范端口关闭、服务最小化、恶意代码防护等保 2.0 - 入侵防范
SSH 安全协议版本、Root 登录、认证方式等保 2.0 - 身份鉴别
内核参数网络参数、内存参数、安全开关等保 2.0 - 入侵防范
账户管理空密码、共享账号、默认账号、过期账号等保 2.0 - 身份鉴别
文件权限关键配置文件、日志文件、临时目录等保 2.0 - 访问控制
资源控制会话超时、资源限制、磁盘配额等保 2.0 - 资源控制
备份恢复关键数据备份、配置备份、恢复演练等保 2.0 - 数据备份

二、身份鉴别:账号与密码策略

身份鉴别是等保测评的重中之重,也是攻击者最先突破的防线。

2.1 密码复杂度策略

/etc/security/pwquality.conf - 密码复杂度配置

# 最小密码长度 12 位

minlen = 12

# 至少包含 1 个大写字母

ucredit = -1

# 至少包含 1 个小写字母

lcredit = -1

# 至少包含 1 个数字

dcredit = -1

# 至少包含 1 个特殊字符

ocredit = -1

# 不能包含用户名

usercheck = 1

# 记住前 5 次密码,防止循环使用

remember = 5

/etc/pam.d/system-auth - PAM 配置

# 在 password 行添加 pwquality 模块

password requisite pam_pwquality.so try_first_pass local_users_only retry=3

password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

2.2 密码有效期策略

/etc/login.defs - 密码有效期配置

# 密码最长有效期 90 天

PASS_MAX_DAYS 90

# 密码最短修改间隔 1 天(防止频繁修改)

PASS_MIN_DAYS 1

# 密码最小长度(与 pwquality 配合)

PASS_MIN_LEN 12

# 密码过期前 7 天提醒

PASS_WARN_AGE 7

bash - 批量修改现有用户密码策略

# 修改所有用户的密码有效期

for user in $(awk -F: '$3 >= 1000 {print $1}' /etc/passwd); do

   chage -M 90 -m 1 -W 7 $user

done

# 查看 root 密码策略

chage -l root

2.3 登录失败锁定策略

/etc/pam.d/sshd - SSH 登录失败锁定

# 在 auth 段第一行添加(必须放在第一行)

auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800

# 参数说明:

# deny=5      - 连续失败 5 次锁定

# unlock_time=1800 - 锁定 30 分钟(秒)

# even_deny_root   - root 也受限制

# root_unlock_time=1800 - root 锁定 30 分钟

/etc/pam.d/login - 本地登录失败锁定

# 同样在 auth 段第一行添加

auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800

bash - 查看和解锁用户

# 查看用户失败次数

pam_tally2 --user root

# 手动解锁用户

pam_tally2 -r -u root

# 重置所有用户计数

pam_tally2 --reset

💡 信创建议:生产环境建议 deny=3~5,unlock_time=900~1800(15-30分钟),既防暴力破解又不影响正常运维。

三、SSH 服务安全加固

SSH 是远程管理的主要入口,也是攻击面最大的服务之一。

3.1 SSH 核心安全配置

/etc/ssh/sshd_config - SSH 加固配置

# 仅使用 SSH 协议版本 2(禁用有漏洞的版本 1)

Protocol 2

# 禁用 Root 直接登录

PermitRootLogin no

# 禁用空密码登录

PermitEmptyPasswords no

# 密码认证 + 密钥认证 同时启用

PasswordAuthentication yes

PubkeyAuthentication yes

# 最大认证尝试次数

MaxAuthTries 3

# 空闲超时断开(秒)

ClientAliveInterval 300

ClientAliveCountMax 3

# 允许登录的用户(白名单机制)

AllowUsers admin deploy@192.168.1.*

# 禁止登录的用户

DenyUsers test guest

# 监听端口(建议修改默认 22)

Port 2222

# 仅监听内网地址

ListenAddress 192.168.1.10

# 禁用 X11 转发

X11Forwarding no

# 允许最大认证次数

MaxSessions 2

bash - 重启 SSH 服务

# 麒麟 / openEuler

systemctl restart sshd

# 验证配置语法

sshd -t

# 查看 SSH 状态

systemctl status sshd

⚠️ 修改 SSH 配置前,务必开启另一个终端保持连接,防止配置错误导致无法登录!

3.2 SSH 密钥认证配置

bash - 配置密钥登录

# 1. 生成密钥对(在客户端执行)

ssh-keygen -t ed25519 -C "admin@company.com"

# 2. 将公钥复制到服务器

ssh-copy-id -p 2222 admin@server-ip

# 3. 服务器端确认 authorized_keys 权限

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

# 4. 可选:禁用密码登录(仅密钥)

# 在 /etc/ssh/sshd_config 中设置:

# PasswordAuthentication no

四、安全审计:日志与监控

安全审计是事后追溯和合规检查的关键,等保 2.0 明确要求保留审计记录。

4.1 auditd 审计服务配置

bash - 安装并启用 auditd

# 麒麟 / openEuler

yum install -y audit audit-libs

# 启动并开机自启

systemctl enable auditd --now

# 查看状态

systemctl status auditd

/etc/audit/rules.d/audit.rules - 审计规则配置

# 监控 /etc/passwd 修改

-w /etc/passwd -p wa -k identity_changes

# 监控 /etc/shadow 修改

-w /etc/shadow -p wa -k password_changes

# 监控 /etc/group 修改

-w /etc/group -p wa -k group_changes

# 监控 SSH 配置修改

-w /etc/ssh/sshd_config -p wa -k ssh_config_changes

# 监控 sudoers 配置

-w /etc/sudoers -p wa -k sudoers_changes

-w /etc/sudoers.d/ -p wa -k sudoers_changes

# 监控用户命令执行

-a always,exit -F arch=b64 -S execve -k command_execution

# 监控文件权限修改

-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k permission_changes

# 监控用户登录/注销

-w /var/log/lastlog -p wa -k logins

-w /var/run/faillock -p wa -k failed_logins

bash - 加载审计规则并验证

# 重新加载规则

augenrules --load

# 查看当前规则

auditctl -l

# 查看审计日志

ausearch -k identity_changes

# 查看用户命令执行记录

ausearch -k command_execution | tail -20

# 生成审计报告

aureport --login --summary -i

4.2 rsyslog 日志配置

/etc/rsyslog.conf - 日志集中转发

# 将日志转发到日志服务器

*.info;mail.none;authpriv.none;cron.none @192.168.1.100:514

# 认证相关日志单独处理

authpriv.* /var/log/secure

bash - 日志文件防篡改

# 给关键日志添加不可变属性(即使是 root 也不能直接修改)

chattr +a /var/log/messages

chattr +a /var/log/secure

chattr +a /var/log/audit/audit.log

# 查看属性

lsattr /var/log/secure

# 需要修改时先去掉属性

chattr -a /var/log/secure

4.3 日志留存策略

/etc/logrotate.conf - 日志轮转配置

# 每周轮转一次

weekly

# 保留 12 个备份(约 3 个月)

rotate 12

# 创建新文件

create

# 压缩旧日志

compress

# 缺失日志不报错

missingok

# 为空时不轮转

notifempty

等保 2.0 要求审计日志至少留存 6 个月,建议 rotate 配置为 26(半年)或 52(一年)。

五、访问控制:权限与文件安全

5.1 关键文件权限配置

bash - 关键文件权限加固

# /etc/passwd 所有用户可读,仅 root 可写

chmod 644 /etc/passwd

# /etc/shadow 仅 root 可读写

chmod 000 /etc/shadow

# /etc/group 所有用户可读,仅 root 可写

chmod 644 /etc/group

# SSH 配置目录

chmod 700 /etc/ssh

chmod 600 /etc/ssh/sshd_config

# 审计配置

chmod 640 /etc/audit/auditd.conf

# sudo 配置

chmod 440 /etc/sudoers

chmod 755 /etc/sudoers.d

# 临时目录粘滞位

chmod 1777 /tmp

chmod 1777 /var/tmp

5.2 UMASK 默认权限

/etc/profile - 全局 UMASK 配置

# 设置默认 umask

umask 027

# 解释:

# 027 = 所有者读写执行,组读执行,其他无权限

# 文件默认权限:640 (rw-r-----)

# 目录默认权限:750 (rwxr-x---)

/etc/bashrc - 针对交互式 shell

# 同样设置 umask

umask 027

5.3 sudo 权限最小化

/etc/sudoers.d/custom - sudo 精细化配置

# 允许 admin 组执行所有命令

%admin ALL=(ALL) NOPASSWD: ALL

# 允许 deploy 用户仅执行特定命令

deploy ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx

deploy ALL=(ALL) NOPASSWD: /bin/systemctl reload nginx

# 允许 dba 组仅管理数据库服务

%dba ALL=(ALL) NOPASSWD: /bin/systemctl * mysqld

# 禁止某些命令(即使 ALL 也不允许)

Cmnd_Alias DENIED = /bin/su -, /bin/bash, /bin/sh

ALL ALL=(ALL) !DENIED

sudo 配置务必使用 visudo 命令编辑,可以语法检查,防止配置错误导致无法提权!

六、入侵防范:服务与端口管理

6.1 关闭不必要的服务

bash - 服务最小化

# 查看所有运行中的服务

systemctl list-units --type=service --state=running

# 常见可关闭的服务(根据实际业务)

systemctl disable --now bluetooth      # 蓝牙

systemctl disable --now cups           # 打印服务

systemctl disable --now avahi-daemon   # mDNS

# 图形界面服务器建议关闭

systemctl disable --now gdm            # GNOME 显示管理器

systemctl set-default multi-user.target  # 默认命令行模式

6.2 防火墙配置(firewalld/iptables)

bash - firewalld 配置

# 启动 firewalld

systemctl enable firewalld --now

# 默认拒绝所有入站

firewall-cmd --set-default-zone=drop

# 开放必要端口

firewall-cmd --permanent --add-port=2222/tcp    # SSH

firewall-cmd --permanent --add-port=80/tcp      # HTTP

firewall-cmd --permanent --add-port=443/tcp     # HTTPS

# 限制特定 IP 访问 SSH

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="2222" protocol="tcp" accept'

# 重载配置

firewall-cmd --reload

# 查看当前规则

firewall-cmd --list-all

/etc/hosts.allow + hosts.deny - TCP Wrappers

# /etc/hosts.deny - 先拒绝所有

ALL: ALL

# /etc/hosts.allow - 再允许特定

sshd: 192.168.1.0/255.255.255.0

sshd: 10.0.0.0/255.0.0.0

6.3 SELinux 配置(麒麟/openEuler)

bash - SELinux 配置

# 查看当前状态

getenforce

sestatus

# 临时开启 enforcing 模式

setenforce 1

# 永久配置(/etc/selinux/config)

SELINUX=enforcing

SELINUXTYPE=targeted

# 查看审计日志中的 SELinux 拒绝

ausearch -m avc -ts recent

# 生成允许规则

audit2allow -a -M mypolicy

semodule -i mypolicy.pp

信创建议:生产环境建议开启 SELinux enforcing 模式,虽然初期可能遇到权限问题,但安全收益巨大。

七、内核参数安全加固

7.1 网络安全参数

/etc/sysctl.conf - 网络安全内核参数

# 禁用 IP 源路由

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

# 禁用 ICMP 重定向

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

# 禁用安全 ICMP 重定向

net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.default.secure_redirects = 0

# 开启 SYN Cookies 防止 SYN Flood

net.ipv4.tcp_syncookies = 1

# 禁用 IPv6(如不需要)

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

# 开启反向路径过滤

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

# 忽略 ICMP 广播请求

net.ipv4.icmp_echo_ignore_broadcasts = 1

# 开启 TCP SYN 重试次数限制

net.ipv4.tcp_syn_retries = 5

net.ipv4.tcp_synack_retries = 5

7.2 内存与进程安全参数

/etc/sysctl.conf - 内存安全参数

# 开启 ASLR(地址空间布局随机化)

kernel.randomize_va_space = 2

# 限制核心转储(防止敏感信息泄露)

fs.suid_dumpable = 0

# 限制进程可以拥有的内存映射区域数量

vm.max_map_count = 65530

# 启用内存地址随机化

kernel.kptr_restrict = 2

# 限制 dmesg 访问

kernel.dmesg_restrict = 1

# 限制 perf 事件

kernel.perf_event_paranoid = 2

bash - 加载内核参数

# 立即生效

sysctl -p

# 验证配置

sysctl -a | grep accept_source_route

sysctl -a | grep randomize_va_space

八、账户安全管理

8.1 清理风险账户

bash - 账户安全检查与清理

# 检查空密码账户

awk -F: '$2 == "" {print $1}' /etc/shadow

# 锁定空密码账户

for user in $(awk -F: '$2 == "" {print $1}' /etc/shadow); do

   passwd -l $user

done

# 检查 UID 为 0 的非 root 账户(后门账户)

awk -F: '$3 == 0 && $1 != "root" {print $1}' /etc/passwd

# 删除或锁定不必要的系统账户

userdel -r games 2>/dev/null

userdel -r ftp 2>/dev/null

# 检查共享账户(相同 UID)

awk -F: '{print $3}' /etc/passwd | sort | uniq -d

8.2 会话超时配置

/etc/profile - 会话超时

# 设置空闲超时时间(秒)

TMOUT=600

export TMOUT

# 600 秒 = 10 分钟无操作自动退出

/etc/ssh/sshd_config - SSH 超时

# 客户端每 300 秒发送一次保活包

ClientAliveInterval 300

# 最大保活次数

ClientAliveCountMax 3

# 总超时时间 = 300 * 3 = 900 秒 = 15 分钟

九、一键基线检查脚本

以下脚本可用于批量检查信创系统的基线合规情况:

bash - 基线检查脚本(baseline_check.sh)

#!/bin/bash

# 信创系统安全基线检查脚本

# 支持:麒麟、统信 UOS、openEuler

PASS=0

FAIL=0

check_item() {

   if [ $1 -eq 0 ]; then

       echo "[PASS] $2"

       ((PASS++))

   else

       echo "[FAIL] $2"

       ((FAIL++))

   fi

}

echo "========== 信创系统基线检查 =========="

echo "检查时间: $(date)"

echo "主机名: $(hostname)"

echo "系统版本: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"

echo ""

# 1. SSH 配置检查

echo "--- SSH 安全配置 ---"

grep -q "^PermitRootLogin no" /etc/ssh/sshd_config

check_item $? "SSH 禁用 Root 登录"

grep -q "^Protocol 2" /etc/ssh/sshd_config

check_item $? "SSH 使用协议版本 2"

grep -q "^PermitEmptyPasswords no" /etc/ssh/sshd_config

check_item $? "SSH 禁用空密码"

# 2. 密码策略检查

echo "--- 密码策略 ---"

grep -q "minlen = 12" /etc/security/pwquality.conf

check_item $? "密码最小长度 12 位"

grep -q "ucredit = -1" /etc/security/pwquality.conf

check_item $? "密码包含大写字母"

grep -q "PASS_MAX_DAYS 90" /etc/login.defs

check_item $? "密码有效期 90 天"

# 3. 登录失败锁定

echo "--- 登录失败锁定 ---"

grep -q "pam_tally2" /etc/pam.d/sshd

check_item $? "SSH 登录失败锁定"

# 4. 审计配置检查

echo "--- 审计配置 ---"

systemctl is-active auditd >/dev/null 2>&1

check_item $? "auditd 服务运行"

[ -f /etc/audit/rules.d/audit.rules ]

check_item $? "审计规则文件存在"

# 5. 文件权限检查

echo "--- 文件权限 ---"

stat -c %a /etc/shadow | grep -q "^0"

check_item $? "/etc/shadow 权限正确"

stat -c %a /etc/ssh/sshd_config | grep -q "600"

check_item $? "/etc/ssh/sshd_config 权限正确"

# 6. 内核参数检查

echo "--- 内核参数 ---"

[ "$(sysctl -n net.ipv4.conf.all.accept_source_route)" = "0" ]

check_item $? "禁用 IP 源路由"

[ "$(sysctl -n kernel.randomize_va_space)" = "2" ]

check_item $? "开启 ASLR"

# 7. 账户安全检查

echo "--- 账户安全 ---"

awk -F: '$2 == "" {print $1}' /etc/shadow | wc -l | grep -q "^0$"

check_item $? "无空密码账户"

awk -F: '$3 == 0 && $1 != "root" {print $1}' /etc/passwd | wc -l | grep -q "^0$"

check_item $? "无异常 UID 0 账户"

# 8. 服务检查

echo "--- 服务状态 ---"

systemctl is-active firewalld >/dev/null 2>&1 || systemctl is-active iptables >/dev/null 2>&1

check_item $? "防火墙服务运行"

# 汇总

echo ""

echo "========== 检查汇总 =========="

echo "通过: $PASS 项"

echo "失败: $FAIL 项"

echo "合规率: $(( PASS * 100 / (PASS + FAIL) ))%"

脚本使用方法

bash - 执行检查

# 1. 保存脚本

chmod +x baseline_check.sh

# 2. 执行检查

./baseline_check.sh

# 3. 输出示例

# ========== 信创系统基线检查 ==========

# --- SSH 安全配置 ---

# [PASS] SSH 禁用 Root 登录

# [PASS] SSH 使用协议版本 2

# [FAIL] SSH 禁用空密码

# ...

# ========== 检查汇总 ==========

# 通过: 15 项

# 失败: 3 项

# 合规率: 83%

十、信创基线配置速查表

配置项配置文件推荐值检查命令
SSH 协议版本/etc/ssh/sshd_configProtocol 2grep ^Protocol /etc/ssh/sshd_config
SSH Root 登录/etc/ssh/sshd_configPermitRootLogin nogrep PermitRootLogin /etc/ssh/sshd_config
SSH 最大尝试/etc/ssh/sshd_configMaxAuthTries 3grep MaxAuthTries /etc/ssh/sshd_config
密码最小长度/etc/security/pwquality.confminlen = 12grep ^minlen /etc/security/pwquality.conf
密码复杂度/etc/security/pwquality.confucredit/lcredit/dcredit/ocredit = -1grep credit /etc/security/pwquality.conf
密码有效期/etc/login.defsPASS_MAX_DAYS 90grep PASS_MAX_DAYS /etc/login.defs
登录失败锁定/etc/pam.d/sshddeny=5 unlock_time=1800grep pam_tally2 /etc/pam.d/sshd
/etc/shadow 权限文件权限000stat -c %a /etc/shadow
/etc/ssh 目录权限目录权限700stat -c %a /etc/ssh
审计服务systemdactivesystemctl is-active auditd
防火墙systemdactivesystemctl is-active firewalld
SELinux/etc/selinux/configenforcinggetenforce
ASLRsysctlkernel.randomize_va_space=2sysctl kernel.randomize_va_space
IP 源路由sysctlaccept_source_route=0sysctl net.ipv4.conf.all.accept_source_route
空密码账户/etc/shadowawk -F: '$2==""{print $1}' /etc/shadow
会话超时/etc/profileTMOUT=600grep TMOUT /etc/profile

十一、信创基线实施建议

📋 上线前务必在测试环境验证所有配置,特别是 SSH 和 PAM 相关配置

🔒 建议开启 SELinux enforcing 模式,配合 audit2allow 逐步解决权限问题

📊 使用基线检查脚本定期巡检,建议每月执行一次

📝 所有配置变更需记录审计日志,便于事后追溯

💾 修改关键配置前务必备份,如 cp /etc/ssh/sshd_config{,.bak}

🔄 配置修改后使用 sshd -t、visudo -c 等工具验证语法

🛡️ 等保测评前使用本文脚本预检,提前发现并修复不合规项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值