文章目录

  • 1. firewalld 是什么
  • 2. 什么是动态防火墙
  • 3. firewalld 和 iptables 之间的关系
  • 4. firewalld 区域
    • 4.1 firewalld 区域的概念
    • 4.2 区域(zone)类型
  • 5. firewalld 服务
  • 6. firewalld 命令管理

1. firewalld 是什么

firewalld 提供了支持 网络 / 防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。

2. 什么是动态防火墙

  我们首先需要弄明白的第一个问题是到底什么是动态防火墙,为了解答这个问题,我们先来回忆一下 iptables service 管理防火墙规则的模式。用户使用命令添加防火墙的规则,如果想让规则永久保存,还需要再执行命令 service iptables reload 使变更的规则保存到配置文件里。在这整个过程的背后, iptables service 会对防火墙的规则列表全部重读一次,加载到内核。
  如果我们把这种哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话,那么 firewalld 所提供的模式就可以叫做动态防火墙,它的出现就是为了解决这一问题,任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可。

3. firewalld 和 iptables 之间的关系

  firewalld 提供了一个 daemon 和 service,还有命令行和图形界面配置工具,它仅仅是替代了 iptables service 部分,其底层还是使用 iptables 作为防火墙规则管理入口,firewalld 自身并不具备防火墙的功能,而是和 iptables 一样需要通过内核的 netfilter 来实现,也就是说 firewalld 和 iptables 一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的 netfilter,只不过 firewalld 和 iptables 的结构以及使用方法不一样罢了。

区别项 firewalld iptables
配置文件 /usr/lib/firewalld、/etc/firewalld /etc/sysconfig/iptables
对规则的修改 不需要全部刷新策略,不丢失现行连接 需要全部刷新策略,丢失连接
防火墙类型 动态防火墙 静态防火墙
  • iptables 主要是基于接口来设置规则,从而判断网络的安全性;firewalld 是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全,与硬件防火墙的设置相类似
  • iptables在 /etc/sysconfig/iptables 中储存配置;firewalld 将配置储存在 /etc/firewalld/(优先加载)和 /usr/lib/firewalld/(默认的配置文件)中的各种 XML 文件里
  • 使用 iptables 每一个单独更改意味着清除所有旧有的规则和从 /etc/sysconfig/iptables 里读取所有新的规则;使用 firewalld 却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此 firewalld 可以在运行时间内,改变设置而不丢失现行连接

4. firewalld 区域

4.1 firewalld 区域的概念

过滤规则的集合:zone

  • 一个 zone 就是一套过滤规则,数据包必须要经过某个 zone 才能入站或出站。不同 zone 中规则粒度粗细、安全强度都不尽相同。可以把 zone 看作是一个个出站或入站必须经过的安检门,有的严格、有的宽松、有的检查细致、有的检查粗略
  • 每个 zone 单独对应一个 xml 配置文件,在目录 /usr/lib/firewalld/services/ 下,文件名为 <zone名称>.xml。自定义 zone 只需要添加一个 <zone名称>.xml 文件,然后在其中添加过滤规则即可
  • 每个 zone 都有一个默认的处理行为,包括:default(省缺)、ACCEPT、REJECT、DROP

4.2 区域(zone)类型

  firewalld 将网卡对应到不同的区域(zone),zone 默认共有 9 个区域:block,dmz,drop,external,home,internal,public,trusted,work。

区域 说明
trusted(信任区域) 允许所有网络流量连接,即使没有开放任何服务,那么使用此 zone 的流量照样通过
public(公共区域) 默认的 zone,部分公开,不信任网络中其他计算机,只放行特定服务
external(外部区域) 允许与 ssh 预定义的服务传入流量,其余均拒绝。默认将通过此区域转发的 IPv4 传出流量进行地址伪装,可用于为路由器启用了伪装功能的外部网络
home(家庭区域) 允许与 ssh、ipp-client、mdns、samba-client 或 dhcpv6-client 预定义的服务传入流量,其余均拒绝
internal(内部区域) 默认值时与 home 区域相同
work(工作区域) 允许与 ssh、ipp-client、dhcpv6-client 预定义的服务传入流量,其余均拒绝
dmz(隔离区域也称为非军事区域) 允许与 ssh 预定义的服务传入流量,其余均拒绝
block(限制区域) 任何流入的包都被拒绝,返回 icmp-host-prohibited 报文(ipv4)或 icmp6-adm-prohibited 报文(ipv6)。只允许由该系统初始化的网络连接
drop(丢弃区域) 任何流入的包都被丢弃,不做任何响应,只允许流出的数据包
  • 最终一个区域的安全程度是取决于管理员在此区域中设置的规则
  • 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则,只会允许符合规则的流量传入
  • 可以根据网络规模,使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
  • 不同的区域之间的差异是其对待数据包的默认行为不同,根据区域名字我们可以很直观的知道该区域的特征,在 CentOS7 系统中,默认区域为 public

firewalld 详解
Linux 中的防火墙

5. firewalld 服务

  • 在 /usr/lib/firewalld/services/ 目录中,还保存了另外一类配置文件,每个文件对应一项具体的网络服务,如 ssh 服务等
  • 与之对应的配置文件中记录了各项服务所使用的 tcp/udp 端口,在最新版本的 firewalld 中默认已经定义了 70 多种服务供我们使用
  • 当默认提供的服务不够用或者需要自定义某项服务的端口时,我们需要将 service 配置文件放置在 /etc/firewalld/services/ 目录中
/etc/firewalld/      中存放修改过的配置(优先查找,找不到再找默认的配置)
/usr/lib/firewalld/ 默认的配置信息

修改配置的话只需要将 /usr/lib/firewalld 中的配置文件复制到 /etc/firewalld 中修改。恢复配置的话直接删除 /etc/firewalld 中的配置文件即可。

示例:
ssh 服务默认运行在 22 端口,但是你想要让 ssh 服务运行在 220 端口,此时需要放行 220 端口。把 /usr/lib/firewalld/ssh.xml 文件拷贝到 /etc/firewalld/services/ 目录下,修改文件端口为 220。[root@c7-1 /usr/lib/firewalld/services]#cat ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service><short>SSH</short><description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description><port protocol="tcp" port="22"/>
</service>

service 配置的好处显而易见:

  • 通过服务名来管理规则更加人性化
  • 通过服务来组织端口分组的模式更加高效,如果一个服务使用了若干个网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式

每加载一项 service 配置就意味着开放了对应的端口访问,使用下面的命令分别列出所有支持的 service 和查看当前 zone 中加载的 service:

firewall-cmd --get-services      #列出所有支持的 service
firewall-cmd --list-services    #查看当前 zone 中加载的 service

6. firewalld 命令管理

常用的 firewall-cmd 命令选项 说明
firewall-config 使用图形界面
--reload 重新加载配置,修改 firewalld 配置后需执行此命令
--get-default-zone 显示当前默认区域
--set-default-zone= 设置默认区域,= 后面跟区域
--get-active-zones 显示当前正在使用的区域及其对应的网卡接口
--get-zones 显示所有可用的区域
--get-zone-of-interface= 显示指定接口绑定的区域,= 后面跟网口
--zone= --add-interface= 为指定接口绑定区域
--zone= --change-interface= 为指定的区域更改绑定的网络接口
--zone= --remove-interface= 为指定的区域删除绑定的网络接口
--get-zone-of-source=[/] 显示指定源地址绑定的区域
--zone= --add-source=[/] 为指定源地址绑定区域
--zone= --change-source=[/] 为指定的区域更改绑定的源地址
--zone= --remove-source=[/] 为指定的区域删除绑定的源地址
--list-all-zones 显示所有区域及其规则
--zone= --list-all 显示所有指定区域的所有规则,省略 --zone= 时表示仅对默认区域操作
--zone= --list-services 显示指定区域内允许访问的所有服务
--zone= --add-service= 为指定区域设置允许访问的某项服务
--zone= --remove-service= 删除指定区域已设置的允许访问的某项服务
--zone= --list-ports 显示指定区域内允许访问的所有端口号
--zone= --add-port=[端口号]/[协议名] 为指定区域设置允许访问的某个或某段端口号(包括协议名)
--zone= --remove-port=[端口号]/[协议名] 删除指定区域已设置的允许访问的端口号(包括协议名)
--zone= --list-icmp-blocks 显示指定区域内拒绝访问的所有 ICMP 类型
--zone= --add-icmp-block= 为指定区域设置拒绝访问的某项 ICMP 类型
--zone= --remove-icmp-block= 删除指定区域已设置的拒绝访问的某项 ICMP 类型
firewall-cmd --get-icmptypes 显示所有 ICMP 类型

参考文献:
Linux 防火墙
firewalld 详解
Linux 防火墙 firewalld 与 iptables
Linux 防火墙基础(Firewalld命令的使用)
CentOS7 防火墙配置 firewall-cmd

Firewalld 防火墙详解相关推荐

  1. iptables、firewalld防火墙详解

    一.iptables防火墙设置 1.Netfilter组件 内核空间,集成在linux内核中: 官网文档:https://netfilter.org/documentation/ 扩展各种网络服务的结 ...

  2. iptable 详解_最全的iptables防火墙详解.pdf

    最全的iptables防火墙详解 iptables / iptables / iippttaabblleess官方网站:hhttttpp::nneettffiilltteerr..oorrgg// • ...

  3. linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战

    Linux iptables防火墙详解 + 配置抗DDOS***策略实战 Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中, ...

  4. iptables防火墙详解及使用layer7阻止qq,酷狗,等P2P软件

    iptables防火墙详解及使用layer7阻止qq,酷狗,等P2P软件   防火墙其实就是一个加固主机或者网络安全的一个设备或者软件而已,通过防火墙可以隔离风险区域与安全区域的连接,同时不会妨碍风险 ...

  5. 什么是微信防火墙_CentOS 7/8 预装的新型防火墙firewalld配置详解,你会用吗

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文将会详细介绍CentOS 7 firewalld的 ...

  6. Linux_IPtables防火墙详解

    目录 目录 Iptables Iptables结构 规则表 规则链 iptables指令用法详解 综合案例 SNAT 策略 DNAT 策略 Iptables规则的备份和还原 iptables 练习 I ...

  7. iptables防火墙详解

    iptables详解 2012-07-18 20:10:08 分类: LINUX 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪 ...

  8. linux防火墙端口配置策略路由,Linux iptables防火墙详解 + 配置抗DDOS攻击策略实战...

    Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中,防火墙操作工具叫:ipfwadm 在2.2内核中,防火墙操作工具叫:ipc ...

  9. CentOS 7 firewalld 配置详解

    1.在CentOS 7里有几种防火墙共存:firewalld.iptables.ebtables. 默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables ...

最新文章

  1. CString工作原理和常见问题分析
  2. javaSE----eclipse的安装与使用
  3. javascript+dom
  4. hdu5108枚举因子求最小的m
  5. 见光死怎么办?如何提升用户对网站的好感,提升转化?
  6. graphql入门_GraphQL入门指南
  7. 两个大整数相乘 C++ 版本 源码
  8. MYSQL-常用函数
  9. ASP.NET20 自定义配置节学习笔记(一)
  10. java日期格式化 类_Java日期格式化(DateFormat类)
  11. linux系统软件包下载
  12. python强制删除文件夹_python删除文件夹下的文件保留但清空子文件夹
  13. 阿里官方 Redis 开发规范
  14. Ubuntu 搭建 STM32 开发环境
  15. Augustus:真核生物基因结构预测软件-安装篇
  16. 拟合程度的评估--判定系数
  17. Ubuntu使用小教程02——服务器上安装ubuntu桌面版(新手向)
  18. 【面试题 - mysql】进阶篇 - 索引
  19. 诺禾-实验技巧之WB篇
  20. 约束优化:约束优化的三种序列无约束优化方法

热门文章

  1. element在线运行网站codepen报错:Uncaught ReferenceError: Vue is not defined
  2. 格兰富宣布成立全球Mobility团队,聚焦可持续和智能解决方案
  3. Android SDK版本和API Level对照表(最新最全)
  4. 认识铁电材料从这里开始TDZT-04铁电材料测试仪
  5. 闲的没事,算了算4294967296的平方
  6. 玩客云刷armbian的坑
  7. 空间计算时代来临:苹果Vision Pro震撼上市,探索真实与虚拟的新边界
  8. VCS工具学习笔记(3)
  9. Rotated Sorted Array
  10. 股票菜鸟回忆录—至暗时刻,等待黎明的到来