firewalld防火墙简单理解总结

Posted huangyanqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了firewalld防火墙简单理解总结相关的知识,希望对你有一定的参考价值。

前言

防火墙基于源 IP、目标端口和协议来过滤入站包。因为这种方式中,仅有几个 IP/端口/协议的组合与系统交互,而其它的方式做不到过滤。

iptables 将包通过一系列的规则进行检查,如果包与特定的 IP/端口/协议的组合匹配,规则就会被应用到这个包上,以决定包是被通过、拒绝或丢弃。

 

firewalld和iptables service 之间最本质的不同是:

1、FirewallD 使用区域和服务而不是链式规则。
2、它动态管理规则集,允许更新规则而不破坏现有会话和连接。

iptables在 /etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在
/usr/lib/firewalld/(不建议修改,后续升级会覆盖该区域) 和 /etc/firewalld/这些文件将会覆盖默认配置)中的各种XML文件里.


iptables每一个单独更改意味着清除所有旧有的规则并/etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld却不会再创建任何新的规
则;仅仅运行规则中的不同之处。
因此,firewalld可以在运行时间内,改变设置而不丢失现行连接。

 

 

一、firewalld的设计流程

firewalld 可以通过定义的源 IP 和/或网络接口将入站流量分类到不同区域(zone)。每个区域基于指定的准则按自己配置去通过或拒绝包。

注释:firewalld 通过使用服务名而不是它的端口和协议去指定服务,使它更易于使用,例如,是使用 samba 而不是使用 UDP 端口 137 和 138 和 TCP 端口 139 和 445。它进一步简化语法,消除了 iptables 中对语句顺序的依赖。

 

二、结构介绍

  1、区域

在 firewalld 中最上层的组织是区域。如果一个包匹配区域相关联的网络接口或源 IP/掩码 ,它就是区域的一部分。可用的几个预定义区域:

 

[[email protected] ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
注释:默认是这九个区域

技术分享图片

 

 

任何配置了一个网络接口和/或一个源的区域就是一个活动区域active zone

  firewall-cmd --get-default-zone  找到默认区域

  firewall-cmd --set-default-zone=internal   修改默认区域(修改默认区域为internal)

  firewall-cmd --list-all-zones   列出所有区域配置

列出活动的区域:

[[email protected] ~]# firewall-cmd --get-active-zones
public
  interfaces: ens33 ens34

 

注释:

Interfaces (接口)是系统中的硬件和虚拟的网络适配器的名字,所有的活动的接口都将被分配到区域,要么是默认的区域,要么是用户指定的一个区域。但是,一个接口不能被分配给多于一个的区域。

在缺省配置中,firewalld 设置所有接口为 public 区域,并且不对任何区域设置源。其结果是,public 区域是唯一的活动区域。

 

Sources (源)是入站 IP 地址的范围,它也可以被分配到区域。一个源(或重叠的源)不能被分配到多个区域。这样做的结果是产生一个未定义的行为,因为不清楚应该将哪些规则应用于该源。

 因为指定一个源不是必需的,任何包都可以通过接口匹配而归属于一个区域,而不需要通过源匹配来归属一个区域。这表示通过使用优先级方式,优先到达多个指定的源区域,稍后将详细说明这种情况

 

  2、查看一个区域的配置信息

[[email protected] ~]# firewall-cmd --zone=public --list-all
public (active)      活动的区域
  target: default    默认启动的区域
  icmp-block-inversion: no
  interfaces: ens33 ens34   列出这个区域上关联的接口
  sources:                  列出这个区域的源。现在这里什么都没有,如果这里有内容,它们应该是这样的格式 xxx.xxx.xxx.xxx/xx。
  services: ssh dhcpv6-client       列出允许通过这个防火墙的服务。你可以通过运行 firewall-cmd --get-services 得到一个防火墙预定义服务的详细列表。
  ports: 80/tcp 10050/tcp 10051/tcp 列出允许通过这个防火墙的目标端口。(即 需要对外开放的端口)
  protocols:       协议值可以是一个协议 ID 数字,或者一个协议名
  masquerade: no   表示这个区域是否允许 IP 伪装。如果允许,它将允许 IP 转发,它可以让你的计算机作为一个路由器。
  forward-ports:   列出转发的端口
  source-ports: 
  icmp-blocks:     阻塞的 icmp 流量的黑名单。
  rich rules:      在一个区域中优先处理的高级配置。

 

三、常用命令

  1、启动服务并在系统引导时启动该服务

sudo systemctl start firewalld
sudo systemctl enable firewalld

  2、停止并禁用

sudo systemctl stop firewalld
sudo systemctl disable firewalld

   3、检查防火墙状态。输出应该是 running 或者 not running

firewall-cmd --state

    4、查看Firewalld守护进程状态

systemctl status firewalld

 

 

    5、重新加载Firewalld配置

firewall-cmd --reload

 

   

四、配置示例

FirewallD 有两个配置集:“运行时”和“持久”。
运行时:在系统重新启动或重新启动 FirewallD时,不会保留运行时的配置更改;
持久: 持久配置集的更改不会应用于正在运行的系统。(重新加载配置可以生效

默认情况下,firewall--cmd 命令适用于运行时配置,但使用 --permanent 标志将保存到持久配置中

 

  1、启动或禁止http服务

[[email protected] ~]# firewall-cmd --zone=public --add-service=http --permanent
success
[[email protected] ~]# firewall-cmd --zone=public --remove-service=http --permanent
success

 

  2、允许或禁用12345端口的TCP流量

firewall-cmd --zone=public --add-port=12345/tcp --permanent
firewall-cmd --zone=public --remove-port=12345/tcp --permanent

  3、端口转发

 

 

 

 

 

 

技术分享图片







以上是关于firewalld防火墙简单理解总结的主要内容,如果未能解决你的问题,请参考以下文章

linux firewalld 防火墙简单命令

linux 简单记录8 --iptables 与 firewalld 防火墙

centos7 firewall-cmd 理解多区域配置中的 firewalld 防火墙

Centos 7的firewalld防火墙地址伪装和端口转发原理

CentOS7REHL7的firewalld防火墙使用简单说明

firewalld防火墙详解