1.管理服务器的防火墙
(1)netfilter
Linux 内核提供了 netfilter 框架,它是网络流量操作(如数据包过滤、网络地址转换和端口转换)的框架。netfilter 框架包含用于内核模块的 hook。
(2)nftables -->定义防火墙规则
nftables 数据包分类框架基于netfilter 框架而构建,可将防火墙规则应用到网络流量。在 RHEL9 中,nftables 是系统防火墙核心,取代了已弃用的 iptables 框架
(3)firewalld
firewalld 是一个防火墙管理器,它是 nftables 框架的前端(使用 nft 命令)
在 nftables 之前,firewalld 是一种 iptables 服务的替代方案,firewalld 曾使用 iptables 命令来直接配置 netfilter
借助 firewalld,可以将所有网络流量分为多个 zone,从而简化防火墙。根据数据包源 IP 地址或传入网络接口等条件,流量将转入相应 zone 的防火墙规则。每个 zone 都有自己的端口和服务列表,它们处于打开或者关闭状态
预定义服务:
Firewalld 上有一些预定义服务。这些服务定义可帮助识别要配置的特定网络服务。例如,可指定预构建的 nfs 服务来配置正确的端口和协议,而无需研究 nfs 服务的相关端口
| 服务名称 | 配置 |
|---|---|
| SSH | 本地 SSH 服务器,到 22/tcp 的流量 |
| dhcpv6-client | 本地 DHCPv6 客户端,到 fe80::/64 IPv6 网络中 546/udp 的流量 |
| ipp-client | 本地 IPP 打印,到 631/udp 的流量 |
| samba-client | 本地 Windows 文件和打印共享客户端,到 137/udp 和 138/udp 的流量 |
| mdns | 多播 DNS (mDNS) 本地链路名称解析,到 5353/udp 指向 224.0.0.251 (IPv4) 或 ff02::fb (IPv6) 多播地址的流量 |
(3)从命令行定义防火墙
firewall-cmd是firewalld的客户端
几乎所有命令都作用于 runtime 配置,当指定 --permanent 选项时除外
如果指定了 --permanent(修改配置文件),还须通过运行 firewall-cmd --reload 命令来激活设置,它将读取当前的永久配置并将其作为新的 runtime 配置来应用
许多命令都采用 --zone=ZONE 选项来确定所影响的区域
如果需要子网掩码,可使用 CIDR 表示法,如 192.168.1/24
2.SElinux端口标记
列出端口标签 --> semanage port -l

使用 grep 命令,通过服务名称过滤 SELinux 端口标签
root@host \~\]# semanage port -l \| grep ftp ftp_data_port_t tcp 20 ftp_port_t tcp 21, 989, 990 ftp_port_t udp 989, 990 tftp_port_t udp 69 使用 grep 命令,通过端口号过滤 SELinux 端口标签 \[root@host \~\]# semanage port -l \| grep -w 70 gopher_port_t tcp 70 gopher_port_t udp 70 管理端口标签 使用 semanage 命令可以分配新端口标签、删除端口标签或修改现有端口标签,-a 添加;-t 类型;-p 协议 #### 删除端口标签 * 删除自定义端口标签的语法与添加端口标签的语法相同,使用 -d 选项 shell ``` [root@host ~]# semanage port -d -t gopher_port_t -p tcp 71 ``` *** ** * ** *** #### 修改端口标签 * 使用 -m 选项更改端口绑定,这种流程比删旧添新更高效 shell ``` [root@server ~]# semanage port -m -t http_port_t -p tcp 71 ```