搜索
您的当前位置:首页正文

CentOS7firewalld配置详解(转)

来源:小奈知识网
CentOS7firewalld配置详解(转)

1.在CentOS 7⾥有⼏种防⽕墙共存:firewalld、iptables、ebtables。

默认是使⽤firewalld来管理netfilter⼦系统,不过底层调⽤的命令仍然是iptables等。

firewalld跟iptables⽐起来,不好的地⽅是每个服务都需要去设置才能放⾏,因为默认是拒绝。⽽iptables⾥默认是每个服务是允许,需要拒绝的才去限制。

firewalld与iptables的关系

firewalld跟iptables⽐起来⾄少有两⼤好处:

1)firewalld可以动态修改单条规则,⽽不需要像iptables那样,在修改了规则后必须得全部刷新才可以⽣效;

2)firewalld在使⽤上要⽐iptables⼈性化很多,即使不明⽩“五张表五条链”⽽且对TCP/IP协议也不理解也可以实现⼤部分功能。注:firewalld⾃⾝并不具备防⽕墙的功能,⽽是和iptables⼀样需要通过内核的netfilter来实现,

也就是说firewalld和 iptables⼀样,他们的作⽤都是⽤于维护规则,⽽真正使⽤规则⼲活的是内核的netfilter,只不过firewalld和iptables的结构以及使⽤⽅法不⼀样罢了。

2.⼀个重要的概念:区域管理

2.1 firewalld将⽹卡对应到不同的区域(zone),zone 默认共有9个:block dmz drop external home internal public trusted work.

不同的区域之间的差异是其对待数据包的默认⾏为不同,根据区域名字我们可以很直观的知道该区域的特征,在CentOS7系统中,默认区域被设置为public.

在最新版本的fedora(fedora21)当中随着 server 版和 workstation 版的分化则添加了两个不同的⾃定义 zone FedoraServer 和FedoraWorkstation 分别对应两个版本。

通过将⽹络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。

例如,互联⽹是不可信任的区域,⽽内部⽹络是⾼度信任的区域。⽹络安全模型可以在安装,初次启动和⾸次建⽴⽹络连接时选择初始化。2.2 该模型描述了主机所连接的整个⽹络环境的可信级别,并定义了新连接的处理⽅式。有如下⼏种不同的初始化区域:

阻塞区域(block):任何传⼊的⽹络数据包都将被阻⽌。

⼯作区域(work):相信⽹络上的其他计算机,不会损害你的计算机。家庭区域(home):相信⽹络上的其他计算机,不会损害你的计算机。

公共区域(public):不相信⽹络上的任何计算机,只有选择接受传⼊的⽹络连接。

隔离区域(DMZ):隔离区域也称为⾮军事区域,内外⽹络之间增加的⼀层⽹络,起到缓冲作⽤。对于隔离区域,只有选择接受传⼊的⽹络连接。

信任区域(trusted):所有的⽹络连接都可以接受。丢弃区域(drop):任何传⼊的⽹络连接都被拒绝。

内部区域(internal):信任⽹络上的其他计算机,不会损害你的计算机。只有选择接受传⼊的⽹络连接。外部区域(external):不相信⽹络上的其他计算机,不会损害你的计算机。只有选择接受传⼊的⽹络连接。注:FirewallD的默认区域是public。

2.3 firewalld默认提供了九个zone配置⽂件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,

他们都保存在“/usr/lib/firewalld/zones/”⽬录下。

默认情况下,在/etc/firewalld/zones下⾯只有⼀个public.xml。如果给另外⼀个zone做⼀些改动,并永久保存,那么会⾃动⽣成对应的配置⽂件.

⽐如给work zone增加⼀个端⼝:

firewall-cmd --permanent --zone=work --add-port=1000/tcp此时就会⽣成⼀个work.xml的配置⽂件

2.4 查看XX区域的永久配置⽂件:

[root@zcwyou ~]# cat /etc/firewalld/zones/XX.xml

注意:防⽕墙配置⽂件也可以⼿动修改,修改后记得reload防⽕墙2.5 配置⽅法

firewalld的配置⽅法主要有三种:firewall-config、firewall-cmd和直接编辑xml⽂件,其中 firewall-config是图形化⼯具,firewall-cmd是命令⾏⼯具。

⽽对于linux来说⼤家应该更习惯使⽤命令⾏⽅式的操作,所以 firewall-config我们就不给⼤家介绍了。firewalld默认配置⽂件有两个:

/usr/lib/firewalld/ (系统配置,尽量不要修改)/etc/firewalld/ (⽤户配置地址)

3.什么是服务?

3.1 在 /usr/lib/firewalld/services/ ⽬录中,还保存了另外⼀类配置⽂件,每个⽂件对应⼀项具体的⽹络服务,如 ssh 服务等.与之对应的配置⽂件中记录了各项服务所使⽤的 tcp/udp 端⼝,在最新版本的 firewalld 中默认已经定义了 70+ 种服务供我们使⽤.

当默认提供的服务不够⽤或者需要⾃定义某项服务的端⼝时,我们需要将 service 配置⽂件放置在 /etc/firewalld/services/ ⽬录中.service 配置的好处显⽽易见:

第⼀,通过服务名字来管理规则更加⼈性化,

第⼆,通过服务来组织端⼝分组的模式更加⾼效,如果⼀个服务使⽤了若⼲个⽹络端⼝,则服务的配置⽂件就相当于提供了到这些端⼝的规则管理的批量操作快捷⽅式。

3.2 假如你服务器的ftp不使⽤默认端⼝,默认ftp的端⼝21改为1121,但想通过服务的⽅式操作防⽕墙。代码如下:

复制模版到/etc,以便修改和调⽤

[root@zcwyou ~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/修改模版配置

[root@zcwyou ~]# vim /etc/firewalld/services/ftp.xml把21改为1121

[root@zcwyou ~]# vim /etc/firewalld/zones/public.xmlpublic为默认zone,所以要编辑这个,增加⼀⾏,以下内容

重新加载防⽕墙配置

[root@zcwyou ~]# firewall-cmd --reload

4. 安装、启⽤、关闭firewalld

4.1 安装firewalld

[root@zcwyou ~]# yum install firewalld firewall-config4.2 启动服务

[root@zcwyou ~]# systemctl start firewalld4.3 开机⾃动启动服务

[root@zcwyou ~]# systemctl enable firewalld4.4 查看状态

[root@zcwyou ~]# systemctl status firewalld[root@zcwyou ~]# firewall-cmd --state4.5 关闭服务

[root@zcwyou ~]# systemctl stop firewalld4.6 取消开机启动

[root@zcwyou ~]# systemctl disable firewalld

4.7 弃⽤FirewallD防⽕墙,改⽤iptables (你也可以关闭⽬前还不熟悉的FirewallD防⽕墙,⽽使⽤iptables,但不建议:)[root@zcwyou ~]# yum install iptables-services[root@zcwyou ~]# systemctl start iptables[root@zcwyou ~]# systemctl enable iptables4.8 查看版本

[root@zcwyou ~]# firewall-cmd --version4.9 查看帮助

[root@zcwyou ~]# firewall-cmd --help4.10 显⽰状态

[root@zcwyou ~]# firewall-cmd --state

4.11 查看活动区域信息

[root@zcwyou ~]# firewall-cmd --get-active-zones4.12 查看XX接⼝所属区域

[root@zcwyou ~]# firewall-cmd --get-zone-of-interface=XX4.13 拒绝所有包

[root@zcwyou ~]# firewall-cmd --panic-on4.14 取消拒绝状态

[root@zcwyou ~]# firewall-cmd --panic-off4.15 查看是否拒绝

[root@zcwyou ~]# firewall-cmd --query-panic4.16 查看firewalld是否开启

[root@zcwyou ~]# systemctl is-enabled firewalld

4.17 重启加载防⽕墙(以 root ⾝份输⼊以下命令,重新加载防⽕墙,并不中断⽤户连接,即不丢失状态信息:)[root@zcwyou ~]# firewall-cmd --reload

4.18 完全重启防⽕墙 (以 root ⾝份输⼊以下命令,重新加载防⽕墙并中断⽤户连接,即丢弃状态信息:)[root@zcwyou ~]# firewall-cmd --complete-reload

注意:通常在防⽕墙出现严重问题时,这个命令才会被使⽤。⽐如,防⽕墙规则是正确的,但却出现状态信息问题和⽆法建⽴连接。firewall-cmd --reload与firewall-cmd --complete-reload两者的区别就是:

第⼀个⽆需断开连接,就是firewalld特性之⼀动态添加规则,第⼆个需要断开连接,类似重启服务4.19 显⽰默认区域

[root@zcwyou ~]# firewall-cmd --get-default-zone

4.20 添加接⼝到区域(将接⼝添加到XX区域,如果不指定区域,则添加到默认区域)[root@zcwyou ~]# firewall-cmd --zone=XX --add-interface=eth0

永久⽣效再加上--permanent 然后reload防⽕墙4.21 设置默认区域,⽴即⽣效⽆需重启

[root@zcwyou ~]# firewall-cmd --set-default-zone=XX4.22 查看XX区域打开的端⼝

[root@zcwyou ~]# firewall-cmd --zone=XX --list-ports4.23 查看XX区域加载的服务

[root@zcwyou ~]# firewall-cmd --zone=XX --list-services4.24 临时加⼀个端⼝到XX区域

[root@zcwyou ~]# firewall-cmd --zone=XX --add-port=8080/tcp若要永久⽣效⽅法加参数--permanent

4.25 打开⼀个服务,类似于将端⼝可视化,服务需要在配置⽂件中添加,/etc/firewalld ⽬录下有services⽂件夹,查看其它的xml⽂件以及参考前⾯说⽅法

[root@zcwyou ~]# firewall-cmd --zone=work --add-service=smtp4.26 移除服务

[root@zcwyou ~]# firewall-cmd --zone=work --remove-service=smtp4.27 显⽰⽀持的区域列表

[root@zcwyou ~]# firewall-cmd --get-zones4.28 列出全部区域启⽤的特性

[root@zcwyou ~]# firewall-cmd --list-all-zones4.29 显⽰XX区域详情

[root@zcwyou ~]# firewall-cmd --zone=XX --list-all4.30 查看当前活跃区域

[root@zcwyou ~]# firewall-cmd --get-active-zones4.31 设置XX接⼝所属区域

[root@zcwyou ~]# firewall-cmd --get-zone-of-interface=XX4.32 查询YY区域中是否包含XX接⼝

[root@zcwyou ~]# firewall-cmd --zone=YY --query-interface=XX4.33 删除指定XX⽹卡所在的zone(以YY为例)

[root@zcwyou ~]# firewall-cmd --zone=YY --remove-interface=XX4.34 临时修改XX接⼝为YY区域(永久修改加参数--permanent)[root@zcwyou ~]# firewall-cmd --zone=YY --change-interface=XX 4.35 控制端⼝ / 服务

可以通过两种⽅式控制端⼝的开放:

1)⼀种是指定端⼝号,另⼀种是指定服务名。

虽然开放 http 服务就是开放了 80 端⼝,但是还是不能通过端⼝号来关闭,也就是说通过指定服务名开放的就要通过指定服务名关闭;2)通过指定端⼝号开放的就要通过指定端⼝号关闭。

3)还有⼀个要注意的就是指定端⼝的时候⼀定要指定是什么协议,tcp 还是 udp。4.36 富规则

[root@zcwyou ~]# firewall-cmd --permanent --add-rich-rule=\"rule family=\"ipv4\" source address=\"192.168.142.166\" port protocol=\"tcp\"port=\"5432\" accept\"

[root@zcwyou ~]# systemctl restart firewalld.service

5.firewalld服务管理

5.1 显⽰⽀持的服务

[root@zcwyou ~]# firewall-cmd --get-services

5.2 临时允许Samba服务通过600秒

[root@zcwyou ~]# firewall-cmd --add-service=samba --timeout=6005.3 显⽰默认区域开启的服务,如果要查某区域,加参数--zone=XX[root@zcwyou ~]# firewall-cmd --list-services

5.4 添加HTTP服务到内部区域(internal),并保存到配置⽂件

[root@zcwyou ~]# firewall-cmd --permanent --zone=internal --add-service=http5.5 在不改变状态的条件下重新加载防⽕墙[root@zcwyou ~]# firewall-cmd --reload

5.6 开放mysql服务

[root@zcwyou ~]# firewall-cmd --add-service=mysql5.7 阻⽌mysql服务

[root@zcwyou ~]# firewall-cmd --remove-service=mysql5.8 端⼝管理,临时打开443/TCP端⼝,⽴即⽣效[root@zcwyou ~]# firewall-cmd --add-port=443/tcp

5.9 永久打开3690/TCP端⼝

[root@zcwyou ~]# firewall-cmd --permanent --add-port=3690/tcp

5.10 永久打开端⼝需要reload⼀下,如果⽤了reload临时打开的端⼝就失效了[root@zcwyou ~]# firewall-cmd --reload

5.11 查看防⽕墙所有区域的设置,包括添加的端⼝和服务[root@zcwyou ~]# firewall-cmd --list-all

5.12 开放通过tcp访问3306

[root@zcwyou ~]# firewall-cmd --add-port=3306/tcp5.13 阻⽌tcp80

[root@zcwyou ~]# firewall-cmd --remove-port=80/tcp5.14 开放通过udp访问233

[root@zcwyou ~]# firewall-cmd --add-port=233/udp5.15 查看开放的端⼝

[root@zcwyou ~]# firewall-cmd --list-ports

5.16 开放⾃定义的ssh端⼝号为12222 (--permanent参数可以将永久保存到配置⽂件)[root@zcwyou ~]# firewall-cmd --add-port=12222/tcp --permanent

重启防⽕墙。永久打开端⼝需要reload⼀下,如果⽤了reload临时打开的端⼝就失效了[root@zcwyou ~]# firewall-cmd --reload

5.16 添加端⼝范围

[root@zcwyou ~]# firewall-cmd --add-port=2000-4000/tcp

5.17 针对指定zone XX添加端⼝

[root@zcwyou ~]# firewall-cmd --permanent --zone=XX --add-port=443/tcp

6. 管理区域中的对象

6.1 获取永久⽀持的区域

[root@zcwyou ~]# firewall-cmd --permanent --get-zones

6.2 启⽤区域中的服务(此举将永久启⽤区域中的服务。如果未指定区域,将使⽤默认区域。)firewall-cmd --permanent [--zone=] --add-service=6.3 临时开放mysql服务,⽴即⽣效

[root@zcwyou ~]# firewall-cmd --add-service=mysql

6.4 public区域,添加httpd服务,并保存,但不会⽴即⽣效,需要reload防⽕墙

[root@zcwyou ~]# firewall-cmd --permanent --zone=public --add-service=httpd6.5 public区域,禁⽤httpd服务,并保存,但不会⽴即⽣效,需要reload防⽕墙

[root@zcwyou ~]# firewall-cmd --permanent --zone=public --remove-service=httpd

7. 端⼝转发

端⼝转发可以将指定地址访问指定的端⼝时,将流量转发⾄指定地址的指定端⼝。

转发的⽬的如果不指定ip的话就默认为本机,如果指定了ip却没指定端⼝,则默认使⽤来源端⼝。典型的做法:

1)NAT内⽹端⼝映射2)SSH隧道转发数据

如果配置好端⼝转发之后不能⽤,可以检查下⾯两个问题:

⽐如我将 80 端⼝转发⾄ 8080 端⼝,⾸先检查本地的 80 端⼝和⽬标的 8080 端⼝是否开放监听了其次检查是否允许伪装 IP,没允许的话要开启伪装 IP

7.1 将80端⼝的流量转发⾄8080

[root@zcwyou ~]# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080

7.2 将80端⼝的流量转发⾄192.168.0.1

[root@zcwyou ~]# firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1

7.3 将80端⼝的流量转发⾄192.168.0.1的8080端⼝

[root@zcwyou ~]# firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=80807.4 禁⽌区域的端⼝转发或者端⼝映射

firewall-cmd [--zone=] --remove-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}7.5 查询区域的端⼝转发或者端⼝映射

firewall-cmd [--zone=] --query-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}7.6 在区域中永久启⽤端⼝转发或映射

firewall-cmd --permanent [--zone=] --add-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}端⼝可以映射到另⼀台主机的同⼀端⼝,也可以是同⼀主机或另⼀主机的不同端⼝。端⼝号可以是⼀个单独的端⼝ 或者是端⼝范围 。协议可以为 tcp 或udp 。

⽬标端⼝可以是端⼝号 或者是端⼝范围 。

⽬标地址可以是 IPv4 地址。受内核限制,端⼝转发功能仅可⽤于IPv4。7.7永久禁⽌区域的端⼝转发或者端⼝映射

firewall-cmd --permanent [--zone=] --remove-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}7.8 查询区域的端⼝转发或者端⼝映射状态

firewall-cmd --permanent [--zone=] --query-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}如果服务启⽤,此命令将有返回值。此命令没有输出信息。7.9 将 home 区域的 ssh 服务转发到 127.0.0.2

[root@zcwyou ~]# firewall-cmd --permanent --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2 8. 伪装 IP

8.1 检查是否允许伪装IP

[root@zcwyou ~]# firewall-cmd --query-masquerade8.2 允许防⽕墙伪装IP

[root@zcwyou ~]# firewall-cmd --add-masquerade8.3 禁⽌防⽕墙伪装IP

[root@zcwyou ~]# firewall-cmd --remove-masquerade8.4 永久启⽤区域中的伪装

firewall-cmd --permanent [--zone=] --add-masquerade

此举启⽤区域的伪装功能。私有⽹络的地址将被隐藏并映射到⼀个公有IP。

这是地址转换的⼀种形式,常⽤于路由。由于内核的限制,伪装功能仅可⽤于IPv4。8.5 临时禁⽤区域中的 IP 伪装

firewall-cmd [--zone=] --remove-masquerade

8.6 永久禁⽤区域中的伪装

firewall-cmd --permanent [--zone=] --remove-masquerade8.7 查询区域中的伪装的永久状态

firewall-cmd --permanent [--zone=] --query-masquerade如果服务启⽤,此命令将有返回值。此命令没有输出信息。8.8 查询区域的伪装状态

firewall-cmd [--zone=] --query-masquerade如果启⽤,此命令将有返回值。没有输出信息。

9. ICMP控制

9.1 获取永久选项所⽀持的ICMP类型列表

[root@zcwyou ~]# firewall-cmd --permanent --get-icmptypes9.2 获取所有⽀持的ICMP类型

[root@zcwyou ~]# firewall-cmd --get-icmptypes9.3 永久启⽤区域中的ICMP阻塞,需要reload防⽕墙,firewall-cmd --permanent [--zone=] --add-icmp-block=

此举将启⽤选中的 Internet 控制报⽂协议 (ICMP) 报⽂进⾏阻塞。ICMP 报⽂可以是请求信息或者创建的应答报⽂或错误应答报⽂。9.4 永久禁⽤区域中的ICMP阻塞,需要reload防⽕墙,

firewall-cmd --permanent [--zone=] --remove-icmp-block=9.5 查询区域中的ICMP永久状态

firewall-cmd --permanent [--zone=] --query-icmp-block=如果服务启⽤,此命令将有返回值。此命令没有输出信息。

阻塞公共区域中的响应应答报⽂:

[root@zcwyou ~]# firewall-cmd --permanent --zone=public --add-icmp-block=echo-reply9.6 ⽴即启⽤区域的 ICMP 阻塞功能

firewall-cmd [--zone=] --add-icmp-block=

此举将启⽤选中的 Internet 控制报⽂协议 (ICMP) 报⽂进⾏阻塞。 ICMP 报⽂可以是请求信息或者创建的应答报⽂,以及错误应答。9.7 ⽴即禁⽌区域的 ICMP 阻塞功能

firewall-cmd [--zone=] --remove-icmp-block=9.8 查询区域的 ICMP 阻塞功能

firewall-cmd [--zone=] --query-icmp-block=如果启⽤,此命令将有返回值。没有输出信息。

例: 阻塞区域的响应应答报⽂:

[root@zcwyou ~]# firewall-cmd --zone=public --add-icmp-block=echo-reply

10. 通过配置⽂件来使⽤Firewalld的⽅法

系统本⾝已经内置了⼀些常⽤服务的防⽕墙规则,存放在/usr/lib/firewalld/services/

注意!!!!!请勿编辑/usr/lib/firewalld/services/ ,只有 /etc/firewalld/services 的⽂件可以被编辑。以下例⼦均以系统⾃带的public zone 为例⼦.

10.1 案例1: 如果想开放80端⼝供外⽹访问http服务,操作如下

Step1:将 http.xml复制到/etc/firewalld/services/下⾯,以服务形式管理防⽕墙,

系统会优先去读取 /etc/firewalld ⾥⾯的⽂件,读取完毕后,会去/usr/lib/firewalld/services/ 再次读取。为了⽅便修改和管理,强烈建议复制到/etc/firewalld

[root@zcwyou ~]# cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/修改/etc/firewalld/zones/public.xml,加⼊http服务vi /etc/firewalld/zones/public.xml

Public For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incomingconnections are accepted.

# 加⼊这⾏,要匹配 /etc/firewalld/services/⽂件夹下的⽂件名

以 root ⾝份输⼊以下命令,重新加载防⽕墙,并不中断⽤户连接,即不丢失状态信息:[root@zcwyou ~]# firewall-cmd --reload

或者以 root ⾝份输⼊以下信息,重新加载防⽕墙并中断⽤户连接,即丢弃状态信息:[root@zcwyou ~]# firewall-cmd --complete-reload

注意:通常在防⽕墙出现严重问题时,这个命令才会被使⽤。⽐如,防⽕墙规则是正确的,但却出现状态信息问题和⽆法建⽴连接。10.2 案例2: SSH为⾮默认端⼝,要求能正常访问

[root@zcwyou ~]# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/[root@zcwyou ~]# vi /etc/firewalld/services/ssh.xml把默认22修改为⽬前的SSH端⼝号

[root@zcwyou ~]# firewall-cmd --reload

10.3 案例3:修改区域配置⽂件只允许特定主机192.168.23.1连接SSH

[root@zcwyou ~]# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/[root@zcwyou ~]# vi /etc/firewalld/zones/public.xml确保配置⽂件有以下内容配置结束

重启防⽕墙后⽣效

[root@zcwyou ~]# firewall-cmd --reload

11. firewalld直接模式

对于最⾼级的使⽤,或 iptables 专家,FirewallD 提供了⼀个Direct接⼝,允许你给它传递原始 iptables 命令。直接接⼝规则不是持久的,除⾮使⽤ --permanent。

直接选项主要⽤于使服务和应⽤程序能够增加规则。 规则不会被保存,在重新加载或者重启之后必须再次提交。传递的参数 与 iptables,ip6tables 以及 ebtables ⼀致。

选项 –direct 需要是直接选项的第⼀个参数。将命令传递给防⽕墙。参数 可以是 iptables, ip6tables 以及 ebtables 命令⾏参数。firewall-cmd --direct --passthrough { ipv4 | ipv6 | eb }11.1 为表增加⼀个新链 。

firewall-cmd --direct --add-chain { ipv4 | ipv6 | eb }11.2 从表中删除链 。

firewall-cmd --direct --remove-chain { ipv4 | ipv6 | eb }11.3 查询链是否存在与表如果是,返回0,否则返回1.firewall-cmd --direct --query-chain { ipv4 | ipv6 | eb }如果启⽤,此命令将有返回值。此命令没有输出信息。11.4 获取⽤空格分隔的表中链的列表。

firewall-cmd --direct --get-chains { ipv4 | ipv6 | eb }11.5 为表增加⼀条参数为 的链 ,优先级设定为 。firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb }11.6 从表中删除带参数的链 。

firewall-cmd --direct --remove-rule { ipv4 | ipv6 | eb }

11.7 查询带参数的链 是否存在表中. 如果是,返回0,否则返回1.firewall-cmd --direct --query-rule { ipv4 | ipv6 | eb }如果启⽤,此命令将有返回值。此命令没有输出信息。11.8 获取表中所有增加到链的规则,并⽤换⾏分隔。

firewall-cmd --direct --get-rules { ipv4 | ipv6 | eb }以iptables的命令允许端⼝号,重启⽣效

[root@zcwyou ~]# firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT[root@zcwyou ~]# firewall-cmd --reload12 添加富规则:

12.1 允许192.168.122.0/24主机所有连接。

[root@zcwyou ~]# firewall-cmd --add-rich-rule='rule family=\"ipv4\" source address=\"192.168.122.0\" accept'12.2 每分钟允许2个新连接访问ftp服务。

[root@zcwyou ~]# firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept'

12.3 同意新的 IP v4 和 IP v6 连接 FT P ,并使⽤审核每分钟登录⼀次。

[root@zcwyou ~]# firewall-cmd --add-rich-rule='rule service name=ftp log limit value=\"1/m\" audit accept'

12.4 允许来⾃192.168.122.0/24地址的新 IPv4连接连接TFTP服务,并且每分钟记录⼀次。

[root@zcwyou ~]# firewall-cmd --add-rich-rule='rule family=\"ipv4\" source address=\"192.168.122.0/24\" service name=ssh log prefix=\"ssh\"level=\"notice\" limit value=\"3/m\" accept'

12.5 丢弃所有icmp包

[root@zcwyou ~]# firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'

12.6 当使⽤source和destination指定地址时,必须有family参数指定ipv4或ipv6。如果指定超时,规则将在指定的秒数内被激活,并在之后被⾃动移除。

[root@zcwyou ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.122.0/24 reject' --timeout=10

12.7 拒绝所有来⾃2001:db8::/64⼦⽹的主机访问dns服务,并且每⼩时只审核记录1次⽇志。

[root@zcwyou ~]# firewall-cmd --add-rich-rule='rule family=ipv6 source address=\"2001:db8::/64\" service name=\"dns\" audit limit value=\"1/h\"reject' --timeout=300

12.8 允许192.168.122.0/24⽹段中的主机访问ftp服务

[root@zcwyou ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.122.0/24 service name=ftp accept'12.9 转发来⾃ipv6地址1:2:3:4:6::TCP端⼝4011,到1:2:3:4:7的TCP端⼝4012

[root@zcwyou ~]# firewall-cmd --add-rich-rule='rule family=\"ipv6\" source address=\"1:2:3:4:6::\" forward-port to-addr=\"1::2:3:4:7\" to-port=\"4012\" protocol=\"tcp\" port=\"4011\"'

12.10 允许来⾃主机 192.168.0.14 的所有 IPv4 流量。

[root@zcwyou ~]# firewall-cmd --zone=public --add-rich-rule 'rule family=\"ipv4\" source address=192.168.0.14 accept'

12.11 拒绝来⾃主机 192.168.1.10 到 22 端⼝的 IPv4 的 TCP 流量。

[root@zcwyou ~]# firewall-cmd --zone=public --add-rich-rule 'rule family=\"ipv4\" source address=\"192.168.1.10\" port port=22 protocol=tcpreject'

12.12 查看富规则

[root@zcwyou ~]# firewall-cmd --list-rich-rules

因篇幅问题不能全部显示,请点此查看更多更全内容

Top