iptables 极简实战手册


一、3条命令入门

# 1. 查看当前规则
iptables -L -n -v

# 2. 开放SSH(防失联)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 3. 禁止所有其他入站
iptables -P INPUT DROP

完事! 防火墙开始工作 ✅


二、生产环境必配5条

# 1. 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 2. 允许本地回环
iptables -A INPUT -i lo -j ACCEPT

# 3. 开放SSH(改端口后要同步改)
iptables -A INPUT -p tcp --dport 52222 -j ACCEPT

# 4. 开放Web服务
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 5. 默认禁止所有(放在最后)
iptables -P INPUT DROP
iptables -P FORWARD DROP

三、常用命令速查表

操作命令
开放端口iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
封禁IPiptables -A INPUT -s 1.2.3.4 -j DROP
封禁网段iptables -A INPUT -s 192.168.1.0/24 -j DROP
删除规则iptables -D INPUT 行号
插入规则iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
保存规则iptables-save > /etc/iptables/rules.v4
恢复规则iptables-restore < /etc/iptables/rules.v4
清空规则iptables -F
查看行号iptables -L -n --line-numbers

四、企业级快速部署脚本

#!/bin/bash
# iptables_init.sh - 一键配置生产防火墙

# 1. 清空现有规则
iptables -F
iptables -X
iptables -Z

# 2. 默认策略(全拦)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 3. 允许本机
iptables -A INPUT -i lo -j ACCEPT

# 4. 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 5. 开放服务端口(按需修改)
iptables -A INPUT -p tcp --dport 52222 -j ACCEPT  # SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT     # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT    # HTTPS
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT -s 10.0.0.0/8   # MySQL(内网)
iptables -A INPUT -p tcp --dport 6379 -j ACCEPT -s 10.0.0.0/8   # Redis(内网)

# 6. 防扫描(限频率)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

# 7. 保存规则
iptables-save > /etc/iptables/rules.v4

echo "✅ iptables 配置完成"

五、防攻击三板斧

5.1 防SSH暴力破解

# 60秒内尝试超过3次,封24小时
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
iptables -A INPUT -p tcp --dport 22 -m recent --rcheck --seconds 86400 -j DROP

5.2 防DDoS(SYN Flood)

# 限制每秒新连接数
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

5.3 禁Ping

# 不让ping,但允许自己ping别人
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

六、永久保存(防重启丢失)

CentOS/RHEL

# 安装持久化工具
yum install -y iptables-services

# 保存规则
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables

# 开机自启
systemctl enable iptables

Ubuntu/Debian

# 安装
apt install -y iptables-persistent

# 保存
netfilter-persistent save
# 或
iptables-save > /etc/iptables/rules.v4

# 开机加载
systemctl enable netfilter-persistent

七、常用场景速查

场景命令
开放单个IP访问数据库iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.100 -j ACCEPT
封禁恶意IPiptables -A INPUT -s 45.155.205.0/24 -j DROP
限速下载iptables -A FORWARD -m limit --limit 100k/s -j ACCEPT
端口转发iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
查看NAT规则iptables -t nat -L -n -v
删除指定规则iptables -D INPUT 3(删第3条)

八、救命指令(误封自救)

# 清空所有规则(立刻解除封锁)
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 远程执行(提前准备)
echo "iptables -F" | ssh root@服务器

九、一句话总结

开22防失联 → 开80/443跑业务 → 开内网连DB → 默认全DROP
配完要保存,重启不丢失,误封有清空,日常看日志

# 终极三连
iptables -L -n -v        # 看规则
iptables-save > rules    # 存规则
iptables-restore < rules # 载规则

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注