博主时间(UTC+8)
摩羯座
发布于 2026-01-17 / 4 阅读
0
0

Ubuntu专用删除UFW方法

1. 完全卸载 UFW(推荐)

bash

# 1. 先禁用UFW
sudo ufw disable

# 2. 完全卸载UFW及其配置文件
sudo apt purge ufw -y

# 3. 自动删除不需要的依赖包
sudo apt autoremove --purge -y

# 4. 清理残留配置
sudo rm -rf /etc/ufw/
sudo rm -f /etc/default/ufw

2. 重置 iptables 规则

bash

# 清空所有防火墙规则
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X

# 设置默认策略为接受所有
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

# 保存规则(如果需要持久化)
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
sudo netfilter-persistent reload

3. 检查是否彻底删除

bash

# 检查UFW是否还在
which ufw
dpkg -l | grep ufw
systemctl list-unit-files | grep ufw

# 检查防火墙当前状态
sudo iptables -L -n -v

使用 apt 的完整清理流程

bash

# 完整的一键清理脚本
sudo bash -c '
echo "=== 开始清理UFW ==="
ufw disable 2>/dev/null
systemctl stop ufw 2>/dev/null
systemctl disable ufw 2>/dev/null
apt purge ufw -y 2>/dev/null
apt autoremove --purge -y 2>/dev/null
rm -rf /etc/ufw 2>/dev/null
echo "=== 清理完成 ==="
'

Ubuntu 系统服务处理

bash

# 禁用并屏蔽UFW服务(防止被其他包重新安装时自动启用)
sudo systemctl mask ufw

# 删除服务文件(彻底)
sudo rm -f /lib/systemd/system/ufw.service
sudo systemctl daemon-reload
sudo systemctl reset-failed

验证删除结果

bash

# 运行验证脚本
echo "=== 验证UFW是否完全删除 ==="
echo "1. 包管理器检查:"
dpkg -l | grep -i ufw || echo "✓ UFW 未安装"

echo -e "\n2. 命令检查:"
which ufw || echo "✓ ufw 命令不存在"

echo -e "\n3. 服务检查:"
systemctl list-unit-files | grep ufw || echo "✓ 无UFW服务"

echo -e "\n4. 文件检查:"
ls -la /etc/ | grep ufw || echo "✓ 无UFW配置文件"

echo -e "\n5. 当前防火墙规则:"
sudo iptables -L -n --line-numbers | head -30

如果遇到依赖问题

bash

# 如果无法直接purge,先强制删除
sudo dpkg --purge --force-remove-reinstreq ufw

# 修复可能损坏的包
sudo apt update
sudo apt --fix-broken install
sudo apt autoremove -y

Ubuntu 替代方案

方案A:使用 firewalld(CentOS风格)

bash

# 删除UFW后安装firewalld
sudo apt install firewalld -y
sudo systemctl start firewalld
sudo systemctl enable firewalld

# 开放所有端口(测试用)
sudo firewall-cmd --set-default-zone=public --permanent
sudo firewall-cmd --reload

方案B:使用纯 iptables

bash

# 安装iptables管理工具
sudo apt install iptables iptables-persistent netfilter-persistent -y

# 设置基本规则(允许所有)
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT

# 保存配置
sudo netfilter-persistent save

方案C:使用 nftables(Ubuntu 22.04+ 默认)

bash

# Ubuntu 22.04开始默认使用nftables
sudo systemctl stop ufw
sudo systemctl disable ufw

# 检查nftables
sudo nft list ruleset

# 清空nftables规则
sudo nft flush ruleset

重要提醒:Ubuntu 特定注意事项

  1. Ubuntu 22.04+:系统可能同时使用 nftablesiptables

    bash

    # 检查nftables后端
    sudo update-alternatives --config iptables
  2. 云镜像:某些云服务商的 Ubuntu 镜像可能有定制

    bash

    # 检查云初始化配置
    cat /etc/cloud/cloud.cfg | grep -i firewall
  3. 桌面版:如果使用 Ubuntu 桌面版,可能有 GUI 防火墙工具

    bash

    # 移除防火墙GUI
    sudo apt remove gufw -y

最简单的临时解决方案

如果你只是想临时关闭防火墙进行测试:

bash

# 临时禁用(最快)
sudo ufw disable

# 测试你的端口
# 测试完成后可以重新启用
sudo ufw enable

彻底删除后的安全建议

bash

# 至少保留SSH保护
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 或者安装fail2ban防止暴力破解
sudo apt install fail2ban -y
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

推荐做法

bash

# 1. 先临时禁用测试
sudo ufw disable

# 2. 完成你的测试(证书申请等)

# 3. 重新启用并设置基本规则
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3131/tcp  # 你的特定端口

告诉我你现在具体需要什么:

  1. 只是临时测试 → 用 sudo ufw disable

  2. 永久删除 → 用 sudo apt purge ufw -y

  3. 换其他防火墙 → 告诉我你倾向哪种


评论