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
相关推荐
骑上单车去旅行13 分钟前
MD5校验对比脚本
linux·服务器·windows
平生幻24 分钟前
Linux 常用命令
linux
期待着201327 分钟前
docker 安装 ,在centos7.9
运维·docker·容器
踏月的造梦星球34 分钟前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
MXsoft6181 小时前
平台化是智能运维发展的必然趋势吗?
运维
ShirleyWang0122 小时前
让headlamp控制台能访问
linux·服务器·python·k8s·k3s
liuccn2 小时前
Linux 存储系统:LVM 与直接分区
linux·运维
捷配链2 小时前
六层服务器板行业材料与工艺标准化选型指南
服务器·制造·pcb
xexpertS4 小时前
CI/CD 熔断机制:如何通过编排级熔断器提升开发者效率
java·linux·运维
xuefeiniao4 小时前
CentOS + 宝塔服务器偶发 SSH、面板、网站全部无法访问排查记录(PHP-FPM 内存耗尽案例)
服务器·centos·ssh·php