如何在Linux中配置防火墙 Linux iptables规则链管理

iptables是linux内核级防火墙工具,通过表和链管理网络流量;Filter表控制数据包过滤,nat表处理地址转换,mangle表修改数据包;常用链包括input、OUTPUT和FORWARD;可通过-A添加规则,-F清除规则,-L查看规则;需使用iptables-save保存规则以持久化;支持创建自定义链如ssh_FILTER分类管理;规则按顺序匹配,需注意默认策略防止误锁。

如何在Linux中配置防火墙 Linux iptables规则链管理

Linux 中的 iptables 是一个强大的防火墙工具,用于配置内核级的数据包过滤规则。它通过规则链(chains)来管理网络流量,控制进出系统的数据包。掌握 iptables 的基本结构和常用命令,是系统管理员保障服务器安全的基础。

理解 iptables 的规则链和表结构

iptables 的核心是“表(tables)”和“链(chains)”。不同的表用于处理不同类型的规则,每个表中包含若干预定义或自定义的链。

常用表包括:

  • filter 表:最常用的表,用于决定数据包是否被允许通过。包含 INPUT、OUTPUT 和 FORWARD 链。
  • nat 表:用于网络地址转换,如端口转发。包含 PREROUTING、POSTROUTING 和 OUTPUT 链。
  • mangle 表:用于修改数据包的特定字段,较少直接使用。

常见内置链说明:

  • INPUT:处理进入本机的数据包。
  • OUTPUT:处理从本机发出的数据包。
  • FORWARD:处理经过本机转发的数据包(适用于路由器或网关)。

添加和管理基本防火墙规则

使用 iptables 命令可以添加、删除和查看规则。规则按顺序匹配,一旦匹配就执行对应动作。

常用操作示例:

  • 允许本机访问外部 httphttps 服务:
    iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
    iptables -A OUTPUT -p tcp –dport 443 -j ACCEPT
  • 允许外部访问本机的 SSH 服务(端口 22):
    iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT
  • 拒绝所有其他未明确允许的入站连接:
    iptables -P INPUT DROP
  • 清除所有规则(慎用):
    iptables -F
  • 查看当前规则列表:
    iptables -L -n -v

保存和持久化规则

iptables 规则默认在重启后丢失,必须手动保存。

在不同发行版中保存方式略有不同:

  • debian/ubuntu 系统:
    安装 iptables-persistent 包并保存规则:
    sudo iptables-save > /etc/iptables/rules.v4
  • centos/RHEL 系统:
    使用命令保存:
    service iptables save
    或:
    iptables-save > /etc/sysconfig/iptables

使用自定义链提高管理效率

当规则较多时,可以创建自定义链来分类管理,例如专门处理 SSH 或 Web 流量。

示例:创建一个名为 SSH_FILTER 的链

  • 创建链:
    iptables -N SSH_FILTER
  • 添加规则到自定义链:
    iptables -A SSH_FILTER -s 192.168.1.100 -j ACCEPT
    iptables -A SSH_FILTER -j DROP
  • 将 INPUT 链跳转到自定义链:
    iptables -A INPUT -p tcp –dport 22 -j SSH_FILTER

这种方式便于后期维护和批量调整策略。

基本上就这些。iptables 虽然语法略显复杂,但只要理解链和表的关系,结合实际需求逐步配置,就能构建起基本的安全防护体系。注意规则顺序和默认策略设置,避免误锁自己。不复杂但容易忽略。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享