安全加固实践:openEuler 的全面安全保护【华为根技术】
安全加固实践:openEuler 的全面安全保护
咱今天聊点“接地气又实用”的东西:在企业级生产环境里,如何对 openEuler 做全面的安全加固?不是做论文式的理论堆叠,而是能马上落地、能自动化、能被运维/安全团队长期维持的实践方案。文章会讲原则、给具体配置示例和自动化脚本,便于你直接搬运到环境里改造。
核心安全原则(先把方向定清楚)
在动手之前,先牢记几条原则:
- 纵深防御(defense-in-depth):网络边界、主机内核、应用运行时、身份与权限、审计与响应——分层防护。
- 最小权限(principle of least privilege):能少给权限就别给,能限制接口就限制接口。
- 可观测与可追溯:没有日志的安全事件就是猜谜。审计、日志集中、告警必不可少。
- 自动化和可重复:人工改配置容易出错,使用 Playbook/CI 来固化安全基线。
有了这些心法,下面我们把具体实践拆开来讲:主机、内核、系统服务、容器/云原生、审计与响应、以及自动化落地。
1 — 主机与账户安全:从 SSH 到 sudo 策略
常见漏斗是“账号泄露→横向渗透”。关键做法:禁止密码登录、强制公钥、限制 root 远程登录、二次认证(MFA)。示例 sshd_config
关键项:
# /etc/ssh/sshd_config(关键安全项)
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
AllowUsers ops admin@corp.com
同时要做 sudo 最小授权、把敏感操作走审计通道(sudo 日志需集中到 SIEM)。如果有 PAM,可加入 OTP/MFA。
2 — 内核与网络硬化:sysctl 基线
通过内核参数能阻断大量常见网络攻击。把下面放 /etc/sysctl.d/99-hardening.conf
并 sysctl --system
应用:
# /etc/sysctl.d/99-hardening.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
这些项是基础,结合防火墙策略(firewalld 或 nftables)限制入站端口、白名单管理管理接口。
3 — 强制访问控制:SELinux / Least-Privilege Sandbox
openEuler 在企业部署中应启用 SELinux(或等效 MAC 机制),把敏感服务运行在受限上下文。遇到第三方服务报错,可用 ausearch
+ audit2allow
生成最小策略,示例如下(快速流程):
# 当某服务因 SELinux 被拒绝时,提取 log 并生成 policy module
ausearch -m avc -ts recent | audit2allow -M myapp_local
semodule -i myapp_local.pp
注意:目标是生成最小放通规则,而不是把 SELinux 关掉。
4 — 服务/进程沙箱化:systemd 的安全选项
systemd 单元可以直接做进程隔离,实战常用配置示例如下,放在服务 unit 的 [Service]
段:
# 示例 systemd service 片段(部分)
PrivateTmp=true
NoNewPrivileges=true
ProtectSystem=full
ProtectHome=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
这些选项能大幅减少服务被攻破后的横向危害面。
5 — 镜像与容器安全(云原生场景)
容器环境请从镜像源头做起:最小基础镜像、镜像签名、镜像扫描(CVE 扫描工具),运行时强制 seccomp、drop all capabilities,再按需放行。示例 docker run:
docker run --rm --security-opt seccomp=/etc/docker/seccomp.json --cap-drop ALL myapp:1.0
若使用 Kubernetes,启用 PodSecurityPolicy / OPA Gatekeeper,限制容器权限和 hostPath 使用。
6 — 完整性校验与审计:AIDE + auditd + log 聚合
建议至少部署三件套:文件完整性检查(AIDE)、系统审计(auditd)、日志集中(rsyslog/Fluentd -> ELK/Graylog/SIEM)。示例 AIDE 定时检查脚本:
# /usr/local/bin/aide-check.sh
aide --check | tee /var/log/aide/check-$(date +%F).log
# 结合 cron 或 systemd-timer 周期执行,并在变更时触发告警
auditd 应配置关键 syscalls 监控(execve、chown 等),并把审计日志转发至集中平台,便于溯源与取证。
7 — 自动化与合规扫描:OpenSCAP / CI 集成
把安全配置、基线检查纳入 CI:在镜像构建/配置发布前跑 OpenSCAP 或类似的基线扫描,CI 报告作为准入条件。同时把补丁管理自动化(定期测试后在非高峰批量滚动升级),以减少已知漏洞暴露时间。
8 — 实战脚本:用 Ansible 固化主机基线(示例片段)
下面是一个最简的 Ansible 任务示例,用于下发 sysctl 并确保 sshd 配置满足基线(伪代码):
# playbook: hardening.yml(片段)
- hosts: all
become: yes
tasks:
- name: Deploy sysctl hardening
copy:
dest: /etc/sysctl.d/99-hardening.conf
content: |
net.ipv4.ip_forward = 0
net.ipv4.conf.all.rp_filter = 1
notify: reload sysctl
- name: Ensure sshd_config secure
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^PermitRootLogin'
line: 'PermitRootLogin no'
notify: restart sshd
handlers:
- name: reload sysctl
command: sysctl --system
- name: restart sshd
service:
name: sshd
state: restarted
把这样的 playbook 加入版本控制、在变更前跑扫描与回归测试,变更过程可追溯。
结语与感受
说到这里,真心话:安全加固不是一夜工程。很多团队把安全当门禁卡或防火墙开关看,结果把“表面安全”做好了,底层可观测、补丁与流程没有治理,越到实战越暴露问题。openEuler 作为企业级操作系统,做硬化的价值在于它常用于关键业务与云平台,把上述策略系统化、自动化并且训练团队的安全思维,才能把事故概率和影响降到最低。
- 点赞
- 收藏
- 关注作者
评论(0)