WSの小屋

Linux 中 UFW 的使用

UFW(Uncomplicated Firewall)是 Ubuntu 系统上一款简洁易用的防火墙管理工具,它基于 iptables 但提供了更友好的命令行接口,让防火墙管理变得简单直观。

基本使用

安装与状态管理

# Ubuntu 默认已安装,未安装时执行:
sudo apt install ufw

# 查看防火墙状态
sudo ufw status
# 查看更详细信息
sudo ufw status verbose
# 查看编号规则(方便按序号删除)
sudo ufw status numbered

启用与关闭

# 开启防火墙(注意:开启后默认阻止所有入站连接)
sudo ufw enable

# 关闭防火墙
sudo ufw disable

# 重置所有规则到默认状态
sudo ufw reset

⚠️ 重要:开启 UFW 前,请确保已经添加了 SSH 端口的放行规则(如 sudo ufw allow ssh),否则会把自己拒之门外。

端口管理

开放端口

# 允许特定端口
sudo ufw allow 22            # 允许 22 端口(TCP+UDP)
sudo ufw allow 80/tcp        # 仅允许 80 端口的 TCP 协议
sudo ufw allow 21/udp        # 仅允许 21 端口的 UDP 协议

# 使用服务名称(从 /etc/services 读取端口映射)
sudo ufw allow ssh           # 等同于 allow 22
sudo ufw allow http          # 等同于 allow 80
sudo ufw allow https         # 等同于 allow 443

# 允许端口范围(必须指定协议)
sudo ufw allow 8000:9000/tcp

禁止端口

sudo ufw deny 21
sudo ufw deny 80/tcp
sudo ufw deny from 192.168.1.200

删除规则

# 通过规则内容删除
sudo ufw delete allow 22
sudo ufw delete deny 21

# 通过编号删除(先用 status numbered 查看编号)
sudo ufw status numbered
sudo ufw delete 3

高级规则

基于来源 IP 的控制

# 允许特定 IP 所有访问
sudo ufw allow from 192.168.1.1

# 允许整个网段
sudo ufw allow from 192.168.1.0/24

# 允许特定 IP 访问特定端口
sudo ufw allow from 192.168.1.1 to any port 80 proto tcp

# 拒绝特定来源
sudo ufw deny from 10.0.0.0/8

限制连接速率

防止暴力破解:

# 限制 SSH 端口 30 秒内最多 6 次连接
sudo ufw limit ssh

应用 Profile

UFW 支持通过应用 Profile 来管理规则:

# 查看所有可用的应用 Profile
sudo ufw app list

# 查看某个 Profile 的详细信息
sudo ufw app info 'OpenSSH'

# 允许某个应用的端口
sudo ufw allow 'OpenSSH'

日志与监控

# 开启日志
sudo ufw logging on
# 日志级别:low、medium(默认)、high、full
sudo ufw logging medium

# 查看日志
sudo journalctl -u ufw
# 或查看系统日志
sudo tail -f /var/log/ufw.log

常用场景示例

搭建 Web 服务器

sudo ufw default deny incoming    # 默认阻止入站
sudo ufw default allow outgoing   # 默认允许出站
sudo ufw allow ssh                # 允许 SSH
sudo ufw allow 80/tcp             # HTTP
sudo ufw allow 443/tcp            # HTTPS
sudo ufw enable

数据库服务器

sudo ufw allow ssh
sudo ufw allow from 192.168.1.0/24 to any port 3306 proto tcp  # MySQL
sudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcp  # PostgreSQL
sudo ufw enable

总结

UFW 让 Linux 防火墙管理变得不再复杂。掌握以上规则后,大部分日常场景都可以应对。牢记一点:在远程操作时先放行 SSH 端口,这是避免被锁在门外的关键。

Comments | 0条评论