Iptable: 防火墙
2025-02-17
什么是防火墙
防火墙是一种网络安全设备,用于控制和监控网络流量。主要分为:
- 硬件防火墙: 专用硬件设备
- 软件防火墙: 如 Linux 的 iptables
防火墙分类
网络层防火墙 (L3/L4)
- 工作在 OSI 第 3/4 层
- 主要检查源/目标地址和端口
- 处理速度快,适合大流量环境
应用层防火墙 (L7)
- 工作在 OSI 第 7 层
- 可以理解应用层协议
- 提供更细粒度的控制
- 处理速度相对较慢
iptables的工作原理
iptables 是 Linux 系统中的包过滤防火墙,具有以下特点:
- 基于 netfilter 框架
- 支持状态检测
- 可扩展的规则系统
- 支持 NAT 和数据包修改
netfilter 钩子点
netfilter 在内核中提供了 5 个钩子点:
- PREROUTING: 数据包进入路由表之前
- INPUT: 数据包流入本地进程
- FORWARD: 数据包需要转发时
- OUTPUT: 本地进程发出的数据包
- POSTROUTING: 数据包离开路由表之后
表和链
iptables 使用"表"来组织规则,每个表包含多个"链":
表的类型
- filter 表: 默认表,负责过滤
- nat 表: 网络地址转换
- mangle 表: 数据包修改
- raw 表: 连接跟踪豁免
规则匹配顺序
- 表的处理顺序:raw -> mangle -> nat -> filter
- 链内规则从上到下依次匹配
- 找到匹配规则后执行动作,除非指定继续
防火墙策略
iptables 支持两种基本策略:
- DROP: 默认拒绝(白名单模式)
- ACCEPT: 默认允许(黑名单模式)
常用命令示例
基本防护配置
# 清空现有规则
iptables -F
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许已建立的连接
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 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT防止 DDoS 攻击
# 限制单 IP 并发连接数
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
# 限制连接速率
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT保存和恢复规则
# 保存规则
iptables-save > /etc/iptables/rules.v4
# 恢复规则
iptables-restore < /etc/iptables/rules.v4最佳实践:
- 始终备份当前规则
- 先测试后应用
- 保留远程管理访问
- 定期审计规则