firewalld防火墙

一:概念

firewalld防火墙是CentOS7版本系统默认的防火墙管理工具,取代了之前的iptables防火墙,与iptables防火墙一样也属于典型的包过滤防火墙或称之为网络层防火墙,firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规则功能,内部结构都指向netfilter这一强大的网络过滤子系统(属于内核态)以实现包过滤防火墙功能。firewalld防火墙最大的优点在于支持动态更新以及加入了防火墙的“Zone”概念,firewalld防火墙支持IPV4和IPV6地址。可以通过字符管理工具firewall-cmd和图形化管理工具firewall-config进行管理。

二、区域的概念

firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后要所数据包的源IP地址或传入的网络接口条件等将流量传入相应区域。每个区域都定义了自己打开或关闭的端口服务列表。其中默认区域为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-cmd是firewalld防火墙自带的字符管理工具,可以用来设置firewalld防火墙的各种规则,需要注意的是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]从指定区域的允许列表中删除该端口,没有指定区域时使用默认区域。

1、区域管理

firewall-cmd --help | wc -l

(1)查看默认区域

# firewall-cmd --get-default-zone

(2)列出当前正在使用的区域及其所对应的网卡接口

# firewall-cmd --get-active-zones

(3)列出所有可用的区域

# firewall-cmd --get-zones

(4)设置默认区域

# firewall-cmd --set-default-zone=block

2、服务管理

(1)查看预定义服务

# firewall-cmd --get-services

(2)添加http服务到public区域

# firewall-cmd --add-service=http --zone=public --permanent

# systemctl restart firewalld

(3)查看public区域已配置的规则

# firewall-cmd --list-all --zone=public

(4)移除public区域的http服务,不使用–zone指定区域时使用默认区域

# firewall-cmd --remove-service=http --permanent --zone=public

# systemctl restart firewalld

(5)将多个服务添加到某一个区域,不添加–permanent选项表示是即时生效的临时设置

# firewall-cmd --add-service=http --add-service=https

# systemctl restart firewalld

3、端口管理

(1)允许TCP的3306端口到public区域

# firewall-cmd --add-port=3306/tcp

(2)从public区域将TCP的3306端口移除

# firewall-cmd --remove-port=3306/tcp

(3)允许某一范围的端口,如允许UDP的2048-2050端口到public区域

# firewall-cmd --add-port=2048-2050/udp --zone=public

(4)使用–list-ports查看加入的端口操作是否成功

# firewall-cmd --list-ports

4、伪装IP

(1)什么是地址伪装?

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

(2)相关命令

firewall-cmd --query-masquerade # 检查是否允许伪装IP

firewall-cmd --permanent --add-masquerade # 允许防火墙伪装IP

firewall-cmd --permanent --remove-masquerade# 禁止防火墙伪装IP

5、端口转发

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

# firewall-cmd --permanent --add-masquerade

# firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80

# firewall-cmd --add-port=8080/tcp

# firewall-cmd --remove-service=http

端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

三、firewalld富规则

https://www.cnblogs.com/meizy/p/firewalld.html#fanghuoqiangfuguize

–list-rich-rules --列出富规则

–add-rich-rule=    --使用富规则语言添加富规则

–remove-rich-rule=     --移除富规则

–query-rich-rule= --查询某条富规则是否存在

–list-rich-rules --列出指定区域中的所有富规则

–list-all 和 --list-all-zones --也能列出存在的富规则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值