防火墙出入站规则
定义
防火墙出入站规则是防火墙中按照数据流方向划分的两类访问控制条目。入站规则作用于试图进入受保护网络的传入流量,出站规则作用于由内部网络向外发出的传出流量[1]。
在中国网络安全厂商的知识库中,入站流量被定义为从外部网络流向内部网络的数据包,出站流量则相反,由内部网络流向外部网络;入站规则决定外部主机能否访问本地服务器的特定端口,出站规则决定内部用户能否访问外部站点或服务[2]。
规则本身并不区分是「网络防火墙」还是「主机防火墙」,凡是按方向对连接做放行或阻断判断的配置,都属于出入站规则的范畴。在虚拟化与云计算环境中,规则集可以绑定到路由器的入方向或出方向网卡上生效,与绑定云主机网卡的安全组形成互补[3]。
原理
出入站规则的核心是把数据包的方向、协议、端口、地址等属性与规则条件逐条比对。规则通常包含来源 IP 地址、目的 IP 地址、协议类型(如 TCP、UDP、ICMP)和端口范围等要素,防火墙在这些要素上判断流量应被允许还是拒绝[1]。
匹配过程普遍采用「首条命中」方式:防火墙按顺序自上而下检查规则,遇到第一条与数据包相符的规则即执行其动作,不再继续向下查找;若所有规则都不匹配,则按该链或该方向的默认策略处理[4]。这一特性意味着规则的排列顺序会直接影响最终结果,例如在「允许全部」规则之前放置的拒绝规则会优先生效[5]。
$匹配结果 = f(方向, 源地址, 目的地址, 协议, 端口, 报文状态)$
在 Linux 的 iptables 中,入站流量依次经过 PREROUTING、INPUT 链,出站流量经过 OUTPUT、POSTROUTING 链,转发流量则经过 PREROUTING、FORWARD、POSTROUTING 链;每条链在规则全部不匹配时按链的默认策略处置数据包[6]。firewalld 进一步把规则组织为「策略」,通过指定入口区域和出口区域来对区域之间的单向流量施加规则,从而支持非对称的过滤策略[7]。
flowchart LR
A[外部网络] -->|入站流量| B{入站规则匹配}
B -->|允许| C[内部主机/服务]
B -->|拒绝或丢弃| D[阻断]
C -->|出站流量| E{出站规则匹配}
E -->|允许| F[外部网络]
E -->|拒绝或丢弃| D
发展历程
防火墙规则的方向概念随包过滤技术一同出现。1988 年,DEC 公司开发出最早的包过滤防火墙,通过检查数据包的源地址、目的地址和端口号来决定是否放行[8]。这一时期的规则不保存连接状态,对同一会话的请求与响应往往需要在两个方向分别配置规则[9]。
20 世纪 90 年代初,AT&T 贝尔实验室在包过滤基础上发展出状态检测技术,防火墙开始维护连接状态表,记录源地址、目的地址、端口和协议等信息[10]。借助状态表,内部发起的连接所对应的外部响应流量可被自动放行,无需再为返回方向单独设置允许规则,规则的复杂度随之下降[9]。
1994 年,Check Point 公司发布商用状态检测防火墙产品 Firewall-1,推动了此类规则体系的普及[8]。2007 年下一代防火墙出现后,出入站判断不再只依据端口与地址,还可结合应用识别与深度包检测,规则颗粒度进一步细化[8]。
在主机防火墙上,微软 2001 年随 Windows XP Service Pack 1 首次提供 Internet Connection Firewall,默认关闭;2004 年 8 月随 Windows XP Service Pack 2 发布的 Windows 防火墙改为默认开启,默认阻止未经请求的入站流量、允许全部出站流量[11]。
应用
在企业边界防火墙上,出入站规则用于放行必要的对外服务并限制不必要的外部访问。常见做法是入站方向默认拒绝、再为需要开放的流量设置例外,例如允许 HTTPS 与 DNS 流量进入以支持员工浏览网页;出站方向默认允许,再针对不应外发的流量设置阻断[1]。
在 Windows 主机防火墙上,管理员可在高级安全控制台中分别建立入站规则与出站规则,规则类型包括程序规则、端口规则、预定义规则和自定义规则;程序规则按可执行文件路径控制连接,端口规则按 TCP 或 UDP 端口号控制连接[12]。Windows 防火墙的规则配置可分别应用于域、专用和公用三种网络配置文件。
在 Linux 系统中,iptables 的 INPUT 链负责进入本机的数据包,OUTPUT 链负责本机发出的数据包,FORWARD 链负责途经本机转发的数据包;表与链按 raw、mangle、nat、filter 的优先级依次匹配[6]。firewalld 则以区域为单位管理规则,drop、block、public、internal、dmz、work、home、trusted 等区域对应不同的信任级别与默认处置方式[13]。
在云环境中,虚拟私有网络的防火墙规则集可以绑定到路由器的入方向或出方向,规则由优先级、匹配条件和行为三部分组成,行为包括接受、丢弃和拒绝;其中丢弃不向请求端反馈,拒绝则向请求端返回不通过信息[3]。
局限
出入站规则只能依据地址、端口、协议等有限属性做判断,难以察知流量内容是否安全。基于固定规则的识别方法依赖端口与协议的映射关系,对使用自定义端口的未知协议以及加密流量会失去作用,而加密又把协议特征掩盖,使基于载荷特征的方法同样失效[14]。
默认策略的取舍本身构成一对矛盾。入站默认拒绝并逐条开例外的配置更安全,但规则遗漏会导致合法流量被阻断;出站默认允许便于应用部署,却意味着内部流量的外发很少受到约束[15]。若要把出站方向改为默认阻止,则需为每个需要联网的应用单独建立规则,维护成本显著上升[15]。
状态检测虽然简化了规则配置,但需要跟踪和维护全部网络连接的状态,实现复杂度较高,对网络传输性能影响较大,并可能受到拒绝服务攻击的影响[10]。由于不充当代理,状态检测防火墙允许内部数据包直达外部网络,内部 IP 地址可能因此暴露[10]。
规则集的规模与顺序也会带来问题。窗口防火墙不支持管理员分配的加权规则排序,只能依靠若干一致的优先行为来构造策略,设计时须确保没有相互重叠的显式阻止规则意外阻断希望放行的流量;规则写得越细,底层可能生成大量筛选器,增加复杂度并影响性能[15]。
此外,单纯依靠出入站规则无法阻止数据通过加密隧道外泄。对加密流量,仅依赖深度包检测的安全设备无法识别其中的数据外发行为,而被拆分成小块、经不同连接或协议分别传输的数据更难以在实时环境中被发现[16]。
参见
参考资料
- 什麼是防火牆規則? - Check Point軟體 [引用日期2026-10-14]
- 防火墙入站和出站区别_知识中心_资源中心_安恒信息 [引用日期2026-10-14]
- user guide | ZStack Cloud · ZCF [引用日期2026-10-14]
- 善用存取控制清單 Cisco網路設備變身防火牆 | 網管人 - Cisco 存取控制 防火牆 [引用日期2026-10-14]
- 如何设置Firewall防火墙的访问控制策略 [引用日期2026-10-14]
- Iptables防火墙的四表五链概念以及使用技巧 [引用日期2026-10-14]
- firewalld.policies(5) — firewalld — Debian testing [引用日期2026-10-14]
- 科普中国-防火墙 [引用日期2026-10-14]
- README [引用日期2026-10-14]
- core.ac.uk 上的 PDF 文件 [引用日期2026-10-14]
- imperial.ac.uk 上的 PDF 文件 [引用日期2026-10-14]
- 实现 Windows Server IaaS VM 的 Windows 防火墙 [引用日期2026-10-14]
- firewalld for Beginners(firewalld 入门)¶ [引用日期2026-10-14]
- packet-filtering-HOWTO-6 [引用日期2026-10-14]
- Windows 防火墙规则 - 跳至主要内容 跳到 Ask Learn 聊天体验 [引用日期2026-10-14]
- A third problem is invasion of privacy [38] [引用日期2026-10-14]