Debian 12 防火墙管理

UFW 使用

UFW 是 Debian 上的简单防火墙管理工具,默认封装了 iptables,适合大多数普通用户。

1. 安装 UFW 服务

1
sudo apt install ufw -y

2. 允许 SSH 访问

  • 如果是通过 SSH 远程管理服务器,则必须先允许 SSH 端口(默认是 22),否则会导致 SSH 连接断开:
1
sudo ufw allow 22/tcp

3. 启用 UFW 服务

1
2
# 启动服务(默认会开机自动启动服务)
sudo ufw enable

4. 使用 UFW 服务

开放特定服务 / 端口

  • 允许 HTTP 访问(80)
1
sudo ufw allow 80/tcp
  • 允许 HTTPS 访问(443)
1
sudo ufw allow 443/tcp
  • 允许 MySQL 访问(3306)
1
sudo ufw allow 3306/tcp
  • 允许指定 IP 访问某个端口(比如只允许 192.168.1.100 可以访问 22 端口)
1
sudo ufw allow from 192.168.1.100 to any port 22

拒绝所有未允许的连接

1
2
sudo ufw default deny incoming
sudo ufw default allow outgoing

5. 管理 UFW 服务

关闭防火墙

1
2
# 关闭服务(默认会关闭开机自动启动服务)
sudo ufw disable

查看防火墙状态

1
sudo ufw status verbose

仅列出已开放的端口

1
sudo ufw status | grep "ALLOW"

重新加载防火墙规则

UFW 规则默认是持久化的,但在某些情况下,可能需要手动重新加载规则。重新加载 UFW 规则,适用于以下情况:

  • 手动修改了 /etc/ufw/user.rules 文件(直接编辑文件后需要 reload 才能生效)。
  • 某些服务未正确应用 UFW 规则(很少见,可能是规则未生效)。
  • 重启 UFW 以确保规则即时生效(一般不需要)。
1
sudo ufw reload

查看防火墙状态和已开放的端口

1
sudo ufw status numbered

Iptables 使用

Debian 12 默认安装了 iptables 服务,可以通过 iptables --help 获取命令帮助手册,iptables 适用于对防火墙有更精细控制要求的高级用户。

查看现有防火墙规则

1
sudo iptables -L -v --line-numbers

开放特定服务 / 端口

  • 允许 SSH 访问(22)
1
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 允许 HTTP 访问(80)
1
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  • 允许 HTTPS 访问(443)
1
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

拒绝所有未允许的连接

1
2
3
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

持久化 iptables 规则

在 Debian 12 上,iptables 规则默认在系统重启后会丢失,iptables-persistent 工具允许将 iptables 规则保存到 /etc/iptables/rules.v4(IPv4)和 /etc/iptables/rules.v6(IPv6)文件中,并在系统启动时自动恢复。

  • 安装保存和恢复 iptables 规则的工具
1
sudo apt install iptables-persistent -y
  • 保存当前的 iptables 规则,使其在重启后仍然生效
1
sudo netfilter-persistent save
  • 重新加载保存的 iptables 规则,使其立即生效
1
sudo netfilter-persistent reload