HCRM博客

CentOS 6iptables防火墙配置指南

CentOS 6 作为一款经典稳定的服务器操作系统,其内置的防火墙工具 iptables 至今仍被许多管理员用于管理网络流量与安全策略,尽管更新的防火墙解决方案如 firewalld 已逐渐普及,但理解 iptables 的工作原理与配置方法,对于维护现有老系统或深入学习 Linux 网络安全依然具有重要价值。

CentOS 6iptables防火墙配置指南-图1

iptables 的核心构成

iptables 本质上是一个配置 Linux 内核防火墙规则的用户空间工具,其规则体系建立在“表”、“链”和“规则”三个层次之上。

  • 表(Tables):用于分类规则功能,主要包括:

    • filter 表:默认表,负责数据包的过滤,决定是否放行。
    • nat 表:用于网络地址转换,如端口转发、地址伪装。
    • mangle 表:用于修改数据包内容(如 TOS、TTL)。
    • raw 表:用于决定数据包是否被连接跟踪机制处理。
  • 链(Chains):规则的具体生效位置,是数据包传输路径上的检查点。

    • INPUT:处理进入本机的数据包。
    • OUTPUT:处理从本机发出的数据包。
    • FORWARD:处理经过本机路由转发的数据包。
    • PREROUTINGPOSTROUTING:主要用于 nat 表,在路由前或路由后修改数据包。
  • 规则(Rules):管理员定义的具体条件与动作,按顺序存储在链中。

基本命令与语法

掌握 iptables 命令的基本格式是进行配置的第一步,其通用结构为: iptables [-t 表名] 命令选项 [链名] [规则匹配条件] [-j 目标动作]

常用命令选项:

CentOS 6iptables防火墙配置指南-图2

  • -A:在链末尾追加一条规则。
  • -I:在链中指定位置插入规则。
  • -D:删除指定规则。
  • -L:列出指定链或所有链的规则。
  • -F:清空指定链或所有链的规则。
  • -P:设置链的默认策略(ACCEPT 或 DROP)。
  • -n:以数字形式显示地址和端口,与 -L 连用可加速查询。

常用目标动作:

  • ACCEPT:允许数据包通过。
  • DROP:丢弃数据包,不予响应。
  • REJECT:拒绝数据包,并向发送方返回错误信息。
  • LOG:将匹配的数据包信息记录到系统日志。
  • SNAT / DNAT:用于源地址或目的地址转换。

实用规则配置示例

以下是一些常见场景下的规则配置,您可以根据实际需求调整。

查看现有规则iptables -L -n -v 此命令能详细列出所有链的规则,显示数据包计数,有助于监控与调试。

设置默认策略 建议将链的默认策略设置为 DROP 或 REJECT,然后显式开放所需服务,遵循“默认拒绝”原则。

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT  # 通常允许所有出站流量

开放必要的入站服务 允许来自任何地址的 SSH(22端口)连接: iptables -A INPUT -p tcp --dport 22 -j ACCEPT 允许本地回环接口通信: iptables -A INPUT -i lo -j ACCEPT 允许已建立及相关连接的数据包进入,这是确保对外请求能有回应数据的关键: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

限制特定访问 仅允许来自 192.168.1.0/24 网段的设备访问本机 HTTP 服务: iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT 限制单个 IP 的并发连接数,有助于防止简单资源耗尽攻击: iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT

CentOS 6iptables防火墙配置指南-图3

配置网络地址转换 将内网 192.168.1.100 的 80 端口通过本机公网 IP 映射出去: iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80 启用 IP 伪装,使内网机器可以通过本机上网: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

配置的保存与加载

在 CentOS 6 中,使用 service iptables save 命令会将当前规则集保存至 /etc/sysconfig/iptables 文件,系统重启时,iptables 初始化脚本会自动从该文件加载规则,也可手动操作:

  • 备份当前规则:iptables-save > /path/to/backup.file
  • 恢复规则:iptables-restore < /path/to/backup.file

重要注意事项

  1. 顺序至关重要:规则在链中从上至下匹配,第一条匹配的规则即生效,应将具体的放行规则置于宽泛的拒绝规则之前。
  2. 避免自我锁定:在通过远程连接配置防火墙时,务必首先设置允许当前 SSH 连接的规则,或在操作前设置宽容的默认策略,配置完成后再收紧,建议在服务器控制台或使用 at/crontab 设置定时恢复任务来防止误操作。
  3. 结合 TCP Wrappers 与 SSH 配置:对于 SSH 等服务的访问控制,可结合 /etc/hosts.allow/etc/hosts.deny 文件以及 SSH 自身的 AllowUsers 配置,实现多层次的防御。
  4. 留意服务依赖:某些服务(如 NFS、FTP)可能需要额外的连接跟踪模块支持,配置复杂规则时需查阅相关文档。

个人观点

尽管 iptables 提供了极为精细和强大的直接控制能力,但其规则语法相对繁琐,对新手存在一定门槛,在 CentOS 6 的生命周期末期,继续维护基于 iptables 的防火墙需要投入更多的学习与排错成本,对于仍有业务运行在 CentOS 6 环境的管理者而言,熟练掌握 iptables 是一项必要的维持性技能,从技术发展角度看,若条件允许,将业务迁移至支持 firewalld 或 nftables 的新版本系统,不仅能获得更现代化的管理工具和持续的安全更新,长远来看也更利于运维的自动化和标准化,防火墙配置的核心思想始终是“最小权限原则”,无论工具如何变迁,这一安全哲学都是构筑系统防线的基石。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/59108.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~