CentOS 系统下 Iptables 的配置与管理

Iptables 简介
Iptables 是 Linux 系统中用于网络包过滤的强大工具,它允许系统管理员根据特定的规则对进入或离开系统的数据包进行过滤、转发或修改,在 CentOS 系统中,Iptables 是网络安全的重要组成部分,能够有效地保护系统免受各种网络攻击。
Iptables 基本概念
规则链(Chain):Iptables 的规则链是按照顺序排列的规则集合,数据包在经过 Iptables 时会按照链中的规则顺序进行处理。
规则(Rule):规则是 Iptables 的核心,它定义了如何处理数据包,每个规则包含目标动作(如接受、拒绝、丢弃等)和匹配条件(如源地址、目标地址、端口号等)。
链(Table):Iptables 支持多个链,包括过滤(Filter)、NAT(Network Address Translation)、Mangle 和 Raw,每个链包含多个规则链。
Iptables 命令基本用法
查看当前 Iptables 规则
iptables -L
添加规则
iptables -A INPUT -s 192.168.1.100 -j DROP
这条命令表示将一个规则添加到 INPUT 链,该规则匹配源地址为 192.168.1.100 的数据包,并将其丢弃。
删除规则

iptables -D INPUT -s 192.168.1.100 -j DROP
这条命令表示删除 INPUT 链中匹配源地址为 192.168.1.100 的规则。
清空规则
iptables -F
这条命令表示清空所有链中的规则。
Iptables 实战案例
防火墙配置
以下是一个简单的防火墙配置示例,用于允许 SSH 和 HTTP 服务,并拒绝其他所有连接。
# 允许 SSH 服务 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许 HTTP 服务 iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 拒绝其他所有连接 iptables -A INPUT -j DROP
NAT 配置
以下是一个简单的 NAT 配置示例,用于将内网地址转换为外网地址。
# 设置 NAT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 允许内网地址访问外网 iptables -A FORWARD -i eth0 -j ACCEPT iptables -A FORWARD -o eth0 -j ACCEPT
Iptables 高级配置
多链配置
在复杂的网络环境中,可能需要为不同的网络接口或服务配置多个链,以下是一个示例:

# 为 eth0 接口配置规则链 iptables -N eth0_input iptables -A eth0_input -p tcp --dport 22 -j ACCEPT iptables -A eth0_input -p tcp --dport 80 -j ACCEPT iptables -A eth0_input -j DROP # 将 eth0_input 链关联到 INPUT 链 iptables -A INPUT -i eth0 -j eth0_input
动态规则
Iptables 支持动态规则,允许在运行时添加或删除规则,以下是一个示例:
# 动态添加规则 iptables -A INPUT -s 192.168.1.100 -j DROP # 动态删除规则 iptables -D INPUT -s 192.168.1.100 -j DROP
FAQs
Q1:如何查看 Iptables 的版本信息?
A1:可以使用以下命令查看 Iptables 的版本信息:
iptables -V
Q2:如何备份和恢复 Iptables 规则?
A2:备份 Iptables 规则可以使用以下命令:
iptables-save > /path/to/iptables_backup
恢复 Iptables 规则可以使用以下命令:
iptables-restore < /path/to/iptables_backup

