# IPTables防火墙怎么用 ## 目录 1. [IPTables简介](#iptables简介) 2. [基本概念与术语](#基本概念与术语) 3. [安装与启动](#安装与启动) 4. [基础规则配置](#基础规则配置) 5. [高级应用场景](#高级应用场景) 6. [规则持久化](#规则持久化) 7. [常见问题排查](#常见问题排查) 8. [安全最佳实践](#安全最佳实践) --- ## IPTables简介 Linux内核内置的包过滤框架,作为Netfilter项目的用户空间工具,提供: - 网络地址转换(NAT) - 数据包过滤 - 状态跟踪 - 流量控制等核心功能 **典型应用场景**: - 服务器安全防护 - 网络边界控制 - 端口转发服务 - DDoS基础防护 --- ## 基本概念与术语 ### 规则链(Chains) | 内置链 | 作用时机 | |--------|----------| | INPUT | 目标为本机的数据包 | | OUTPUT | 本机发出的数据包 | | FORWARD | 经过本机转发的数据包 | | PREROUTING | 路由决策前 | | POSTROUTING | 路由决策后 | ### 表(Tables) ```bash filter表(默认):包含INPUT/OUTPUT/FORWARD链 nat表:用于地址转换(PREROUTING/POSTROUTING) mangle表:特殊包修改(TTL/TOS等) raw表:连接跟踪豁免 ACCEPT:允许通过 DROP:静默丢弃 REJECT:拒绝并返回错误 LOG:记录日志 SNAT/DNAT:地址转换 # Debian/Ubuntu sudo apt install iptables # RHEL/CentOS sudo yum install iptables-services # 现代系统可能需安装兼容层 sudo apt install iptables-legacy # 传统SysVinit系统 sudo service iptables start sudo service iptables save # systemd系统 sudo systemctl enable iptables sudo systemctl start iptables lsmod | grep ip_tables modprobe ip_tables iptables -L -n -v # 详细模式查看 iptables -t nat -L # 查看NAT表 iptables -F iptables -t nat -F iptables -X # 删除自定义链 iptables -P INPUT DROP # 默认拒绝所有入站 iptables -P OUTPUT ACCEPT # 允许所有出站 iptables -P FORWARD DROP # 禁止转发 # 允许本地回环 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # 允许已建立的连接 iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 开放SSH端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许PING iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 限速HTTP连接(每秒3个新连接) iptables -A INPUT -p tcp --dport 80 -m limit --limit 3/second -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80 iptables -t nat -A POSTROUTING -j MASQUERADE iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.5 iptables -N SYN_FLOOD iptables -A SYN_FLOOD -m limit --limit 10/s --limit-burst 20 -j RETURN iptables -A SYN_FLOOD -j DROP iptables -A INPUT -p tcp --syn -j SYN_FLOOD iptables -A INPUT -p tcp --dport 22 -m time --timestart 09:00 --timestop 17:00 -j ACCEPT iptables-save > /etc/iptables.rules iptables-restore < /etc/iptables.rules # 安装持久化工具 sudo apt install iptables-persistent # 保存规则 sudo netfilter-persistent save echo "iptables-restore < /etc/iptables.rules" >> /etc/rc.local chmod +x /etc/rc.local iptables -L -n --line-numbersiptables -L -v iptables -A INPUT -j LOG --log-prefix "[IPTABLES-DENY] " tail -f /var/log/syslog # 错误:忘记允许ESTABLISHED状态 # 现象:能ping出但收不到回复 # 解决:添加状态规则 # 错误:NAT规则未启用IP转发 # 解决: echo 1 > /proc/sys/net/ipv4/ip_forward 最小权限原则:只开放必要端口
日志监控:记录所有DROP/REJECT操作
防御措施:
定期审计:
# 对比当前规则与保存规则 diff <(iptables-save) <(cat /etc/iptables.rules) 组合使用:与fail2ban联动实现动态封禁
提示:生产环境建议先通过
iptables -P INPUT ACCEPT设置临时宽松策略,测试完成后再改为严格模式。
”`
注:实际使用时可根据需要调整各章节深度,本文档已包含基础到进阶的核心知识点,完整展开每个示例可达3500字左右。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。