安装
CentOS 7 默认已经安装了 firewalld 防火墙,并且默认启动 firewalld。如果没有安装,可以按照以下命令安装并且启动 firewalld 防火墙。
yum install firewalld firewall-config
systemctl start firewalld
systemctl enable firewalld
systemctl status firewalld
zone
zone 是一组策略的集合,一共有 9 个 zone,每个 zone 都有自己的一套默认的策略,可以通过命令行为某个 zone 添加或者删除策略,这些策略会保存在相关 zone 的配置文件中。当前 zone 默认为 public,将当前 zone 切换成某个 zone,则会应用该 zone 的所有策略。
- public
- work
- home
- block
- dmz
- drop
- external
- internal
- trusted
每个 zone 有两个配置文件,以 public zone 为例:
- /usr/lib/firewalld/zones/public.xml(系统配置文件,这里保存的是相应 zone 的系统默认策略,尽量不要修改)
- /etc/firewalld/zones/public.xml (用户配置文件,通过命令行添加或者删除的策略会自动保存到该文件)
常用参数
--permanent
--permanent 将策略保存到对应的配置文件中,可以永久生效。
# 为 public zone 添加 80 端口,并且保存到配置文件
firewall-cmd --add-port=80/tcp --permanent --zone=public
cat /etc/firewalld/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<port protocol="tcp" port="80"/>
</zone>
--zone
--zone=ZONE 指定相应的策略保存到哪个 zone 的配置文件中。如果不加 --zone 参数,则将该策略保存到当前 zone 的配置文件中。
# 查看当前 zone(默认为 public)开放的端口,以下两条命令效果相同
firewall-cmd --list-ports
firewall-cmd --list-ports --zone=public
# 为当前 zone(默认为 public) 开放 80 端口,以下两条命令效果相同
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent --zone=public
--reload
--reload 立即重新加载当前 zone(也有可能是重新加载所有 zone)的配置文件,不需要重启 firewalld,就可以应用新的策略。每次配置完新的规则,都需要运行 firewall-cmd --reload 命令来使得规则立即生效。
# 为当前 zone 添加 80 端口,并且写入配置文件
firewall-cmd --add-port=80/tcp --permanent
# 重新加载当前 zone 的配置文件
firewall-cmd --reload
常用规则
zone
# 显示当前 zone
firewall-cmd --get-default-zone
# 设置当前 zone,立即生效
firewall-cmd --set-default-zone=ZONE
# 列出所有的 zone
firewall-cmd --get-zones
# 查看所有 zone 的防火墙策略
firewall-cmd --list-all-zones
# 查看某个 zone 的防火墙策略
firewall-cmd --info-zone=ZONE
端口
firewall-cmd --list-ports
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --remove-port=80/tcp --permanent
端口转发
firewall-cmd --list-forward-ports
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.100.108 --permanent
firewall-cmd --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.100.108 --permanent








网友评论