firewalld防火墙的使用

         ~~~~~~~~         因为想要面对一个新的开始,一个人必须有梦想、有希望、有对未来的憧憬。如果没有这些,就不叫新的开始,而叫逃亡。 ​​​​
                                                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                 ————玛丽亚·杜埃尼亚斯

前言

与之前提到的iptables防火墙类似,firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,他们的作用都是用于维护规则,而真正使用规则的是内核的netfilter。相较于iptables防火墙而言,firewalld支持动态更新技术并且加入了区域(zone)的概念。简单的说,zone就是firewalld预先准备的几套防火墙策略集合,用户可以根据实际情况选择不同的策略集合,从而实现防火墙策略之间的快速切换。

区域的概念

firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。每个区域都定义了自己打开或关闭的端口服务列表。其中默认区域为public区域,trusted区域默认允许所有流量通过,是一个特殊的区域。

区域名称默认配置说明
Trusted (信任区域)允许所有的传入流量
Home (家庭区域)允许与ssh、mdns、ipp-client、samba-client或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝
Internal (内部区域)默认值时与home区域相同
Work (工作区域)允许与ssh、ipp-client或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝
Public (公共区域)允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域。
External (外部区域)允许与ssh预定义服务匹配的传入流量,其余均拒绝。默认将经过此区域转发的IPv4地址传出流量进行地址伪装。
Dmz (隔离区域)允许与ssh预定义服务匹配的传入流量,其余均拒绝。
Block (阻塞区域)拒绝所有传入流量
Drop (丢弃区域)丢弃所有传入流量

用户可以根据具体环境选择使用区域。管理员也可以对这些区域进行自定义,使其具有不同的设置规则。
在流量经过防火墙时,firewalld防火墙会对传入的每个数据包进行检查,如果此数据包的源地址关联到特定的区域,则会应用该区域的规则对此数据包进行处理,如果该源地址没有关联到任何区域,则将使用传入网络接口所在的区域规则进行处理。如果流量与不允许的端口、协议或者服务匹配,则防火墙拒绝传入流量。

防火墙基本指令参数

firewall-cmd #是命令行配置
firewall-config #是图形化配置

firewall-cmd是firewalld防火墙自带的字符管理工具,它分为两种状态。
runtime(正在运行生效的状态):
在runtime状态添加新的防火墙规则,这些规则会立即生效,但是重新加载防火墙配置或者重启系统后这些规则将会失效;
permanent(永久生效的状态):
在permanent状态添加新的防火墙规则,这些规则不会马上生效,需要重新加载防火墙配置或者重启系统后生效。
在使用firewall-cmd命令管理防火墙时,需要添加为永久生效的规则需要在配置规则时添加–permanent选项(否则所有命令都是作用于runtime,运行时配置),如果让永久生效规则立即覆盖当前规则生效使用,还需要使用firewall-cmd --reload命令重新加载防火墙配置
常用firewall-cmd命令如下:

firewall-cmd命令说明
–get-default-zone查看当前默认区域
–get–active-zones列出当前正在使用的区域及其所对应的网卡接口
–get-zones列出所有可用的区域
–set-default-zone=设置默认区域(注意此命令会同时修改运行时配置和永久配置)
–add-source=[–zone=]将来自IP地址或网段的所有流量路由到指定区域,没有指定区域时使用默认区域。
–remove-source=[–zone=<ZONE]从指定区域中删除来自IP地址或网段的所有路由流量规则,没有指定区域时使用默认区域。
–add-interface=[–zone=<ZONE]将来自该接口的所有流量都路由到指定区域。没有指定区域时使用默认区域。
–change-interface=[–zone=<ZONE]将接口与指定区域做关联,没有指定区域时使用默认区域。
–list-all[–zone=<ZONE]列出指定区域已配置接口、源、服务、端口等信息,没有指定区域时使用默认区域。
–add-service=[–zone=<ZONE]允许到该服务的流量通过指定区域,没有指定区域时使用默认区域。
–remove-service=[–zone=<ZONE]从指定区域的允许列表中删除该服务,没有指定区域时使用默认区域。
–add-port=<PORT/PROTOCOL>[–zone=<ZONE]允许到该端口的流量通过指定区域,没有指定区域时使用默认区域。
–remove-port=<PORT/PROTOCOL>[–zone=<ZONE]从指定区域的允许列表中删除该端口,没有指定区域时使用默认区域。

区域管理

#firewall -cmd
--get-default-zone  查询默认的区域名称
--set-default-zone=<区域名称>   设置默认的区域
--get-active-zones  显示当前正在使用的区域与网卡名称
--get-zones 显示总共可用的区域
--new-zone= 新增区域

服务管理

#firewall -cmd
--get-services  显示预先定义的服务
--add-service=<服务名> 设置默认区域允许该服务的流量
--remove-service=<服务名>  设置默认区域不再允许该服务的流量
--list-all --zone=<区域名> 查看相应区域已配置的规则
--add-service=http --add-service=https  将多个服务添加到某一个区域

端口管理

#firewall -cmd
--add-port=3306/tcp 允许TCP的3306端口到public区域
--remove-port=3306/tcp  从public区域将TCP的3306端口移除
--add-port=2048-2050/udp --zone=public 允许某一范围的端口,如允许UDP的2048-2050端口到public区域
--list-ports  查看加入的端口操作是否成功

伪装ip

通过地址伪装,NAT设备将经过设备的包转发到指定的接收方,同时将通过的数据包源地址更改为其NAT设备自己的接口地址。当返回的数据包到达时,会将目的地址修改为原始主机的地址并做路由。

#firewall -cmd
--query-masquerade # 检查是否允许伪装IP
--permanent --add-masquerade # 允许防火墙伪装IP
--permanent --remove-masquerade# 禁止防火墙伪装IP

端口转发

当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:to port=8080  转发本机80/tcp端口的流量至8080/tcp端口,要求当前和长期有效
firewall-cmd --remove-forward-port=port=80:proto=tcp:toport=8080  移除转发

富规则策略

区域里的富规则按先后顺序匹配,按先匹配到的规则生效。

#firewall-cmd 
--add-rich-rule='<RULE>'    //在指定的区添加一条富规则
--remove-rich-rule='<RULE>' //在指定的区删除一条富规则
--query-rich-rule='<RULE>'  //找到规则返回0 ,找不到返回1
--list-rich-rules       //列出指定区里的所有富规则
--list-all 和 --list-all-zones 也能列出存在的富规则
rule family="ipv4" source address="192.168.0.0/24" service name="tftp" log prefix="tftp" accept //在192.168.0.0/24这个段里可以访问tftp服务
rule family="ipv4" source address="192.168.0.0/24" forward-port to-addr="local" to-port="8080" protocol="tcp" port="80" //来自192.168.0.0/24这个段的8080端口数据转发到本地的80端口
rule family="ipv4" source address="192.168.2.4" drop //拒绝192.168.2.4这个ip访问
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值