欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

centos7之firewalld规则详解(二)

程序员文章站 2024-03-21 18:53:34
...

一、目标

这篇文章是使用firewalld配置防火墙规则的。主要的还是讲述一基础部份的配置。

如需了解firewalld的概述及其工作拓扑,也就是firewalld的理论基础,请参考:Centos7之firewalld概述及拓扑(一)

二、管理firewalld

centos7之firewalld规则详解(二)

可以通过三种方式来管理firewalld:

1、使用命令行工具firewall-cmd

2、使用图形工具firewall-config

3、使用/etc/firewalld/中的配置文件

在大部分情况下,不建议直接编辑配置文件,但是在使用配置管理工具时,以这种方法copy配置会很有用。

请注意:

1、除非另外指定,否则几乎所有命令都作用于运行时配置,当指定--permanent(永久配置)选项时除外(Runtime模式)。

2、列出的许多命令都采用 --zone=选项来确定所影响的区域,如果在这些命令中省略--zone,则将使用默认区域。

3、使用--permanent配置的所有更改,若要使其生效,必须使用firewall-cmd --reload(重新加载防火墙规则)

4、推荐在测试新的并且可能有危险的规则时,可以使用额外选项以一定时间后自动删除某个规则,从而防止管理员意外锁定某个系统:--timemout

三、firewall-cmd常用命令

firewall-cmd 说明
--get-default-zone 查询当前默认区域。
--set-default-zone= 设置默认区域。此命令会同时更改运行时配置和永久配置。
--get-zones 列出所有可用区域。
--get-services 列出所有预定义服务。
--get-active-zones 列出当前正在使用的所有区域(具有关联的接口或源)及接口和源信息。
--add-source= 将来自IP地址或网络/掩码的所有流量路由到指定区域。
--remove-source= 从指定区域中删除用于路由来自IP地址或网络/掩码的所有流量规则。
--add-interface= 将来自该接口的所有流量到指定区域。
--change-interface= 将接口已有绑定区域而与其他区域关联。
--list-all 列出默认区域的所有配置(接口、源、服务和端口)。
--list-all-zones 列出所有区域的所有配置(接口、源、服务和端口)。
--add-service= 允许区域某服务的流量。
--add-port= 允许区域某端口的流量。
--remove-service= 从区域删除某服务规则。
--remove-port= 从区域删除某端口规则。
--reload 丢弃Runtime配置并应用Permanet配置。
注意:一个网卡,只能绑定一个区域

多个网卡,可以绑定同一区域

四、管理富规则

firewalld富规则为管理员提供了一种表达性语言,通过这种语言可表达firewalld的基本语法中未涵盖的自定义防火墙规则

例如:仅仅允许某个IP(而非通过某个区域路由的所有IP地址)连接到服务。

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


富规则的基本语法:

rule
[source]
[destination]
service|port|protocol|icmp-block|masquerade|forward-port
[log]
[audit]
[accept|reject|drop]

使用富规则

选项 说明
--add-rich-rule='rule' 向指定区域中添加rule。
--remove-rich-rule='rule' 从指定区域删除rule。
--query-rich-rule='rule' 查询rule是否添加到指定区域,如果存在
则返回0,否则返回1。
--list-rich-rules 输出指定区域的所有富规则。

五、伪装和端口转发

网络地址转换(NAT)

firewalld支持两种类型的网络地址转换(NAT):伪装和端口转发。可以在基本级别使用常规firewall-cmd规则来同时配置这两者,更高级的转发配置可以使用富规则来完成,这两种形式的NAT会在发送包之前修改包的某些方面,如源或目标。

伪装

通过伪装,系统会将并非直接寻址到自身的包转发到指定接收方,同时将通过的包的源地址更改为自己的公共IP地址。

防火墙对这些传入的包应答时,会将目标地址修改为原始主机的地址并发送包。

这通常在网络边缘使用,以便为内部网络提供Internet访问。

伪装是一种形式的网络地址转换(NAT)

网络地址转换拓扑如下(伪装运行方式示例):

centos7之firewalld规则详解(二)

说明:

1、位于防火墙后面的其中一个计算机将包发送到外网地址,包的源地址为192.168.40.2,目的地址是外网网段。

2、由于目标地址不在本地网段,包将路由到默认本地网关(192.168.40.1),即防火墙的内网IP地址。

3、防火墙接受包,将源地址改为202.202.202.202(防火墙的外网地址),将对此连接的引用存储在其连接状态表,然后根据其路由表将包传递到Internet的路由器。

4、对应的包的应答从Internet返回。路由器在其连接状态连接中查到连接,然后将目标地址更改为192.168.40.2(原始发送方)并传递包。

5、原始发送方接受对其请求的应答。

重要提示:

伪装只能与IPv4一起使用,不能与IPv6一起使用。

端口转发

另一种形式的NAT是端口转发,通过端口转发,指向单个端口的流量将转发到相同计算机上的不同端口,或者转发到不同计算机的端口。此机制通常将某个服务器“隐藏”在另一个计算机后面,或者用于在备用端口上提供对服务的访问权限。

重要提示:

当端口转发配置为将包转发到不同计算机时,该计算机的任何回复通常将直接从该计算机发送到原始客户端。由于这将在 大部分配置上导致无效连接,因此转发到的计算机必须通过端口转发的防火墙来进行伪装。

常见配置使将端口从防火墙计算机转发到已在防火墙后面伪装的计算机。

六、总结

这次主要写了firewalld的管理、富规则、伪装及端口转发。

在下一篇文章将编写常用的示例,大部分以富规则的形式来解决。