简单介绍
在 Centos5、6 版本使用的防火墙是 iptables,但在 Centos 7 版本默认的防火墙已经不再是 iptables,取而代之的是 Firewalld 。
默认情况下 iptables 是没有安装的,如果想在Centos7 上使用 iptables 必须先安装。
firewalld 会提供 block、dmz、drop、external、home、internal、public、trusted、work 这 9 个zone。
大部分 zone 都定义有自己的允许规则,如下图:
当数据包没有匹配到任何的 zone 的话则由默认的 zone 来处理,默认的 zone 一般是 public 的zone
Firewalld 安装
yum -y install firewalld
Firewalld 服务相关命令
systemctl start firewalld # 启动服务
systemctl status firewalld # 服务状态
systemctl stop firewalld # 停止服务
systemctl restart firewalld # 重启服务
systemctl enable firewalld # 设置开机自启
systemctl disable firewalld # 取消开机自启
systemctl is-enabled firewalld # 查看是否开机自启
zone 相关命令
系统预定义 zone
查看系统给我们预定义了 哪些 zone, 使用如下命令:
firewall-cmd --get-zones
默认 zone
查看默认 zone,使用如下命令:
firewall-cmd --get-default-zone
更改默认 zone
原来默认的 zone是 public ,如果我们想更改默认的 zone为 trusted,怎么做?
firewall-cmd --set-default-zone trusted
当前正在使用的 zone
查看当前使用 zone 的信息
firewall-cmd --get-active-zones
规则查看
查看当前激活 zone的规则
firewall-cmd --list-all
查看所有 zone 的规则
firewall-cmd --list-all-zones
这里截图只是截了部分
服务
预定义服务
查看 firewall 在安装的时候给我们预定义了哪些服务?使用如下命令:
firewall-cmd --get-services
查看当前 zone 的服务
添加服务
往当前激活的 zone 添加规则,使其放行某些服务,例如: 放行 http 服务
firewall-cmd --add-service=http
移除服务
从当前激活的 zone 中移除某些已经放行了的服务,例如:移除 http 服务
firewall-cmd --remove-service=http
端口
添加端口
在当前激活的 zone 添加规则,放行端口。例如:放行 tcp协议80 端口。
firewall-cmd --add-port=80/tcp
移除端口
从当前激活的 zone 中移除某些已经放行的 端口,例如移除 tcp协议 80端口。
firewall-cmd --remove-port=80/tcp
重新加载防火墙规则
firewall-cmd --reload
防火墙规则持久化
默认情况下,我们写的防火墙规则只是临时生效,每当我们重写加载防火墙规则(执行 reload)操作时候,那些临时生效的规则就会消失。那么如何确保我们规则永久生效?
在每条命令后面 加上 —permanent 参数。