在Ubuntu或Debian系统中删除UFW规则须先用sudo ufw status numbered查编号,再用sudo ufw delete [编号]精准删除;也可用sudo ufw delete allow/disallow [端口/服务]但可能误删多条;最后用sudo ufw status numbered和sudo iptables -L验证。

在Ubuntu或Debian系Linux系统中删除某条已配置的UFW防火墙规则,必须先确认其唯一标识再执行移除,否则可能删错、删不掉或引发策略混乱。
查出要删的规则编号
打开终端,运行:
sudo ufw status numbered
这条命令会列出所有启用中的规则,并在每条前面标上数字编号(如 [1]、[2])。注意:编号不连续是正常现象,删除后不会自动重排;若看到多条相似规则(比如都写着 allow 80/tcp),得结合来源IP、协议类型或添加时间判断哪一条是目标。
记下你要删的那条规则左侧的方括号内数字,例如 [3]。
用编号精准删除规则
执行:
sudo ufw delete 3
把 3 换成你刚才记下的编号。这一步直接按索引操作,不依赖端口、协议或服务名,【最安全、最可靠】。它只删这一条,不影响其他规则顺序和逻辑。
如果输错编号,系统会提示“ERROR: Invalid rule number”,不会误删。
按规则内容删除(不推荐新手用)
方法一:用“allow/disallow + 端口/服务名”匹配删除
例如删掉允许80端口的规则:
sudo ufw delete allow 80/tcp
方法二:删服务名规则
例如删掉SSH规则:
sudo ufw delete allow ssh
注意:当存在多条相同端口或服务的规则时(比如分别对IPv4和IPv6各加了一条),该命令会一次性删掉所有匹配项,无法选择性删除其中一条。
验证是否删除成功
第一步:再次运行
sudo ufw status numbered
确认刚才那个编号已不在列表中,且剩余规则仍符合预期逻辑。
第二步:检查底层链是否同步
sudo iptables -L ufw-user-input -n | grep :80
如果刚删的是80端口规则,这里不应再出现对应行。若仍有残留,说明UFW未真正卸载该规则——大概率是因为没执行 delete 而误用了 reload,此时需重新走编号删除流程。

















