资源说明: Linux 系统 firewall-cmd 命令详解
firewall-cmd 是 firewalld 的字符界面管理工具,firewalld 是 CentOS 7 的一大特性。firewalld 最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念。
firewalld 跟 iptables 比起来至少有两大好处:firewalld 可以动态修改单条规则,而不需要像 iptables 那样,在修改了规则后必须得全部刷新才可以生效。firewalld 在使用上要比 iptables 人性化很多,即使不明白“五张表五条链”而且对 TCP/IP 协议也不理解也可以实现大部分功能。
firewalld 自身并不具备防火墙的功能,而是和 iptables 一样需要通过内核的 netfilter 来实现,也就是说 firewalld 和 iptables 一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的 netfilter,但 firewalld 和 iptables 的结构以及使用方法不一样。
下面是 firewall-cmd 的一些基本命令:
* yum install firewalld firewall-config:安装 firewalld
* systemctl start firewalld:启动 firewalld 服务
* systemctl status firewalld:查看 firewalld 状态
* firewall-cmd --state:查看防火墙状态
* systemctl disable firewalld:停止 firewalld 服务
* systemctl stop firewalld:禁用 firewalld 服务
如果你想关闭 firewalld 防火墙,而使用 iptables,可以使用以下命令:
* systemctl stop firewalld
* systemctl disable firewalld
* yum install iptables-services
* systemctl start iptables
* systemctl enable iptables
firewall-cmd 命令还提供了很多其他的选项,例如:
* firewall-cmd --version:查看版本
* firewall-cmd --help:查看帮助
* firewall-cmd --state:显示防火墙状态
* firewall-cmd --get-active-zones:查看当前活动的 zone 信息
* firewall-cmd --get-zone-of-interface=eth0:查看指定接口所属的 zone
* firewall-cmd --panic-on:拒绝所有包
* firewall-cmd --panic-off:取消拒绝状态
* firewall-cmd --query-panic:查看是否拒绝
* firewall-cmd --reload:更新防火墙规则
firewall-cmd 命令还可以用于添加接口到 zone,例如:
* firewall-cmd --zone=public --add-interface=eth0
这将添加 eth0 接口到 public zone 中。也可以使用 --permanent 选项来使得更改永久生效。
firewall-cmd 命令还可以用于设置默认 zone,例如:
* firewall-cmd --set-default-zone=public
这将设置公用的 zone 为 default zone。
firewall-cmd 命令还可以用于查看所有打开的端口,例如:
* firewall-cmd --zone=dmz --list-ports
这将显示 dmz zone 中所有打开的端口。
firewall-cmd 命令还可以用于添加端口到 zone,例如:
* firewall-cmd --zone=dmz --add-port=8080/tcp
这将添加 8080 端口到 dmz zone 中。
firewall-cmd 命令还可以用于打开服务,例如:
* firewall-cmd --zone=work --add-service=smtp
这将打开 smtp 服务在 work zone 中。
firewall-cmd 命令还可以用于移除服务,例如:
* firewall-cmd --zone=work --remove-service=smtp
这将移除 smtp 服务在 work zone 中。
firewall-cmd 命令还可以用于显示支持的 zone 列表,例如:
* firewall-cmd --get-zones
这将显示所有支持的 zone 列表。
firewall-cmd 命令还可以用于设置当前 zone,例如:
* firewall-cmd --set-default-zone=home
这将设置当前 zone 为 home zone。
firewall-cmd 命令还可以用于查看当前 zone,例如:
* firewall-cmd --get-active-zones
这将显示当前活动的 zone 信息。
firewall-cmd 命令还可以用于设置当前 zone 的接口,例如:
* firewall-cmd --get-zone-of-interface=enp03s
这将显示 enp03s 接口所属的 zone 信息。
firewall-cmd 命令还可以用于显示所有公共 zone,例如:
* firewall-cmd --zone=pu
这将显示所有公共 zone 的信息。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。