典型应用场景案例
场景一:Web服务器防护
需求:
1. 开放80(HTTP)、443(HTTPS)端口
2. 仅允许办公室IP段(192.168.1.0/24)和管理员IP(202.96.1.100)SSH访问
3. 防止SYN Flood攻击
4. 记录异常访问尝试
配置:
# 使用iptables
iptables -N SYN_FLOOD # 创建自定义链
iptables -A INPUT -p tcp --syn -j SYN_FLOOD
iptables -A SYN_FLOOD -m limit --limit 10/s --limit-burst 20 -j RETURN
iptables -A SYN_FLOOD -j LOG --log-prefix "SYN Flood: "
iptables -A SYN_FLOOD -j DROP
# 基础规则
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 202.96.1.100 -j ACCEPT
# 记录非法SSH尝试
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attempt: "
场景二:NAT网关配置
需求:
1. 内网192.168.1.0/24通过NAT上网
2. 映射公网IP端口2222到内网192.168.1.10的22端口
3. 限制内网每IP最大连接数100
配置:
# 启用转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# NAT规则
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to 192.168.1.10:22
# 连接数限制
iptables -A FORWARD -s 192.168.1.0/24 -m connlimit --connlimit-above 100 -j DROP
故障排查案例
故障现象:内网用户无法访问互联网,但能ping通网关。
排查步骤:
# 1. 检查转发是否开启
sysctl net.ipv4.ip_forward # 应为1
# 2. 检查NAT规则
iptables -t nat -L -n -v
# 3. 检查FORWARD链策略
iptables -L FORWARD -n
# 4. 查看连接跟踪
conntrack -L
# 5. 抓包分析
tcpdump -i eth0 port 53 # 检查DNS
tcpdump -i eth0 -n tcp port 80
常见原因:
1. 转发未开启:sysctl -w net.ipv4.ip_forward=1
2. FORWARD链默认拒绝:iptables -P FORWARD ACCEPT
3. 缺少状态规则:添加iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
更多备考学习可加讲师微信交流~