RHEL最小化安装需从初始构建阶段控制攻击面,包括选择Minimal Install模板、禁用GUI、清理隐藏组和无用包,并立即审计默认服务、加固SELinux与FirewallD,辅以SCAP扫描和配置基线比对。

Red Hat Enterprise Linux(RHEL)最小化安装不是简单地勾选“Minimal Install”,而是以“按需启用”为原则,从系统初始构建阶段就控制攻击面。默认安全服务审计必须在安装后立即执行,而非等系统上线后再补救。
最小化安装的核心操作要点
最小化安装的目标是仅保留运行核心业务所必需的软件包与服务,避免默认启用非必要组件:
- 安装时选择“Minimal Install”模板,并在“Software Selection”界面取消勾选所有非必需环境组(如“Web Server”、“Development Tools”)
- 禁用安装后自动启动的图形界面:若无需GUI,安装后执行 systemctl set-default multi-user.target 并重启
- 使用 dnf group list hidden --installed 检查是否意外安装了隐藏组(如“Legacy UNIX Compatibility”),再用 dnf groupremove 清理
- 安装完成后立即执行 dnf autoremove --assumeyes,清理因依赖关系残留的无用包
默认启用服务的安全审计流程
RHEL 8/9 默认启用的服务数量已大幅缩减,但仍需人工确认每个活跃服务的业务必要性与监听范围:
- 列出当前开机自启且正在运行的服务:systemctl list-unit-files --state=enabled --type=service | grep enabled,再结合 ss -tlnp 查看实际监听端口及对应进程
- 重点关注以下高风险默认服务:cups(打印服务)、avahi-daemon(零配置网络)、rpcbind(NFS旧协议)、rsyslog(若未集中日志管理,可限制其监听范围)
- 对非必要服务执行 systemctl disable --now <service>;对需保留但应限制访问的服务(如sshd),修改 /etc/ssh/sshd_config 中的 ListenAddress 或配合防火墙策略
- 使用 rpm -qf /usr/lib/systemd/system/<service>.service 反查服务所属软件包,便于后续批量评估或卸载
SELinux与FirewallD的协同加固
最小化安装不等于安全,默认策略仍需主动校准:
- 确认 SELinux 处于 enforcing 模式:getenforce,若为 permissive,检查 /etc/selinux/config 并重启;使用 sestatus -b 查看布尔值开关,关闭非必要项(如 httpd_can_network_connect)
- FirewallD 默认启用 public zone,应根据网络角色调整:内网主机可设为 trusted,DMZ主机启用 drop 并显式放行端口,禁用 icmp-block-inversion 防止误放ICMP
- 避免混用 iptables 与 firewalld:检查 ls /etc/sysconfig/{iptables,ip6tables} 是否为空,非空则清空并停用 legacy 服务
自动化审计与基线比对建议
人工检查易遗漏,推荐引入轻量级自动化手段建立可复现的安全基线:
- 使用 oscap xccdf eval --profile ospp --report report.html /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml 运行SCAP合规扫描(需先安装 scap-security-guide)
- 导出当前服务状态快照:systemctl list-units --type=service --state=running > services-running-$(hostname)-$(date +%F).log,作为后续变更对比依据
- 将关键配置文件(/etc/passwd、/etc/shadow-、/etc/ssh/sshd_config、/etc/firewalld/zones/public.xml)纳入版本控制或定期哈希校验(如 sha256sum)
最小化与审计不是一次性任务,而是每次系统变更后的必检环节。真正有效的安全始于安装镜像的选择,成于每项服务的明确授权。

















