Linux 防火墙——Firewalld

一、Firewalld 概述

  • 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具

  • 支持IPV4、IPV6防火墙设置以及以太网桥

  • 支持服务或应用程序直接添加防火墙规则接口

  • 拥有两种配置模式

    1、运行时配置

    2、永久配置

二、Firewalld和iptables的关系

  • netfilter
  1. 位于Linux内核中的包过滤功能体系
  2. 称为Linux防火墙的“内核态”
  • Firewalld/iptables
  1. Centos7默认的管理防火墙规则的工具(Firewalld)
  2. 称为Linux防火墙的“用户态”
    a3VMlV.png
Firewalld iptables
配置文件 /usr/lib/firewalld/、/etc/firewalld/ /etc/sysconfig/iptables
对规则的修改 不需要全部刷新策略,不丢失现行连接 需要全部刷新策略,丢失连接
防火墙类型 动态防火墙 静态防火墙

三、Firewalld 网络区域

3.1 区域介绍

  • 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
  • 可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
  • 默认情况下,public区域是默认区域,包含所有接口(网卡)

3.2 Firewalld 数据处理流程

  • 检查数据来源的源地址
  1. 若源地址关联到特定的区域,则执行该区域所有指定的规则
  2. 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则
  • 若若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则

四、Firewalld 防火墙的配置方法

  • 运行时配置
  1. 实时生效,并持续至Firewalld重新启动或重新加载配置
  2. 不中断现有连接
  3. 不能修改服务配置
  • 永久配置
  1. 不立即生效,除非Firewalld重新启动或重新加载配置
  2. 中断现有连接
  3. 可以修改服务配置

五、Firewall-config 图形工具

  • /etc/firewalld/中的配置文件
  1. Firewalld会优先使用/etc/firewalld中的配置,如果不存在配置文件,则使用/usr/lib/firewalld中的配置
  2. /etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld/中拷贝
  3. /usr/lib/firewalld:默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc//firewalld/中的配置

下面就带大家详细了解Firewalld图形工具的详细配置:

1、打开防火墙服务界面
a3VVoj.png

扫描二维码关注公众号,回复: 11542733 查看本文章

2、运行时配置/永久配置
a3VmYn.md.png

3、重新加载防火墙,更改永久配置并生效
a3VEwQ.png

4、关联网卡到指定区域
a3VFOS.png

5、修改默认区域
a3VeFs.png

6、连接状态
a3VnWq.md.png

firewalld工具的“服务”、“服务”选项卡中有大量的子选项:

  • “区域”选项卡
  1. “服务”子选项卡
  2. “端口”子选项卡
  3. “协议”子选项卡
  4. “源端口”子选项卡
  5. “伪装”子选项卡
  6. 端口转发子选项卡
  7. ICMP过滤器“子选项卡
  • “服务”选项卡(注意!只有在永久配置模式下服务才可以创建、编辑以及删除)
  1. “模块”子选项卡
  2. “目标地址”子选项卡

六、Firewall-config 常用命令

1、启动firewalld

[root@localhost ~]# systemctl start firewalld

2、设置firewalld为开机自启动

[root@localhost ~]# systemctl enable firewalld

3、查看firewalld运行状态(2种)

[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# firewall-cmd --state

4、停止firewalld

[root@localhost ~]# systemctl stop firewalld

5、设置firewall开机不自启动

[root@localhost ~]# systemctl disable firewalld

6、显示预定义区域

[root@localhost ~]# firewall-cmd --get-zones

7、显示预定义的服务

[root@localhost ~]# firewall-cmd --get-service

8、显示预定义的ICMP类型

[root@localhost ~]# firewall-cmd --get-icmptypes

9、显示网络连接或接口的默认区域

[root@localhost ~]# firewall-cmd --get-default-zone

10、设置网络连接或接口的默认区域(以work区域举例,下同)

[root@localhost ~]# firewall-cmd --set-default-zone=work

11、显示已激活的所有区域

[root@localhost ~]# firewall-cmd --get-active-zones

12、显示指定接口绑定的区域

[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33

13、为指定接口绑定区域

[root@localhost ~]# firewall-cmd --zone=work --add-interface=ens33

14、为指定的区域更改绑定的网络接口

[root@localhost ~]# firewall-cmd --zone=work --change-interface=ens33

15、为指定的区域删除绑定的网络接口

[root@localhost ~]# firewall-cmd --zone=work --remove-interface=ens33

16、显示所有指定区域的所有规则

[root@localhost ~]# firewall-cmd --zone=work --list-all

ps:如果不加--zone=work则仅显示默认区域:

[root@localhost ~]# firewall-cmd --list-all

17、显示指定区域内允许访问的所有服务

[root@localhost ~]# firewall-cmd --zone=work --list-service

18、为指定区域设置允许访问的某项服务

[root@localhost ~]# firewall-cmd --zone=work --add-service=http

19、删除指定区域已设置的允许访问的某项服务

[root@localhost ~]# firewall-cmd --zone=work --remove-service=http

20、显示指定区域内允许访问的所有端口号

[root@localhost ~]# firewall-cmd --zone=work --list-ports

21、为指定区域设置允许访问的某个/某段端口号(包括协议名)

[root@localhost ~]# firewall-cmd --zone=work --add-port=80/tcp

22、删除指定区域已设置的允许访问的端口号(包括协议名)

[root@localhost ~]# firewall-cmd --zone=work --remove-port=80/tcp

23、显示指定区域内拒绝访问的所有 ICMP 类型

[root@localhost ~]# firewall-cmd --zone=work --list-icmp-blocks

24、为指定区域设置拒绝访问的某项 ICMP 类型(请求类型)

[root@localhost ~]# firewall-cmd --zone=work --add-icmp-block=echo-request

25、删除指定区域已设置的拒绝访问的某项 ICMP 类

[root@localhost ~]# firewall-cmd --zone=work --remove-port=69/tcp

ps:如果忽略--zone=work,则表示对默认区域操作
  • firewall-cmd 命令工具与配置模式相关的选项有三个:
  1. reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置。
  2. –permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动,firewalld 或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时规则。
  3. –runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性

例:

[root@localhost ~]# firewall-cmd --permanent --zone=work --add-port=443/tcp

七、Firewalld 防火墙配置实例

a3VKS0.md.png

需求:

  1. 禁止主机Ping服务器
  2. 只允许192.168.50.132主机访问SSH服务
  3. 允许所有主机访问Apache服务

分析:

首先,想实现该需求我们要分别对源IP为192.168.50.132的主机及其他的各类主机建立防火墙规则,所以需要设置两个区域,我这里为work与public区域,work区域中的规则针对客户机,而public区域中的规则针对所有其他主机,有了配置思路后下面进行试验:

实验步骤:

1、将两台虚拟机分别重命名为“server“(服务器)与“client”(PC)

2、在“work”区域中添加客户端源IP地址
a3VQyT.md.png
a3V3mF.md.png

3、首先用客户机尝试ping服务器
a3VlOU.png

可以ping通

在ICMP过滤器中勾选“echo-reply”与“echo-request”两项
a3VtYR.md.png

4、再次用客户机测试,发现已经无法ping通了
a3V8w4.md.png

5、接着在“服务”中将“ssh”服务勾选上
a3VYk9.md.png

6、用客户机尝试ssh远程连接
a3VGTJ.md.png

可以连接

7、在服务器上安装httpd并开启服务,在“服务”中将“http”服务勾选上

8、在客户机上尝试访问服务器上的网页
a3VaSx.md.png

成功!

9、针对客户机的work区域已经设置完成,下面设置public区域

在“服务中将”ssh“取消勾选,将http进行勾选

在ICMP过滤器中勾选“echo-reply”与“echo-request”两项
a3Vdl6.md.png

10、设置完成够我们才测试一下,将客户机更换一个临时IP

[root@client ~]# ifconfig ens33 192.168.50.136

测试能否ping同服务器及进行远程SSH连接
a3VNf1.md.png

均失败,实验成功!

猜你喜欢

转载自blog.csdn.net/u014042047/article/details/107726242