Firewall(firewalld)是 CentOS 7 开始自带的防火墙,操作方式与规则等都与 iptables 不同。
firewall 相比较 iptables 操作更加简单,不需要记太繁琐的规则写法,记几条命令就足以够用。
服务相关
- 开启 / 关闭 / 重启 / 查询进程状态
systemctl start/stop/restart/status firewalld
- 设置开机自启 / 关闭开机自启
systemctl enable/disable firewalld
- 查看防火墙状态
firewall-cmd --state
常用操作
- 重载防火墙(删除非永久配置、应用永久配置,配置完防火墙规则后需要执行此命令才能生效)
firewall-cmd --reload
- 查看所有配置(包括已开启的端口及服务)
firewall-cmd --zone=public --list-all
- 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
如果需要开启 UDP 协议,把 tcp
改成 udp
即可,下同。
- 开启连续的多个端口
firewall-cmd --zone=public --add-port=3000-3100/tcp --permanent
- 禁用端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
- 添加服务
firewall-cmd --zone=public --add-service=http --permanent
添加服务其实也是开启端口,只是内置的服务规则已经包含了常见的各种软件的通信端口,使用更加方便。例如添加 http 服务,开启默认的 80 端口;添加 ssh 服务,开启默认的 22 端口。
- 删除服务
firewall-cmd --zone=public --remove-service=http --permanent
- 查看所有可添加的服务(含未启用)
firewall-cmd --get-service
不常用的操作
- 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
–zone 作用域
–permanent 永久生效,没有此参数时 命令会临时生效,但重启和 reload 防火墙后会失效
这里跟 “常用操作” 里那个开启端口是一样一样的,如果想高级使用,可以活用--zone
和--permanent
参数。CentOS7 默认的作用域都是 public。
- 查看指定区域的所有配置
firewall-cmd --zone=public --list-all
–zone=public 指定区域
- 查看所有区域的所有配置
firewall-cmd --list-all-zones
- 查看规则中已启用的服务
firewall-cmd --list-services
添加自定义服务
在 /usr/lib/firewalld/services/
下自定义服务 xml 文件即可,写法可以参考目录下面系统内置的文件。
- 查看所有 icmp 规则(含未启用)
firewall-cmd --get-icmptype
- 查询默认区域
firewall-cmd --get-default-zone
默认区域为 public
- 设置默认区域
firewall-cmd --set-default-zone=internal
- 将指定网口增加到区域
firewall-cmd --zone=zone --add-interface=网口名称
- 查看所有区域(含未启用)
firewall-cmd --get-zones
- 查看网口使用的区域
firewall-cmd --get-active-zones
- 查看指定区域所有端口
firewall-cmd --zone=public --list-ports
- 端口流量转发(同一台服务器,从 80 到 12345)
firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=12345
- 端口流量转发(不同服务器)
在需要的区域激活 Masquerade
firewall-cmd --zone=public --add-masquerade
- 添加规则,从本机 80 转发到 1.2.3.4 的 8080 端口
firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=1.2.3.4
- 删除流量转发规则
firewall-cmd --zone=public --remove-masquerade
- 启用 / 禁用 / 查询区域端口和协议组合
firewall-cmd --permanent [--zone=] --add(/remove/query)-port=[-]/ [--timeout=]
- 在区域中启用 / 禁止 / 查询端口转发或映射
firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
- 启用 / 禁用 / 查询区域中的服务
firewall-cmd --permanent [--zone=] --add(/remove/query)-service=
- 永久启用 / 禁用 / 查询区域中的 ICMP 阻塞
firewall-cmd --permanent [--zone=] --add(/remove/query)-icmp-block=
/usr/lib/firewalld
中的默认 / 备用配置
该目录包含了由 firewalld 提供的默认以及备用的 ICMP 类型、服务、区域配置。由 firewalld 软件包提供的这些文件不能被修改,即使修改也会随着 firewalld 软件包的更新被重置。 其他的 ICMP 类型、服务、区域配置可以通过软件包或者创建文件的方式提供。
/etc/firewalld
中的系统配置
存储在此的系统或者用户配置文件可以是系统管理员通过配置接口定制的,也可以是手动定制的。这些文件将重载默认配置文件。
为了手动修改预定义的 icmp 类型,区域或者服务,从默认配置目录将配置拷贝到相应的系统配置目录,然后根据需求进行修改。
如果你加载了有默认和备用配置的区域,在 /etc/firewalld 下的对应文件将被重命名为 .old 然后启用备用配置。
- 最新
- 最热
只看作者