Firewalld 防火墙
一、Firewalld 概述
firewalld 是一种简单、有状态、基于区域的防火墙。策略和区域 用于组织防火墙规则。
firewalld 提供动态管理的防火墙,支持网络/防火墙区域来定义网络连接或接口的信任级别。它支持 IPv4、IPv6 防火墙设置和以太网网桥,并具有运行时和永久配置选项的分离。它还支持服务或应用程序直接添加防火墙规则的接口。
firewalld 与 iptables 的区别在于 firewalld 是动态防火墙(无需重新启动整个防火墙),iptables 是静态防火墙(需重新启动整个防火墙)
二、Firewalld 区域
-
什么是区域
区域定义连接、接口或源地址绑定的信任级别,也可以说是特定场景(如家庭、公共、受信任等)下各种策略的集合。
-
预定义区域
- drop(丢弃区):丢弃任何传入的网络数据包,没有回复(无错误响应)。只能进行传出网络连接,无法传入。
- block(限制区):拒绝任何传入的网络连接,IPv4 显示 icmp 主机禁止消息,IPv6 显示 icmp6 adm 禁止的消息。只能在此系统内启动网络连接。
- public(公共区):用于公共区域。您不信任网络上的其他计算机不会损坏您的计算机。仅接受选定的传入连接。
- external(外部区):用于启用伪装的外部网络,尤其是路由器。您不信任网络上的其他计算机不会损坏您的计算机。仅接受选定的传入连接。
- dmz(隔离区也称非军事区):适用于非军事区内的计算机,这些计算机可以通过有限的内部网络进行公开访问。仅接受选定的传入连接。
- work(工作区):用于工作区域。你通常相信网络上的其他计算机不会伤害你的计算机。仅接受选定的传入连接。
- home(家庭区):用于家庭区域。你通常相信网络上的其他计算机不会伤害你的计算机。仅接受选定的传入连接。
- internal(内部区):用于内部网络。你通常相信网络上的其他计算机不会伤害你的计算机。仅接受选定的传入连接。
- trusted(可信区):接受所有网络连接。
默认情况下,public(公共区)是默认区域,包含所有接口(网卡)
三、Firewalld 防火墙的配置
-
配置方法
- firewall-cmd 命令行工具
- firewall-config 图形化工具
- 编辑 /etc/firewalld/ 中的配置文件
-
firewalld-cmd 命令选项
--state 获取防火墙的状态
--reload 在不丢失状态信息的情况下重新加载防火墙
--get-zones 获取所有受支持区域的列表
--get-services 获取所有受支持服务的列表
--get-icmptypes 获取所有受支持的 icmp 类型的列表
--list-all-zones 列出所有区域添加或启用的所有内容
--zone=<zone> --list-all 列出指定区域的所有内容,不指定区域则显示默认区域的所有内容
--get-default-zone 获取为网络连接设置的默认区域
--set-default-zone=<zone> 设置默认区域
--get-zone-of-interface=<interface> 获取与接口相关的区域
--zone=<zone> --add-interface=<interface> 向指定区域添加接口
--zone=<zone> --change-interface=<interface> 更改接口所属的区域为指定区域
--zone=<zone> --remove-interface=<interface> 从指定区域中删除接口
--zone=<zone> --query-interface=<interface> 查询接口是否在指定区域中
--zone=<zone> --list-services 列出指定区域中添加的服务
--panic-on 启用紧急模式以在紧急情况下阻止所有网络流量
--panic-off 禁用紧急模式
--query-panic 查询紧急模式,如果启用紧急模式,则返回0,否则返回1。
--zone=<zone> --add-service=<service> [--timeout=<seconds>] 在指定区域中(添加)启用服务
--zone=<zone> --remove-service=<service> (删除)禁用指定区域中的服务
--zone=<zone> --query-service=<service> 查询指定区域中是否启用了服务
--zone=<zone> --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>] 在区域中启用端口和协议组合
--zone=<zone> --remove-port=<port>[-<port>]/<protocol> 禁用区域中的端口和协议组合
--zone=<zone> --query-port=<port>[-<port>]/<protocol> 查询区域中是否启用了端口和协议组合
--zone=<zone> --add-masquerade 在指定区域中启用伪装
--zone=<zone> --remove-masquerade 在指定区域中禁用伪装
--zone=<zone> --query-masquerade 查询是否为指定区域启用了伪装
--zone=<zone> --add-icmp-block=<icmptype> 在指定区域中启用(添加) ICMP 块 [作用:对所选互联网控制消息协议 (ICMP) 消息的阻止]
--zone=<zone> --remove-icmp-block=<icmptype> 禁用(删除)指定区域中的 ICMP 块
--zone=<zone> --query-icmp-block=<icmptype> 查询指定区域中指定的 ICMP 块是否存在
--zone=<zone> --add-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> } 在区域中启用端口转发或端口映射
--zone=<zone> --remove-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> } 禁用区域中的端口转发或端口映射
--zone=<zone> --query-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> } 查询指定的端口转发或端口映射在区域中是否存在
--permanent 可用于永久设置选项,只有在服务重新启动/重新加载或系统重新启动后,这些更改才会立即生效。如果没有--permanent选项,那么设定的策略会在服务重启或重新加载时消失。