UFW 防火墙新手教程

Ubuntu 中安装和使用 UFW 防火墙教程

1. 什么是 UFW?

UFW(Uncomplicated Firewall,简单防火墙)是 Ubuntu 系统中一个用于管理 iptables 防火墙规则的前端工具,它设计得简单易用,适合防火墙新手使用。UFW 提供了一个简单的界面来配置常见的防火墙设置,而无需直接处理复杂的 iptables 命令。

2. 安装 UFW

UFW 通常在 Ubuntu 中预装,如果您的系统中没有,可以通过以下命令安装:

sudo apt update
sudo apt install ufw

3. 基本配置

3.1 检查 UFW 状态

安装完成后,您可以检查 UFW 的状态:

sudo ufw status

如果返回 Status: inactive,表示防火墙当前处于关闭状态。

3.2 设置默认策略

在启用防火墙前,建议先设置默认策略:

# 默认拒绝所有入站连接
sudo ufw default deny incoming

# 默认允许所有出站连接
sudo ufw default allow outgoing

4. 添加规则

4.1 允许特定服务

您可以按服务名称允许连接:

# 允许 SSH 连接
sudo ufw allow ssh

# 允许 HTTP 和 HTTPS 连接
sudo ufw allow http
sudo ufw allow https

4.2 允许特定端口

您也可以按端口号允许连接:

# 允许 SSH(端口 22)
sudo ufw allow 22

# 允许 HTTP(端口 80)
sudo ufw allow 80

# 允许 HTTPS(端口 443)
sudo ufw allow 443

4.3 指定协议

您可以指定允许的协议(TCP 或 UDP):

# 允许 TCP 端口 8080
sudo ufw allow 8080/tcp

# 允许 UDP 端口 53(DNS)
sudo ufw allow 53/udp

4.4 指定 IP 地址或子网

您可以限制只允许特定 IP 地址或子网访问:

# 允许特定 IP 地址访问 SSH
sudo ufw allow from 192.168.1.100 to any port 22

# 允许特定子网访问网络服务
sudo ufw allow from 192.168.1.0/24 to any port 80

5. 删除规则

5.1 按编号删除规则

先查看带编号的规则列表:

sudo ufw status numbered

然后删除指定编号的规则:

sudo ufw delete [编号]

5.2 按规则内容删除

# 删除之前添加的允许 SSH 的规则
sudo ufw delete allow ssh

# 删除允许特定端口的规则
sudo ufw delete allow 80

6. 启用和禁用 UFW

6.1 启用 UFW

在配置好规则后,您可以启用防火墙:

sudo ufw enable

系统会提示您确认,因为启用防火墙可能会中断现有 SSH 连接。如果您已经添加了允许 SSH 的规则,可以放心确认。

6.2 禁用 UFW

如果需要临时关闭防火墙:

sudo ufw disable

7. 其他常用命令

7.1 查看详细状态

sudo ufw status verbose

7.2 重置 UFW

如果需要清除所有规则,恢复到默认设置:

sudo ufw reset

7.3 启用日志记录

sudo ufw logging on

可以设置日志级别:sudo ufw logging low|medium|high|full

8. 常见使用场景

8.1 配置网络服务器

对于 Web 服务器,通常需要以下配置:

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

8.2 保护数据库服务器

如果运行数据库服务,只允许特定 IP 访问:

sudo ufw allow ssh
sudo ufw allow from 192.168.1.100 to any port 3306
sudo ufw enable

8.3 端口转发

例如,将外部的 8080 端口转发到内部的 80 端口:

  1. 首先编辑 /etc/ufw/sysctl.conf 文件,启用 IP 转发:
sudo nano /etc/ufw/sysctl.conf

取消注释以下行:

net/ipv4/ip_forward=1
  1. 添加 NAT 规则到 /etc/ufw/before.rules
sudo nano /etc/ufw/before.rules

*filter 前添加:

*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
COMMIT
  1. 重启 UFW 使配置生效:
sudo ufw disable
sudo ufw enable

9. 故障排除

9.1 规则不生效

如果新添加的规则似乎不起作用:

sudo ufw reload

9.2 被 UFW 锁定在系统外

如果您无法 SSH 连接到服务器,可能是因为 UFW 规则阻止了连接。在这种情况下,您需要通过控制台访问服务器,然后:

sudo ufw disable

然后重新配置规则,确保允许 SSH 连接后再重新启用。

10. 小结

UFW 是一个功能强大且易于使用的防火墙配置工具。只需几个简单的命令,就可以保护您的 Ubuntu 系统免受未授权访问。记住,设置防火墙规则时保守一点总是好的 - 只开放必要的端口和服务。

希望本教程能帮助您轻松管理 Ubuntu 系统上的防火墙!