0Pricing
Linux Server Deployment & SSH Mastery · 课时

高级防火墙规则(IPTables)

掌握 IPTables,创建复杂的有状态防火墙规则,实施网络地址转换(NAT),并保护服务器免受复杂攻击。

高级防火墙规则(IPTables) 是 CoddyKit 上的免费 Linux Server Deployment & SSH Mastery 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Server Deployment & SSH Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

深入了解 iptables

iptables 是 Linux 强大的内置防火墙。虽然我们已经了解了基础知识,但它还提供了用于精确控制的高级功能。

本课将介绍复杂规则、有状态过滤和网络地址转换(NAT),帮助您真正保护和管理服务器网络。

记住表和链

iptables 将规则组织到表中,每个表都有特定用途。表中包含链,链是按顺序进行评估的规则列表。

  • filter 表:默认表,用于过滤(阻止或允许)数据包。包含 INPUT、OUTPUT 和 FORWARD 链。
  • nat 表:用于网络地址转换(NAT)。包含 PREROUTING、POSTROUTING 和 OUTPUT 链。
  • 此外还有 mangle 和 raw 等表,用于专门的数据包修改。

揭示有状态防火墙

有状态防火墙会跟踪网络连接的状态。它不会只单独检查每个数据包,而是会记住某个数据包是否属于现有的已建立连接。

主要连接状态:

  • NEW:新连接的第一个数据包。
  • ESTABLISHED:属于现有活动连接的数据包。
  • RELATED:启动新连接、且该连接与现有连接相关的数据包(例如 FTP 数据传输)。

实施有状态规则

有状态规则可以大幅简化防火墙管理。您可以允许所有属于已建立连接的流量,这意味着只需为发起 NEW 连接定义规则。

以下规则允许所有属于已建立连接或相关连接的传入数据包:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

构建复杂的规则逻辑

iptables 允许您组合各种匹配模块和选项,创建高度具体的规则。这有助于针对不同服务和来源精细调整访问权限。

示例:仅允许来自特定子网(192.168.1.0/24)的新连接访问 SSH(端口 22)。

sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -m state --state NEW -j ACCEPT

介绍网络地址转换

网络地址转换(NAT)会在数据包传输过程中修改其 IP 头中的网络地址信息。它主要用于:

  • 让专用网络中的多个设备共享一个公共 IP 地址(例如家用路由器)。
  • 进行端口转发,将外部请求指向内部服务器。

主要有两种类型:源 NAT(SNAT)和目标 NAT(DNAT)。

使用 SNAT 处理传出连接

源 NAT(SNAT)会更改数据包的源 IP 地址。当内部服务器需要通过具有公共 IP 的网关服务器访问互联网时,通常会使用它。

伪装是 SNAT 的一种特殊形式:它会自动使用传出接口的 IP 地址作为源 IP,适用于动态 IP 地址。

示例:允许内部网络 192.168.0.0/24 通过 eth0 访问互联网。

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

入站服务的 DNAT

目标 NAT(DNAT)会更改数据包的目标 IP 地址。这非常适合用于端口转发:通过网关服务器的公网 IP,让互联网能够访问内部服务器上运行的服务。

示例:将 eth0 上端口 80 的入站 Web 请求转发到地址为 192.168.1.100 的内部 Web 服务器。

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80

防御暴力破解

IPTables 可以通过限制来自某个源 IP 的新连接接受速率,帮助防御暴力破解登录尝试(例如 SSH)等常见攻击。

limit 模块允许您指定速率和突发限制。请记住,在达到限制后丢弃后续连接。

示例:将新的 SSH 连接限制为每分钟 3 个,初始突发连接数为 3,然后丢弃其他连接。

sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/minute --limit-burst 3 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP

IPTables 规则逻辑

假设有一台服务器充当网关。它有一个公网接口 eth0 和一个内部接口 eth1(连接到 192.168.1.0/24)。

哪条 IPTables 命令可以让互联网通过端口 80 访问地址为 192.168.1.50 的内部 Web 服务器?

IPTables 精通回顾

恭喜您!您已经学习了 IPTables 的高级概念:

  • 使用 ESTABLISHED、RELATED 和 NEW 状态实现有状态防火墙。
  • 组合多个匹配条件来创建复杂规则。
  • 为出站(SNAT/伪装)和入站(DNAT/端口转发)流量实现网络地址转换(NAT)。
  • 使用 limit 模块实现基本的攻击防护。

这些技能对于构建稳健且安全的 Linux 服务器环境至关重要。请记住,在修改 IPTables 规则后保存它们,因为规则默认不会持久化!

常见问题解答

「高级防火墙规则(IPTables)」课时是免费的吗?

是的 — 「高级防火墙规则(IPTables)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Linux Server Deployment & SSH Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

「高级防火墙规则(IPTables)」这节课中我会学到什么?

掌握 IPTables,创建复杂的有状态防火墙规则,实施网络地址转换(NAT),并保护服务器免受复杂攻击。 你通过在浏览器中直接运行的动手代码来练习 Linux Server Deployment & SSH Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Linux Server Deployment & SSH Mastery 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Linux Server Deployment & SSH Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「高级防火墙规则(IPTables)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Linux Server Deployment & SSH Mastery 课中编写并运行代码吗?

能。每节 Linux Server Deployment & SSH Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 服务器安全审计
  2. 高级防火墙规则(IPTables)
  3. 入侵检测与防御
  4. 集中式日志记录与 SIEM 集成
← 返回 Linux Server Deployment & SSH Mastery