Linux -- firewalld的富语言规则

  1. Firewalld支持两种类型的NAT:IP地址伪装端口转发。

(1)IP地址伪装

地址伪装(masquerade): 通过地址伪装,NAT 设备将经过设备的包转发到指定接收方,同时将通过的数据包的源地址更改为其自己的接口地址,当返回的数据包到达时,会将目的地址修改为原 始主机的地址并做路由。地址伪装可以实现局域网多个地址共享单一公网地址上网,类似于NAT技术中的端口多路复用(PAT) IP地址伪装仅支持 IPv4,不支持 IPv6。

(2)端口转发

端口转发(Forward-port): 也称为目的地址转换或端口映射。通过端口转发,将指定IP地址及端口的流量转发到相同计算机上的不同端口,或不同计算机上的端口。企业内网的服务器一般都采用私网地址,可以通过端口转发将使用私网地址的服务器发布到公网,以便让互联网用户访问。例如,当接收互联网用户的HTTP请求时,网关服务器判断数据包的目标地址与目标端口,一旦匹配指定规则,则将其目标地址修改为内网真正的服务器地址,从而建立有效连接。

2.使用富语言

firewalld的富语言(rich language)提供了一种不需要了解 iptables 语法的通过高级语言配置复杂 IPv4和IPv6 防火墙规则的机制,为管理员提供了一种表达性语言,通过这种语言可以表达firewalld 的基本语法中未涵盖的自定义防火墙规则。例如,仅允许从单个IP地址(而非通过某个区域路由的所有IP地址)连接到服务。

富规则可用于表达基本的允许/拒绝规则,也可以用于配置记录(面向syslog和aditd),以及端口转发、伪装和速率限制。

3.理解富规则命令

firewall-cmd 有四个选项可以用于处理富规则,所有这些选项都可以同常规的--permanent 或 --zone=<ZONE>选项组合使用,具体选项见表3-1。

任何已配置的富规则都会显示在firewall-cmd--list-all 和firewall-cmd----list-all-zones的输出结果中。具体语法解释可参考电子档。

  1. 规则配置举例

(1)为认证报头协议AH使用新的IPv4和IPv6连接。

复制代码
[root@gateway-server ~]# firewall-cmd --add-rich-rule='rule protocol value=ah accept'

(2)允许新的Pv4和Pv6连接 FTP,并使用审核每分钟记录一次。

复制代码
[root@gateway-server ~]# firewall-cmd --add-rich-rule='rule service name=ftp log limit value=1/m audit accept'

(3)允许来自192.168.0.0/24地址的TFTP协议的IPv4连接,并且使用系统日志每分钟记录 一次。

复制代码
[root@gateway-server ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept'

(4)为RADIUS协议拒绝所有来自1:2:3:4:6::的新IPv6连接,日志前缀为"dns",级别 为"info",并每分钟最多记录3次。接受来自其他发起端新的IPv6 连接。

复制代码
[root@gateway-server ~]# firewall-cmd --add-rich-rule='rule family="ipv6" source address="1:2:3:4:6::" service name="radius" log prefix="dns" level="info" limit value="3/m" reject'

[root@gateway-server ~]# firewall-cmd --add-rich-rule='rule family="ipv6" service name="radius" accept'

(5)将源192.168.2.2地址加入白名单,以允许来自这个源地址的所有连接。

复制代码
[root@gateway-server ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.2.2" accept'

(6)拒绝来自public区域中IP地址192.168.0.11的所有流量。

复制代码
[root@gateway-server ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'

(7)丢弃来自默认区域中任何位置的所有传入的ipsec esp协议包。

复制代码
[root@gateway-server ~]# firewall-cmd --add-rich-rule='rule protocol value="esp" drop'

(8)在192.168.1.0/24子网的dmz区域中,接收端口7900~7905的所有TCP包。

复制代码
[root@gateway-server ~]# firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept'

(9)接收从 work 区域到 SSH 的新连接,以notice级别且每分钟最多三条消息的方式将新连接记录到syslog。

复制代码
[root@gateway-server ~]# firewall-cmd --zone=work --add-rich-rule='rule service name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'

(10)在接下来的5min内,拒绝从默认区域中的子网192.168.2.0/24到DNS的新连接,并且拒绝的连接将记录到 audit系统,且每小时最多一条消息。

复制代码
[root@gateway-server ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.2.0/24 service name=dns audit limit value="1/h" reject' --timeout=300
相关推荐
bosins6 小时前
彻底解决 WSL 2.7+ 空闲自动关闭/内存回收导致 Docker 中断的问题
linux·docker·wsl·dashboard
LongRunning6 小时前
【Linux】H3网络(二)
linux
国际云,接待7 小时前
华为云 EVS 性能诊断:用 CES、ECS QoS 与 fio 定位 IOPS 和吞吐瓶颈
服务器
xx~t8 小时前
嵌入式学习——ARM1
linux·arm开发·嵌入式硬件·arm
xx~t8 小时前
嵌入式——ARM1(详细篇)
linux·arm开发·嵌入式硬件·arm
我要见SA姐18 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
Elastic 中国社区官方博客9 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
fengkai454510 小时前
八、Docker详解4-5
运维·docker
智恒百亿10 小时前
RTX 5090 八卡服务器 vs RTX PRO 6000 整机:AI 推理、微调与渲染选型部署指南
运维·服务器·rtx5090
ManageEngineITSM10 小时前
DevOps和ITIL是什么关系?是替代还是互补一文讲清
java·服务器·资产管理·变更管理