简介
iptables是Linux系统中最重要的网络安全工具之一,它通过配置防火墙规则来控制网络流量,保护系统安全。本指南将帮助您深入理解iptables的工作原理和使用方法。
主要功能:
- 数据包过滤
- 网络地址转换(NAT)
- 数据包修改
- 连接跟踪
- 日志记录
基本概念
表(Tables)
表名 | 用途 |
---|---|
filter | 默认表,负责数据包过滤 |
nat | 网络地址转换 |
mangle | 数据包修改 |
raw | 连接跟踪配置 |
链(Chains)
预定义链:
- INPUT:处理入站数据包
- OUTPUT:处理出站数据包
- FORWARD:处理转发数据包
- PREROUTING:路由前处理
- POSTROUTING:路由后处理
规则(Rules)
规则组成:
- 匹配条件(Match)
- 处理动作(Target)
- 规则选项(Options)
规则管理
基本操作
查看规则:
iptables -L -n -v
添加规则:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
删除规则:
iptables -D INPUT 1
清空规则:
iptables -F
常用参数
参数 | 说明 | 示例 |
---|---|---|
-A | 添加规则到末尾 | iptables -A INPUT |
-I | 插入规则到开头 | iptables -I INPUT |
-D | 删除规则 | iptables -D INPUT 1 |
-p | 协议类型 | iptables -A INPUT -p tcp |
--dport | 目标端口 | iptables -A INPUT -p tcp --dport 80 |
NAT配置
SNAT配置
# 源地址转换
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 1.2.3.4
# 动态源地址转换
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
DNAT配置
# 端口转发
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
# 地址转换
iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to-destination 192.168.1.100
常见场景
基本防护配置
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 允许SSH访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许Web访问
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
# 默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
防止常见攻击
# 防止SYN洪水
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
# 防止端口扫描
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
# 防止ICMP flood
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT
最佳实践
规则设计原则
- 从严原则:默认拒绝,按需放行
- 最小权限:只开放必要的端口和服务
- 规则顺序:高频规则放前面
- 注意备份:保存规则配置
规则持久化
保存规则:
iptables-save > /etc/iptables/rules.v4
恢复规则:
iptables-restore < /etc/iptables/rules.v4
安全提示:
- 谨慎使用ACCEPT ALL规则
- 定期审查防火墙规则
- 记录重要的防火墙日志
- 测试环境验证规则