iptables 与 ufw 对比 + 常用封禁 IP、网段放行端口策略
一、iptables 和 ufw 核心对比
表格
| 维度 | iptables | ufw |
|---|---|---|
| 定位 | Linux 底层原生防火墙,内核级 netfilter 框架 | iptables 前端简化工具,Ubuntu/Debian 默认 |
| 复杂度 | 语法复杂、规则链多(INPUT/OUTPUT/FORWARD)、表多(filter/nat/mangle) | 语法极简、上手快,屏蔽底层复杂链和表 |
| 适用场景 | 服务器精细管控、路由转发、端口映射、复杂 ACL 规则 | 单机快速防护、个人 / 小型服务器极简配置 |
| 规则持久化 | 需手动保存(iptables-save/iptables-restore)或配置文件 | 自带 enable/disable,规则自动持久化 |
| 系统支持 | 所有 Linux 发行版通用 | 主打 Debian/Ubuntu,CentOS 也可安装 |
| 转发 / NAT | 完美支持端口转发、内网穿透、SNAT/DNAT | 仅基础放行封禁,不适合复杂 NAT 转发 |
总结:
- 追求简单快速、单机防护 → 用
ufw - 需要精细过滤、路由转发、端口映射、复杂网段策略 → 用
iptables
二、通用前置说明
默认业务端口示例:
-
SSH:22
-
HTTP:80
-
HTTPS:443
示例网段:
-
信任网段:
192.168.1.0/24 -
封禁单个 IP:
1.2.3.4
三、ufw 常用实战策略(简单推荐)
1. 基础开关
运行
# 重置所有规则
ufw reset
# 默认拒绝所有入站,允许出站
ufw default deny incoming
ufw default allow outgoing
# 开启防火墙
ufw enable
# 关闭防火墙
ufw disable
# 查看规则
ufw status verbose
2. 封禁单个 IP 所有访问
运行
ufw deny from 1.2.3.4
3. 封禁整个网段
运行
ufw deny from 10.0.0.0/24
4. 仅允许指定网段访问 SSH (22)
运行
# 只允许 192.168.1.0/24 连22端口
ufw allow from 192.168.1.0/24 to any port 22
5. 允许指定网段访问 80/443
运行
ufw allow from 192.168.1.0/24 to any port 80,443 proto tcp
6. 允许单个 IP 访问所有端口
运行
ufw allow from 5.6.7.8
7. 删除某条规则
先 ufw status numbered 看序号,再:
运行
ufw delete 规则序号
四、iptables 常用实战策略(通用全 Linux)
1. 清空旧规则、设置默认策略
运行
# 清空所有规则
iptables -F
iptables -X
# 默认入站拒绝、出站允许、转发拒绝
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
2. 放行本地回环(必加,否则本机异常)
运行
iptables -A INPUT -i lo -j ACCEPT
3. 封禁单个 IP 所有入站
运行
iptables -A INPUT -s 1.2.3.4 -j DROP
4. 封禁整个网段
运行
iptables -A INPUT -s 10.0.0.0/24 -j DROP
5. 仅允许指定网段访问 SSH 22 端口
运行
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
6. 允许指定网段访问 80/443
运行
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 443 -j ACCEPT
7. 允许某个公网 IP 全部访问
运行
iptables -A INPUT -s 5.6.7.8 -j ACCEPT
8. 允许已建立的连接通行(必备,避免断连)
运行
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
9. 查看 iptables 规则
运行
iptables -L -n --line-numbers
10. 删除指定序号规则
运行
iptables -D INPUT 规则序号
11. iptables 规则持久化
运行
# CentOS
service iptables save
# Debian/Ubuntu
iptables-save > /etc/iptables/rules.v4
五、选型建议
- 新手、Ubuntu 单机、只做简单封禁 / 放行 → 直接用 ufw
- 生产服务器、需要端口转发、多网段复杂权限、CentOS → 用 iptables
- 原则:先默认拒绝所有入站,再逐条按需放行最小权限端口和网段。