CentOS 7 firewalld 动态防火墙介绍

FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。

更全面的内容可以查看 FirewallD 官网文档

firewalld 最重要的是 zone 区域的概念

什么是区域?
网络区域定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。

预定义的区域列表如下, 每个区域都是一个 xml 文件, 保存在 /usr/lib/firewalld/zones/ 中, 不要编辑这里的文件

自定义区域则保存在 /etc/firewalld/zones/ 中, 可以编辑这里的文件, 这里的设置将覆盖 /usr/lib/firewalld/zones/ 中的设置

区域列表, public 是默认区域, 由 firewalld 提供的区域按照从不信任到信任的顺序排序。

什么是接口?
就是指实际的网卡, 如 eth0, em1. 一个接口只能属于一个区域

什么是服务?
一项服务可以是本地和目的地端口的列表,如果服务被允许的话,也可以是一系列自动加载的防火墙辅助模块。服务通过单个的 XML 配置文件来指定,这些配置文件则按以下格式命名:service-name.xml。

预定义服务保存在 /usr/lib/firewalld/services/ 中
自定义服务保存在 /etc/firewalld/services/ 中

 

CentOS 7 默认使用 firewalld 防火墙, 如果没有启用. 先启用.

配置防火墙

有两种工具可以配置

firewall-config ,图形界面工具, 需要安装图形界面相关的依赖, 这里就不多介绍了.

firewall-cmd , 命令行工具, 主要使用它来配置防火墙.

在设置命令后加 –permanent 参数才会永久保存, 否则在重新加载配置后会丢失设置.

 

复杂防火墙规则配置 “Rich Language” 语法

RichLanguage 官方文档

  • 一个规则是关联某个特定区域的,一个区域可以有几个规则。
  • 如果几个规则互相影响或者冲突,则执行和数据包相匹配的第一个规则。
  • 如果提供了规则系列,它可以是 ipv4 或者 ipv6 。规则系列把规则限定在 IPv4 或  IPv6 。
  • 如果没有提供规则系列, 将为 IPv4 和 IPv6 增加规则。
  • 如果源地址或者目标地址在一个规则中被使用,那么必须提供规则系列。
  • 端口转发也存在这种情况。

通过 firewall-cmd –zone=dmz –add-interface=eth0 命令添加的接口, 在重启 firewalld 服务后将会添加到默认区域(public) 中. 如果想保持原来的设定.则编辑接口文件

 

通过编辑 XML 文件配置防火墙

/etc/firewalld/目录下有三个子目录

为一个区域增删服务

增加自定义服务

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注