Linux iptables 命令,强大的防火墙管理工具

iptables 是一个强大的防火墙管理工具,广泛用于 Linux 系统中的网络流量控制和过滤。它基于 netfilter 内核模块,可以实现包过滤、地址转换、端口映射等功能。

iptables 的基本概念

表 (Table)

iptables 中的表定义了规则的处理方式。主要的表包括:

  • filter:默认表,用于包过滤。
  • nat:用于网络地址转换。
  • mangle:用于修改包的数据包头。
  • raw:用于配置数据包的期望值。

链 (Chain)

链是规则集合的地方,不同的表有不同的链。例如:

  • filter 表

    • INPUT:进入本机的数据包。
    • FORWARD:经过本机的数据包。
    • OUTPUT:从本机发出的数据包。
  • nat 表

    • PREROUTING:在路由之前进行处理。
    • POSTROUTING:在路由之后进行处理。
    • OUTPUT:从本机发出的数据包。
  • mangle 表

    • PREROUTING:在路由之前进行处理。
    • INPUT:进入本机的数据包。
    • FORWARD:经过本机的数据包。
    • OUTPUT:从本机发出的数据包。
    • POSTROUTING:在路由之后进行处理。

规则 (Rule)

规则定义了特定条件下如何处理数据包。每个规则都包含匹配条件和目标动作。例如:

这条规则表示允许所有目的端口为 22(SSH)的 TCP 数据包进入本机。

iptables 基本操作命令

查看规则

  • -L:列出规则。
  • -t:指定表名。
  • -n:以数字形式显示 IP 地址和端口号,而不是反向 DNS 查找。

清空规则

  • -F:清空规则。
  • -t:指定表名。

删除规则

  • -D:删除规则。
  • chain:链名。
  • rule-number:规则编号。
  • -t:指定表名。

添加规则

  • -A:追加规则。
  • chain:链名。
  • -j:目标动作。
  • -t:指定表名。

插入规则

  • -I:插入规则。
  • chain:链名。
  • rule-number:规则编号。
  • -j:目标动作。
  • -t:指定表名。

设置默认策略

  • -P:设置默认策略。
  • chain:链名。
  • policy:策略类型,如 ACCEPTDROP
  • -t:指定表名。

iptables 常见使用场景

允许 SSH 访问

拒绝所有非 SSH 访问

允许 HTTP 和 HTTPS 访问

限制某个 IP 地址访问

允许内部网络访问互联网

iptables 高级特性

使用模块扩展功能

iptables 支持多种模块扩展功能,常见的有:

  • state:状态模块,用于跟踪连接状态。
  • limit:限速模块,用于限制日志记录频率。
  • recent:最近访问模块,用于临时限制访问。

使用 state 模块

使用 limit 模块

使用多端口

使用 ipset

ipset 可以将多个 IP 地址或端口组合成一个集合,方便管理和应用规则。

使用 conntrack

conntrack 可以追踪网络连接的状态,适用于复杂的 NAT 和负载均衡环境。

iptables 保存与恢复

保存规则

恢复规则

自动加载规则

可以通过编辑 /etc/network/interfaces 文件来自动加载规则:

或者使用 netfilter-persistent 工具来自动加载:

以上便是 iptables 命令的基本使用方法和一些常见场景。通过合理配置 iptables 规则,可以有效保护服务器的安全性和稳定性。

上一篇: smbpasswd 命令
下一篇: mount 命令
纠错
反馈