Linux 系统中 ufw (Uncomplicated Firewall)防火墙的详细用法及示例,涵盖规则管理、端口控制、服务配置等核心操作:


一、ufw 防火墙 (Ubuntu/Debian 系)

1. 基础操作

# 查看状态
sudo ufw status verbose # 显示详细状态(含默认策略)
sudo ufw status numbered # 显示带编号的规则列表

# 启用/禁用防火墙
sudo ufw enable # 启用并开机自启
sudo ufw disable # 禁用防火墙

# 重置规则
sudo ufw reset # 重置所有规则并禁用(需确认)

2. 规则管理

开放/阻止端口

# 开放 TCP 80 端口
sudo ufw allow 80/tcp

# 开放 UDP 53 端口(DNS)
sudo ufw allow 53/udp

# 开放范围端口(如 FTP 被动模式)
sudo ufw allow 50000:51000/tcp

# 阻止 IP 访问
sudo ufw deny from 192.168.1.100

按服务名称配置

# 查看预定义的服务列表
sudo ufw app list

# 允许 SSH 服务(等效于允许 TCP 22)
sudo ufw allow OpenSSH

# 允许 Nginx Full(HTTP + HTTPS)
sudo ufw allow 'Nginx Full'

指定网卡/IP 范围

# 允许来自 10.0.0.0/24 的 MySQL 访问
sudo ufw allow from 10.0.0.0/24 to any port 3306 proto tcp

# 限制 SSH 仅允许特定 IP
sudo ufw allow from 203.0.113.5 to any port 22 proto tcp
sudo ufw deny 22/tcp # 先拒绝所有,再允许特定 IP(需注意顺序!)

删除规则

# 按规则编号删除
sudo ufw status numbered # 查看编号
sudo ufw delete 3 # 删除编号为 3 的规则

# 按规则内容删除
sudo ufw delete allow 80/tcp

3. 高级配置

速率限制(防暴力破解)

# 限制 SSH 连接尝试(每分钟最多 6 次)
sudo ufw limit 22/tcp

日志管理

sudo ufw logging on        # 开启日志(默认低级别)
sudo ufw logging medium # 中等级别日志
tail -f /var/log/ufw.log # 实时查看日志

四、注意事项

  1. 规则顺序:ufw 规则按添加顺序生效。
  2. 持久化:ufw 规则自动保存。
  3. 服务依赖:确保防火墙允许的端口与服务的实际监听端口一致。
  4. 测试规则:修改后使用 telnetnmap 验证端口是否开放。