本章的结构

Firewalld概述

Firewalld和iptables的关系

Firewalld网络区域

Firewalld防火墙的配置方法

Firewall-config图形工具

Firewalld防火墙案例

本章注意区分Firewalld和iptables区别,他们定义好策略后,前者不需要重启服务,而后者需要重启服务。

记住何为“内核态” 何为“用户态”

一、Firewalld概述

  1. ​支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具;
  2. 支持IPv4,IPv6防火墙设置以及以太网桥;
  3. 支持服务或应用程序直接添加防火墙规则接口;
  4. 拥有两种配置模式:
  5. 运行时配置(一般测试的时候使用);
  6. 永久配置。​

扩展补充:

  1. firewalld是7.0才开始有,6.0一直都是iptables;
  2. 防火墙工作在第四层传输层,和端口有关TCP、UDP;
  3. 大型数据中心用的背靠背方式–两个硬防火墙;
  4. 按区域进行定义:高安全区域和低安全区域(例如公司内部是一个高安全区域,外部是一个低安全区域),此外允许访问的公司服务在dmz区域(非军事化区域);

低安全级别到高安全级别会经过防火墙过滤;

高安全级别到低安全级别是允许的。

  1. 运行时配置是临时配置,不会保存。

二、Firewalld和iptables的关系

1、netfilter

  • 位于Linux内核中的包过滤功能体系;
  • 称为Linux防火墙的“内核态”(不能)。

2、Firewalld/iptables

  • Centos7默认的管理防火墙规则的工具(Firewalld);
  • 称为Linux防火墙的“用户态”;
  • Firewalld就是iptables的一层封装,为了简化操作;
  • 只有iptables才能和内核态进行交互。

3、区别(Firewalld和iptables)

配置文件 /usr/lib/firewalld

/etc/firewalld /etc/sysconfig/iptables

对规则的修改 不需要全部刷新策略,不丢失现行连接 需要全部刷新策略,丢失连接

防火墙类型 动态防火墙 静态防火墙

Firewalld定义好策略不需要重启服务,而iptables需要重启

三、Firewalld网络区域

1、区域如同进入主机的安全门,每个区域都具有不同限制程度的规则;

2、可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口;

3、默认情况下,public区域是默认区域,包含所有接口(网卡)。

file wall防火墙预定[9个区域]:

drop(丢弃)

任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接

block(限制

任何接收的网络连接都被IPV4的icmp-host-prohibited信息和IPV6的icmp6-adm-prohibited信息所拒绝。

public(公共)

在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。

external(外部)

特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。

dmz(军事区域)

用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。

work(工作)

用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。

home(家庭)

用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。

internal(

用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接收经过选择的连接。

trusted(信任)

可接受所有的网络连接。指定其中一个区域为默认区域是可行的。当接口连接加入了NetworkManager,它们就被分配为默认区域。

四、Firewalld数据处理流程

  1. firewalld对于进入系统的数据包,会根据数据包的源IP地址或传入的网络接口等条件,将数据流量转入相应区域的防火墙规则。
  2. 对于进入系统的数据包,首先检查的就是其源地址。

firewalld 检查数据包的源地址的规则:


若源地址关联到特定的区域(即源地址或接口绑定的区域有冲突),则执行该区域所制定的规则。

若源地址未关联到特定的区域(即源地址或接口绑定的区域没有冲突),则使用传入网络接口的区域并执行该区域所制定的规则。

若网络接口未关联到特定的区域(即源地址或接口都没有绑定特定的某个区域),则使用默认区域并执行该区域所制定的规则。

优先总结就是:

绑定源地址的区域规则 > 网卡接口绑定的区域规则 > 默认区域的规则

五、Friewalld防火墙的配置方法

5.1运行时配置(类似于mount)

1、实时生效,并持续至firewalld重新启动或重新加载配置

2、不中断现有连接

3、不能修改服务配置

永久配置(类似于修改fstab文件)

1、不立即生效,除非firewalld重新启动或重新加载配置

2、中断现有连接

3、可以修改服务配置

5.2firewalld 防火墙的配置方法

1.使用firewall-cmd 命令行工具。

2.使用firewall-config 图形工具。

3.编写/etc/firewalld/中的配置文件。

systemctl start firewalld.service        ##开启防火墙服务
systemctl stop firewalld.service ##关启防火墙服务
--get-default-zone :显示当前默认区域
--set-default-zone=<zone> :设置默认区域

--get-active-zones :显示当前正在使用的区域及其对应的网卡接口
--get-zones :显示所有可用的区域

--get-zone-of-interface=<interface> :显示指定接口绑定的区域
--zone=<zone> --add-interface=<interface> :为指定接口绑定区域

--zone=<zone> --change-interface=<interface> :为指定的区域更改绑定的网络接口
--zone=<zone> --remove-interface=<interface> :为指定的区域删除绑定的网络接口

--list-all-zones :显示所有区域及其规则
[--zone=<zone>] --list-all :显示所有指定区域的所有规则,省略--zone=<zone>时表示仅对默认区域操作

[--zone=<zone>] --list-services :显示指定区域内允许访问的所有服务
[--zone=<zone>] --add-service=<service> :为指定区域设置允许访问的某项服务
[--zone=<zone>] --remove-service=<service> :删除指定区域已设置的允许访问的某项服务

[--zone=<zone>] --list-ports :显示指定区域内允许访问的所有端口号
[--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol> :为指定区域 设置允许访问的某个/某段端口号(包括协议名)
[--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocol> :删除指定区域已设置的允许访问的端口号(包括协议名)

[--zone=<zone>] --list-icmp-blocks :显示指定区域内拒绝访问的所有 ICMP 类型
[--zone=<zone>] --add-icmp-block=<icmptype> :为指定区域设置拒绝访问的某项 ICMP 类型
[--zone=<zone>] --remove-icmp-block=<icmptype> :删除指定区域已设置的拒绝访问的某项ICMP类型
firewall-cmd --get-icmptypes :显示所有 ICMP 类型

六、区域管理

6.1 显示当前系统中的默认区域

firewall-cmd --get-default-zone

6.2 显示默认区域的所有规则

firewall-cmd --list-all

6.3 显示当前正在使用的区域及其对应的网卡接口

firewall-cmd --get-active-zones

6.4 设置默认区域

firewall-cmd --set-default-zone=home
firewall-cmd --get-default-zone

七、服务管理

7.1 查看默认区域内允许访问的所有服务

firewall-cmd --list-service

7.2 添加httpd 服务到public 区域

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

7.3 查看public 区域已配置规则

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

7.4 删除public 区域的httpd 服务

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

7.5 同时添加httpd、https 服务到默认区域,设置成永久生效

firewall-cmd --add-service=http --add-service=https --permanent
或firewall-cmd --add-service={http,https} --permanent
firewall-cmd --reload
firewall-cmd --list-all
#添加使用 --permanent选项表示设置成永久生效,需要重新启动firewalld服务或执行firewall-cmd --reload命令 重新加载防火墙规则时才会生效。若不带有此选项,表示用于设置运行时规则,但是这些规则在系统或firewalld服务重启、停止时配置将失效。

--runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性配置

八、端口管理

8.1 允许TCP的443端口到internal区域

firewall-cmd --zone=internal --add-port=443/tcp
firewall-cmd --list-all --zone=internal

8.2 从internal 区域将TCP的443端口移除

firewall-cmd --zone=internal --remove-port=443/tcp

8.3 允许UDP的2048~2050端口到默认区域

firewall-cmd --add-port=2048-2050/udp
firewall-cmd --list-all

九、总结

1.fireword网络区域

2.fireword防火墙的配置方法