RHEL最小化安装是降低攻击面的基础手段,需在Minimal Install基础上通过服务审计、监听验证、用途确认和持续巡检实现真正安全。

RHEL最小化安装本身不是安全策略,而是降低攻击面的基础手段;真正的安全服务审计需在最小化基础上主动识别、验证和加固运行中的服务。
最小化安装:从源头减少默认服务
RHEL 8/9 安装时选择“Minimal Install”或手动取消所有软件包组(如“Server with GUI”、“Web Server”),仅保留 @core 组。该模式默认不启用 httpd、vsftpd、postfix(除本地邮件队列外)、sshd(仍默认启用,但可后续禁用)等网络服务。安装后立即执行:
-
dnf list installed | wc -l查看已装包数量(典型最小化应 ≤ 300) -
systemctl list-unit-files --type=service --state=enabled检查开机自启服务,重点关注非systemd-开头且非系统必需的服务 - 删除冗余包:
dnf autoremove --setopt=remove_leaf_only=true清理孤立依赖
服务监听审计:确认实际暴露面
最小化安装不等于无监听服务。必须验证当前网络暴露情况:
-
ss -tunlp列出所有监听端口及对应进程(需 root 权限) - 重点检查
0.0.0.0:22(SSH)、:::22(IPv6 SSH)、127.0.0.1:*(本地服务)是否符合预期 - 对非必要监听项(如意外开启的
rpcbind、chronydUDP 端口),禁用对应服务:systemctl disable --now rpcbind - 使用
firewall-cmd --list-ports和--list-services核对防火墙放行规则是否与监听服务一致
服务用途验证:拒绝“默认即合理”假设
每个启用的服务都需明确业务依据。例如:
-
sshd:若仅需内网管理,修改/etc/ssh/sshd_config中ListenAddress 192.168.10.0/24并重载 -
chronyd:若主机为离线环境,停用并屏蔽:systemctl disable --now chronyd && systemctl mask chronyd -
systemd-resolved:最小化系统通常无需本地 DNS 缓存,systemctl disable --now systemd-resolved并确保/etc/resolv.conf直接指向上游 DNS - 检查
/etc/xinetd.d/或遗留 inetd 服务(RHEL 8+ 已弃用,但旧迁移系统可能残留)
持续审计机制:将检查固化为运维习惯
安全不是一次性动作。建议建立轻量级审计脚本并纳入日常巡检:
- 编写
/usr/local/bin/audit-services.sh,自动输出:启用服务列表、监听端口、防火墙开放项、异常网络连接(ss -tn state established | tail -20) - 用
systemd-analyze blame发现启动缓慢或可疑服务(如非标准路径的二进制) - 结合
rpm -Va验证关键服务配置文件(/etc/ssh/sshd_config、/etc/firewalld/)是否被未授权修改 - 将审计结果日志写入
/var/log/security/audit-$(date +%F).log,配合 logrotate 归档
最小化安装是起点,不是终点;审计的关键在于持续确认“这个服务为什么在这里”——答案必须来自业务需求,而非安装默认值。

















