> For the complete documentation index, see [llms.txt](https://handbook.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.bsdcn.org/di-34-zhang-fang-huo-qiang/34.2.-fang-huo-qiang-de-gai-nian.md).

# 34.2.防火墙的概念

规则集包含一组规则，这些规则根据数据包中包含的值来决定是否放行或阻止数据包。主机之间的双向数据包交换构成了一个会话对话。防火墙规则集处理来自公共互联网的数据包，以及系统响应这些数据包所产生的数据包。每个 TCP/IP 服务都由其协议和监听端口预定义。指向特定服务的数据包来自使用非特权端口的源地址，并且目标是目标地址上的特定服务端口。所有上述参数都可以用作选择标准来创建规则，从而放行或阻止服务。

要查找未知的端口号，请参阅 **/etc/services**。或者，访问 <https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers>，查找端口号以了解特定端口号的用途。

查看此链接以了解 [特洛伊木马使用的端口](http://web.archive.org/web/20150803024617/http://www.sans.org/security-resources/idfaq/oddports.php)。

FTP 有两种模式：主动模式和被动模式。它们的区别在于如何获取数据通道。被动模式更安全，因为数据通道由发起 FTP 会话的请求方获取。要了解有关 FTP 和不同模式的详细解释，请参阅 <http://www.slacksite.com/other/ftp.html>。

防火墙规则集可以是“排他性”或“包容性”的。排他性防火墙允许所有流量通过，除非流量与规则集匹配。包容性防火墙则反之，它仅允许匹配规则的流量通过，阻止其他所有流量。

包容性防火墙能更好地控制出站流量，因此对于提供公共互联网服务的系统来说，它是更好的选择。它还控制了来自公共互联网的流量，决定哪些流量可以访问私有网络。所有不匹配规则的流量都会被阻止并记录。包容性防火墙通常比排他性防火墙更安全，因为它们显著减少了允许不良流量的风险。

> **注意**
>
> 除非另有说明，本章中的所有配置和示例规则集都创建包容性防火墙规则集。

使用“状态防火墙”可以进一步提升安全性。这种类型的防火墙会跟踪打开的连接，只允许与现有连接匹配或打开新的允许连接的流量。

有状态过滤将流量视为双向数据包交换的会话。规则中指定状态时，防火墙会动态生成每个预期数据包的内部规则。它具有足够的匹配能力来确定数据包是否适合会话。如果数据包不符合会话模板，将自动被拒绝。

会话完成时，它会从动态状态表中移除。

有状态过滤让用户可以专注于阻止或放行新的会话。如果新的会话被放行，所有后续数据包将自动允许，任何伪造的数据包都会被自动拒绝。如果新的会话被阻止，则它的任何后续数据包都不会被允许。有状态过滤提供了先进的匹配能力，能防御攻击者采用的各种攻击方法。

NAT（网络地址转换）功能使防火墙后面的私有局域网能共享由 ISP 分配的单一 IP 地址，即使该地址是动态分配的。NAT 让局域网中的每台计算机都能访问互联网，而无需为多个互联网账户或 IP 地址支付额外的费用。

数据包离开防火墙发往公共互联网时，NAT 会自动将局域网中每个系统的私有 IP 地址转换为单一公共 IP 地址。它还会对返回的数据包执行反向转换。

根据 RFC 1918，以下 IP 地址范围保留用于私有网络，这些地址永远不会直接路由到公共互联网，因此可与 NAT 一起使用：

* **10.0.0.0/8**
* **172.16.0.0/12**
* **192.168.0.0/16**

> **警告**
>
> 在使用防火墙规则时，务必 *小心谨慎*。某些配置 *可能会将管理员锁定* 在服务器之外。为了安全起见，建议在本地控制台上执行初始防火墙配置，而不是通过 ssh 远程操作。
