简单介绍

在 Centos5、6 版本使用的防火墙是 iptables,但在 Centos 7 版本默认的防火墙已经不再是 iptables,取而代之的是 Firewalld 。

默认情况下 iptables 是没有安装的,如果想在Centos7 上使用 iptables 必须先安装。

firewalld 会提供 block、dmz、drop、external、home、internal、public、trusted、work 这 9 个zone。
大部分 zone 都定义有自己的允许规则,如下图:
image.png

当数据包没有匹配到任何的 zone 的话则由默认的 zone 来处理,默认的 zone 一般是 public 的zone

Firewalld 安装

  1. yum -y install firewalld

Firewalld 服务相关命令

  1. systemctl start firewalld # 启动服务
  2. systemctl status firewalld # 服务状态
  3. systemctl stop firewalld # 停止服务
  4. systemctl restart firewalld # 重启服务
  5. systemctl enable firewalld # 设置开机自启
  6. systemctl disable firewalld # 取消开机自启
  7. systemctl is-enabled firewalld # 查看是否开机自启

zone 相关命令

系统预定义 zone

查看系统给我们预定义了 哪些 zone, 使用如下命令:

  1. firewall-cmd --get-zones

image.png

默认 zone

查看默认 zone,使用如下命令:

  1. firewall-cmd --get-default-zone

image.png

更改默认 zone

原来默认的 zone是 public ,如果我们想更改默认的 zone为 trusted,怎么做?

  1. firewall-cmd --set-default-zone trusted

image.png

当前正在使用的 zone

查看当前使用 zone 的信息

  1. firewall-cmd --get-active-zones

image.png

规则查看

查看当前激活 zone的规则

  1. firewall-cmd --list-all

image.png

查看所有 zone 的规则

  1. firewall-cmd --list-all-zones

image.png

这里截图只是截了部分

服务

预定义服务

查看 firewall 在安装的时候给我们预定义了哪些服务?使用如下命令:

  1. firewall-cmd --get-services

image.png

查看当前 zone 的服务

查看当前激活的 zone 放行哪些服务,使用如下命令:
image.png

添加服务

往当前激活的 zone 添加规则,使其放行某些服务,例如: 放行 http 服务

  1. firewall-cmd --add-service=http

image.png

移除服务

从当前激活的 zone 中移除某些已经放行了的服务,例如:移除 http 服务

  1. firewall-cmd --remove-service=http

image.png

端口

添加端口

在当前激活的 zone 添加规则,放行端口。例如:放行 tcp协议80 端口。

  1. firewall-cmd --add-port=80/tcp

image.png

移除端口

从当前激活的 zone 中移除某些已经放行的 端口,例如移除 tcp协议 80端口。

  1. firewall-cmd --remove-port=80/tcp

image.png

重新加载防火墙规则

  1. firewall-cmd --reload

防火墙规则持久化

默认情况下,我们写的防火墙规则只是临时生效,每当我们重写加载防火墙规则(执行 reload)操作时候,那些临时生效的规则就会消失。那么如何确保我们规则永久生效?
在每条命令后面 加上 —permanent 参数。
image.png
image.png