本文基于 Red Hat Enterprise Linux 系统,按 NFS 导出配置→SELinux 安全管理→Firewalld 防火墙配置的顺序,完整梳理三大核心服务的理论知识、配置步骤与实操案例,适合运维人员快速上手与查阅。

一、NFS 网络文件系统导出配置(NFSv4 重点)

网络文件系统(NFS)可让远程主机通过网络挂载文件系统,实现资源集中共享,是企业环境常用的文件共享方案。

1.1 NFS 核心简介

  • NFS 允许远程主机像本地挂载一样操作远程文件系统,实现资源集中管理。
  • 服务器通过/etc/exports配置文件控制客户端访问权限,验证通过后客户端可正常操作文件 / 目录。
  • 所有 NFS 版本依赖RPC(远程过程调用) 实现通信。

 

1.2 NFS 所需服务(区分 v3/v4)

NFS 服务分为内核模块与用户态进程,NFSv4 简化了依赖服务,核心服务如下:

  1. nfsd/rpc.nfsd:NFS 服务器内核模块,处理客户端请求、提供服务线程。
  2. rpcbind:RPC 服务端口注册与映射,NFSv4 无需使用
  3. rpc.mountd:处理 NFSv3 客户端挂载请求,校验共享权限,NFSv4 仅用于导出配置、无线上操作。
  4. lockd:内核线程,实现 NFSv3 文件锁,NFSv4 无需使用
  5. rpc.statd:网络状态监控,服务器异常重启时通知客户端,NFSv4 无需使用
  6. rpc.rquotad:提供远程用户配额信息,需单独启动对应服务。
  7. rpc.idmapd:NFSv4 专用,实现user@domain字符串与本地 UID/GID 映射,需配置/etc/idmapd.confDomain参数。

NFSv4 关键特性:挂载 / 锁定协议合并,固定监听 TCP 2049 端口,无需 rpcbind、lockd、rpc.statd。

 

1.3 NFS 主机名指定格式

配置 NFS 共享时,可通过 3 种方式指定授权主机:

  1. 单台机器:完全限定域名、主机名、IP 地址。
  2. IP 网络a.b.c.d/z(CIDR)、a.b.c.d/子网掩码
  3. Netgroups@组名(NIS 网络组)。

 

1.4 NFS 服务器核心配置

NFS 共享配置有两种方式:编辑/etc/exports文件使用exportfs命令

1.4.1 /etc/exports配置规则

  • 空白行、#开头的注释行忽略,反斜杠\可换行。
  • 语法:导出目录 主机1(选项1) 主机2(选项2)
  • 关键注意:主机与括号间无空格,否则权限配置失效。 例:/home test.com(rw)(正确) vs /home test.com (rw)(错误)。

1.4.2 NFS 默认导出选项

未指定选项时,NFS 使用默认配置:

  • ro:只读,需手动指定rw开启读写。
  • sync:同步写入,数据写入磁盘后回复请求,async为异步写入。
  • wdelay:延迟写入,优化磁盘 IO,no_wdelay关闭(仅 sync 生效)。
  • root_squash:远程 root 权限压缩为nobodyno_root_squash关闭压缩,all_squash压缩所有远程用户。
  • 支持 ACL,no_acl关闭 ACL 功能。
  • 可通过anonuid/anongid指定压缩后的 UID/GID。

 

1.5 NFS 安装、启动与防火墙配置

  1. 安装 NFS 软件包

dnf install nfs-utils -y
  1. 启动并开机自启 NFS 服务

systemctl enable --now nfs-server
  1. NFSv4 防火墙放行

firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload

 

1.6 实操练习:NFS 服务器 + 客户端配置

步骤 1:服务器端配置

  1. 创建共享目录并授权

mkdir /data
chmod 777 /data
touch /data/testfile
  1. 编辑/etc/exports配置共享

echo "/data 192.168.115.141(rw)" >> /etc/exports
  1. 刷新导出配置

exportfs -r

步骤 2:客户端端配置

  1. 查看服务器共享目录

showmount -e 192.168.115.128
  1. 创建挂载目录并手动挂载

mkdir -p /nfsclient/client-data
mount 192.168.115.128:/data /nfsclient/client-data
  1. 开机自动挂载(编辑/etc/fstab

echo "192.168.115.128:/data /nfsclient/client-data nfs defaults 0 0" >> /etc/fstab

 

1.7 autofs 自动挂载配置

解决 NFS 长期挂载导致的超时问题,按需挂载、用完自动卸载

  1. 客户端安装 autofs

yum install autofs -y
  1. 编辑主配置/etc/auto.master

echo "/client /etc/auto.suibian" >> /etc/auto.master
  1. 编辑子配置/etc/auto.suibian

echo "upload 192.168.168.128:/nfs/upload" >> /etc/auto.suibian
  1. 重启服务并触发挂载

systemctl restart autofs
cd /client/upload

 


二、SELinux 安全管理实战(Nginx+NFS 场景)

SELinux(Security Enhanced Linux)是 Linux 内核的强制访问控制(MAC)安全模块,弥补传统 DAC 权限的不足,提升系统安全性。

2.1 SELinux 核心概念

  1. DAC vs MAC
    • DAC:传统用户 / 组 / 权限控制,管理员无法精细化管控。
    • MAC:SELinux 为进程、文件添加安全上下文(标签),策略默认拒绝所有访问,仅显式规则允许操作。
  2. SELinux 上下文:包含userroletypesecurity leveltype(以_t结尾)是核心。 例:Nginx 进程httpd_t、网页文件httpd_sys_content_t
  3. AVC 缓存:SELinux 决策缓存,提升检查效率,拒绝日志存于/var/log/audit/audit.log

 

2.2 SELinux 三种运行模式

  1. enforcing(强制):默认模式,强制执行策略,拒绝非法操作。
  2. permissive(宽容):加载策略、记录日志,但不拒绝操作,用于调试。
  3. disabled(禁用):不加载策略,不推荐,易导致文件标签丢失。

 

2.3 SELinux 模式切换

临时切换(重启失效)

# 切换为宽容模式
setenforce 0
# 切换为强制模式
setenforce 1
# 查看当前模式
getenforce

永久切换(需重启)

编辑/etc/selinux/config

# 强制模式
SELINUX=enforcing
# 宽容模式
SELINUX=permissive
# 策略类型(默认targeted)
SELINUXTYPE=targeted

重启系统生效。

 

2.4 禁用 SELinux 后重新启用的正确步骤

  1. 先设置为permissive模式,重启系统。
  2. 执行fixfiles -F onboot,创建/.autorelabel文件,下次开机自动重打标签。
  3. 无异常后切换为enforcing模式,重启生效。

 

2.5 非标应用 SELinux 配置(Nginx 实战)

场景:Nginx 监听 3131 端口、网页目录/www(非默认/var/www/html)。

  1. 安装 Nginx 并修改配置

dnf install nginx -y
mkdir /www
echo "welcome to xixi" > /www/index.html
  1. 为非标端口添加 SELinux 标签

semanage port -a -t http_port_t -p tcp 3131
  1. 为非标目录文件修复上下文

semanage fcontext -a -t httpd_sys_content_t /www/index.html
restorecon -v /www/index.html
  1. 重启 Nginx,访问验证

systemctl restart nginx
curl www.xixi.com:3131

 

2.6 SELinux 与 NFS 关联

通过nfs_export_all_rw/nfs_export_all_ro布尔值,防止 NFS 错误共享敏感目录(如/home)。

 


三、Firewalld 防火墙配置详解

firewalld 是 RHEL 默认的动态防火墙,基于nftables后端,通过区(zone)服务(service) 简化流量管理。

3.1 firewalld 核心基础

  1. 动态管理:修改规则无需重启防火墙服务。
  2. 区(zone):预定义规则集,按网络信任等级划分,一个接口仅属于一个区。
  3. 服务(service):预定义端口 / 协议规则,一键放行服务流量。
  4. 默认后端:RHEL 8/9 默认使用nftables,iptables 已废弃。

 

3.2 firewalld 预定义区说明

区名 作用说明
block 拒绝入站,仅允许出站连接
dmz 非军事化区,有限访问内网
drop 丢弃所有入站数据包,无通知
external 外部网络,启用伪装(路由器)
home 家庭网络,信任内部主机
internal 内部网络,高信任度
public 公共网络,默认区
trusted 允许所有网络连接
work 工作网络,中等信任度

 

3.3 firewalld 服务管理

  1. 查看所有预定义服务

firewall-cmd --get-services
  1. 服务配置文件
    /usr/lib/firewalld/services/(默认)、/etc/firewalld/services/(自定义)。

 

3.4 firewalld 启停与自启

# 取消屏蔽并启动
systemctl unmask firewalld
systemctl start firewalld
# 开机自启
systemctl enable firewalld
# 停止并禁用
systemctl stop firewalld
systemctl disable firewalld
# 屏蔽服务(禁止启动)
systemctl mask firewalld

 

3.5 firewalld 状态查看

# 查看运行状态
firewall-cmd --state
# 查看详细状态
systemctl status firewalld
# 查看默认区所有配置
firewall-cmd --list-all
# 查看允许的服务
firewall-cmd --list-services

 

3.6 firewalld 流量控制

3.6.1 紧急 panic 模式(阻断所有流量)

# 开启panic模式
firewall-cmd --panic-on
# 关闭panic模式
firewall-cmd --panic-off
# 查看panic状态
firewall-cmd --query-panic

3.6.2 放行预定义服务

# 临时放行http服务
firewall-cmd --add-service=http
# 永久生效
firewall-cmd --runtime-to-permanent

3.6.3 放行自定义端口

# 临时放行tcp 8080端口
firewall-cmd --add-port=8080/tcp
# 永久生效
firewall-cmd --runtime-to-permanent

 

3.7 firewalld 区管理

  1. 查看所有区

firewall-cmd --get-zones
  1. 创建自定义区

firewall-cmd --new-zone=testzone --permanent
firewall-cmd --reload
  1. 修改默认区

# 查看默认区
firewall-cmd --get-default-zone
# 设置默认区为trusted
firewall-cmd --set-default-zone=trusted
  1. 设置区目标(默认流量行为)

firewall-cmd --permanent --zone=testzone --set-target=DROP

目标可选:ACCEPT/REJECT/DROP/default

 


四、总结

本文完整覆盖RHEL 系统 NFS 文件共享、SELinux 安全加固、Firewalld 防火墙管控三大核心运维技能,从理论原理到实操步骤无遗漏,核心要点总结如下:

  1. NFS 共享:NFSv4 是主流版本,简化 RPC 依赖、固定 2049 端口;配置核心是/etc/exports语法(主机与括号无空格),权限选项rw/root_squash决定访问规则;autofs 可解决静态挂载超时问题,搭配防火墙放行 nfs 服务即可完成稳定共享。
  2. SELinux:作为 MAC 强制访问控制模块,弥补传统 DAC 权限短板,enforcing 为生产推荐模式;非标服务(如非默认端口 Nginx)需修改端口标签、文件上下文;禁用后重开需自动重打文件标签,配合 NFS 布尔值可防止共享越权。
  3. Firewalld:基于 nftables 的动态防火墙,区 + 服务简化流量管理,默认 public 区适配公共网络;紧急场景用 panic 模式阻断流量,配置规则需执行runtime-to-permanent永久生效,区目标可精细化控制默认流量行为。

三者协同使用,可构建文件共享 + 权限加固 + 网络防护的完整 Linux 运维体系,是企业服务器基础配置的核心方案,配置时重点关注语法细节、服务自启、规则永久生效,可规避绝大多数运维踩坑问题。

 

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐