
随着数字基础设施不断发展,操作系统的安全性成为企业与开发者关注的重点。openEuler 作为面向多场景的自主创新操作系统,在安全机制设计上持续优化,保障系统稳定运行和数据安全。本文将围绕 openEuler 的内置安全机制进行深度解析,并通过实操案例展示系统加固过程,帮助用户提升 openEuler 的安全防护能力。
镜像地址:https://www.openeuler.org/en/ 点击直达

SELinux 是 Linux 系统重要的强制访问控制机制,可以有效防止服务越权访问敏感资源。openEuler 默认集成 SELinux,并支持灵活的策略配置。
查看 SELinux 状态:
sestatus启用/禁用 SELinux:编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 设置为 enforcing(启用)或 disabled(禁用),重启后生效。
策略调整:可以通过 setsebool 命令调整策略,例如允许 Apache 访问网络:
setsebool -P httpd_can_network_connect onopenEuler 内置 firewalld,简化了防火墙管理,适用于多种网络场景。
查看防火墙状态:
systemctl status firewalld
我们设置端口打开 比如我们想要开放 http 或者 mysql 就按照对应的端口号来
http 是 80 或者 https 8080 再或者 mysql 3306 这个根据你的需求来开放对于的端口 才能使得数据流通访问。
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
只允许特定 IP 访问 SSH:
这个访问方式就属于进阶级别的,让某个 IP 单独访问我们的的服务器哪个协议 哪个网站
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
firewall-cmd --reloadopenEuler 支持细粒度的用户权限管理和账户加固措施。
创建受限用户:
useradd secureuser
passwd secureuser
这个·时候 用户没权限 需管理员安排权限 大大的保证了我们用户无法越级来操作的安全风险
配置 sudo 权限:编辑 /etc/sudoers 文件,添加:
secureuser ALL=(ALL) ALL这条命令就是然这个用户有很大的权限这样能操作我们的openEuler 操作系统
设置密码复杂度与过期策略:编辑 /etc/login.defs 与 /etc/security/pwquality.conf,如设置最小密码长度为 12:
minlen = 12openEuler 集成 auditd,可实现关键操作的实时监控和日志审计。
启用 auditd 服务:
systemctl enable auditd
systemctl start auditd监控敏感文件变更:
auditctl -w /etc/passwd -p wa -k passwd_changes查看审计日志:
ausearch -k passwd_changes
声明作用:
/etc/passwd,系统会自动记录详细日志,便于事后审查和溯源。以限制某服务访问特定目录为例:
创建测试目录和服务账户:
配置 SELinux 策略,禁止其他服务访问该目录:
我们要先下载测试工具 不然有些命令无法调用
# 1. 安装 SELinux 管理工具
dnf install -y policycoreutils-python-utils
# 2. 创建目录并设置所有者
mkdir -p /data/secure
chown secureuser:secureuser /data/secure
# 3. 配置 SELinux 上下文
semanage fcontext -a -t user_home_t "/data/secure(/.*)?"
# 4. 应用 SELinux 策略
restorecon -Rv /data/secure
# 5. 验证 SELinux 上下文
ls -Z /data/secure测试访问,查看 SELinux 日志:
tail -f /var/log/audit/audit.log
记录了 root 用户执行了 semanage 命令
修改了 SELinux 的 fcontext 策略(将目录设置为 user_home_t 类型)
如果系统出现安全问题,可以通过日志追溯是谁、什么时候、做了什么操作
防止内部人员恶意篡改配置
满足企业安全审计要求(如 ISO 27001、等保等)
证明系统有完整的操作记录
当 SELinux 策略导致服务异常时,可以通过日志快速定位问题
查看当前规则:
firewall-cmd --list-all只允许公司内网访问 Web 服务:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.189.0/24" port port="80" protocol="tcp" accept'
firewall-cmd --reload
配置强密码策略:编辑 /etc/security/pwquality.conf,设置:
minlen = 12
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1充分的保证 用户密码的安全性
参数 | 设置值 | 作用 |
|---|---|---|
minlen | 12 | 密码最小长度为 12 个字符 |
dcredit | -1 | 至少包含 1 个数字(0-9) |
ucredit | -1 | 至少包含 1 个大写字母(A-Z) |
ocredit | -1 | 至少包含 1 个特殊字符(!@#$%等) |
lcredit | -1 | 至少包含 1 个小写字母(a-z) |

禁止 root 远程登录:编辑 /etc/ssh/sshd_config,设置:
PermitRootLogin no
systemctl restart sshd这条命令我就不示范了 因为我用的 root 远程 不然会断
# 1. 编辑内核参数
vi /etc/sysctl.conf
# 2. 添加以下安全配置
# 防止 IP 欺骗
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 禁用 ICMP 重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# 禁用源路由
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
# 启用 SYN Cookies 防止 SYN Flood 攻击
net.ipv4.tcp_syncookies = 1
# 禁用 ping(可选)
net.ipv4.icmp_echo_ignore_all = 1
# 限制 core dump
kernel.core_uses_pid = 1
fs.suid_dumpable = 0
# 3. 应用配置
sysctl -p
# 4. 验证配置
sysctl -a | grep rp_filter
一定要 应用不然无效
模拟测试:
# 从另一台机器 ping 服务器(应该无响应)
ping your_server_ip
# 查看 SYN 连接状态
netstat -an | grep SYN_RECV
经过上述加固措施,openEuler 系统的安全性显著提升:
为了验证加固措施的有效性,并确保系统性能不受影响,
接下来我们开始测试环节 测试
测试目标: 验证 SELinux 是否能有效阻止非授权服务访问敏感目录。
使用普通用户尝试访问 /data/secure 目录
这里我删除了普通用户 如果你服务器下用户多的话可以自己测试
ausearch -m avc -ts recent测试结果: SELinux 成功拦截非法访问,日志中记录了详细的拒绝信息。
测试目标: 验证防火墙规则是否生效。
从外部主机尝试访问未开放的端口(如 3306)
telnet 服务器IP 3306可以看得出来 同网段的主机 是可以访问防火墙已经开放的端口

尝试访问已开放的端口(如 8080)
未开放端口无法访问,已开放端口正常连接,防火墙规则生效。
测试目标: 验证敏感文件变更是否被记录。
尝试修改 /etc/shadow 文件查看审计日志
简单来说:它能追踪谁、在什么时间、对 /etc/shadow 文件做了什么操作。
ausearch -k shadow_changes
每个字段代表不同的意思你可以自己查询翻译 就能一目了然
所有修改操作均被详细记录,包括时间、用户、操作类型等。
为了验证安全加固措施对系统性能的影响,我们在加固前后分别进行了 CPU、内存、磁盘 IO 的基准测试。
测试命令:
sysbench cpu --cpu-max-prime=20000 --threads=4 run
测试结果:
指标 | 值 | 含义 |
|---|---|---|
总耗时 | 10.0007 秒 | 测试运行了 10 秒 |
总事件数 | 58604 | 10 秒内完成了 58604 次计算 |
指标 | 值 | 含义 | 评价 |
|---|---|---|---|
最小延迟 | 0.65 ms | 最快的一次计算耗时 | ✅ 非常快 |
平均延迟 | 0.68 ms | 平均每次计算耗时 | ✅ 优秀 |
最大延迟 | 4.42 ms | 最慢的一次计算耗时 | ⚠️ 有波动 |
95% 分位 | 0.77 ms | 95% 的请求在 0.77ms 内完成 | ✅ 稳定 |
总延迟 | 39970.95 ms | 所有计算的累计耗时 | - |
测试命令:
sysbench memory --memory-block-size=1M --memory-total-size=10G run
测试结果:
延迟分布(毫秒):
│
│ ████████████████████████████████████ 95% ≤ 0.05ms
│ ██ 5% > 0.05ms
│ █ Max = 2.15ms
│
└─────────────────────────────────────────────────
0.02 0.05 2.15
(min) (avg/95%) (max)指标 | 值 | 含义 |
|---|---|---|
总操作次数 | 10240 | 写入了 10240 个 1MB 数据块 |
每秒操作数 | 21956.98 ops/s | 每秒完成 21957 次写入操作 |
数据传输量 | 10240 MiB | 总共写入 10GB 数据 |
内存带宽 | 21956.98 MiB/s | 内存写入速度约 21.4 GB/s |
测试命令:
fio --name=randwrite --ioengine=libaio --iodepth=16 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting
测试结果:
延迟分布:
│
│ ████████████████████████████████████ 50% ≤ 2.04ms
│ ██████████████████████████████████ 90% ≤ 4.42ms
│ ████████████████████████████████ 95% ≤ 6.52ms
│ ██████████████████████████ 99% ≤ 28.18ms
│ ██ 99.9% ≤ 117.97ms
│ █ Max = 648.69ms
│
└─────────────────────────────────────────────────
0.038 2.04 4.42 6.52 28.18 117.97 648.69
(min) (50%) (90%) (95%) (99%) (99.9%) (max)指标 | 值 | 换算 | 含义 |
|---|---|---|---|
IOPS | 17,900 | 17.9k | 每秒完成 17,900 次随机写入操作 |
带宽 (MiB/s) | 69.9 MiB/s | 73.3 MB/s | 每秒写入 69.9 MiB 数据 |
总写入量 | 4096 MiB | 4 GB | 4 个任务各写入 1GB |
总耗时 | 58.596 秒 | ~59 秒 | 完成全部写入用时 |
通过以上测试数据可以得出以下结论:
✅ 安全性显著提升:
✅ 性能影响极小:
✅ 安全与性能兼顾:
在实际生产环境中,建议结合 openEuler 的安全机制,定期进行加固与审计,保障系统稳定与数据安全:
本文通过实操与性能测试,深入解析了 openEuler 的安全特性及加固方法,展示了其在服务器和生产环境中的安全优势。希望能为广大开发者和运维人员提供参考与实践指南。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。