ufw

Ubuntu 下的 UFW (Uncomplicated Firewall) 是一个基于 iptables 的简单防火墙管理工具,旨在简化防火墙配置流程。以下是对 UFW 的全面详解,涵盖安装、配置、管理、规则语法、高级功能及常见问题解决方案。


一、UFW 简介

  • UFW 是 Ubuntu 的默认防火墙工具,由 iptables 提供底层支持。

  • iptables 是 Linux 内核的防火墙框架,但其配置复杂(需手动编写规则),而 UFW 通过简化命令和语法,让管理员更方便地管理防火墙。

  • 适用场景:个人服务器、小型企业网络、需要快速配置防火墙的场景。


二、安装与启用 UFW

1. 安装 UFW

sudo apt update sudo apt install ufw

2. 启用 UFW

  • 启用防火墙

    sudo ufw enable

    启用后,UFW 会自动加载默认策略(如拒绝所有流量,允许 SSH)。

  • 禁用防火墙

    sudo ufw disable
  • 查看状态

    sudo ufw status verbose

    显示当前规则、策略、日志状态等。


三、UFW 默认策略

UFW 的默认策略分为 incoming(进站)和 outgoing(出站):

  • 默认拒绝所有进站流量incoming: denied)。

  • 默认允许所有出站流量outgoing: allowed)。

修改默认策略

  • 修改进站策略

    sudo ufw default deny incoming sudo ufw default allow incoming
  • 修改出站策略

    sudo ufw default deny outgoing sudo ufw default allow outgoing

四、UFW 基础规则配置

1. 允许特定端口/服务

  • 允许单个端口(如 HTTP 80):

    sudo ufw allow 80/tcp
  • 允许特定协议(如 HTTPS 443):

    sudo ufw allow 443/tcp
  • 允许服务名称(如 SSH):

    sudo ufw allow ssh

2. 拒绝特定端口/服务

  • 拒绝单个端口

    sudo ufw deny 22/tcp
  • 拒绝所有 ICMP 请求(如 ping):

    sudo ufw deny icmp

3. 删除规则

  • 按规则编号删除(通过 ufw status verbose 查看规则编号):

    sudo ufw delete 1
  • 按规则内容删除

    sudo ufw delete allow 80/tcp

4. 允许特定 IP 或 IP 段

  • 允许单个 IP

    sudo ufw allow from 192.168.1.100
  • 允许 IP 段

    sudo ufw allow from 192.168.1.0/24

5. 限制 IP

  • 限制 IP 的访问频率(防暴力破解):

    sudo ufw limit ssh

五、UFW 高级功能

1. 端口转发(Port Forwarding)

  • 配置端口转发(例如将外部端口 80 转发到内网服务器 192.168.1.100:8080):

    sudo ufw allow 80/tcp to 192.168.1.100 port 8080

    注意:需确保 iptables 的 nat 表有相应配置(可通过 iptables -t nat -L 检查)。

2. 基于接口的规则

  • 允许特定接口的流量(如允许 eth0 的 HTTP 流量):

    sudo ufw allow on eth0 to any port 80

3. 自定义规则链

  • 添加自定义规则链(需直接操作 iptables):

    sudo iptables -N CUSTOM_CHAIN sudo iptables -A CUSTOM_CHAIN -j DROP sudo ufw deny to any

六、日志与监控

1. 启用日志记录

  • 启用日志(默认关闭):

    sudo ufw logging on
  • 设置日志级别(如 low, medium, high):

    sudo ufw logging medium

2. 查看日志

  • 查看 UFW 日志

    sudo tail -f /var/log/ufw.log

七、常见问题及解决方案

1. 无法连接服务器

  • 问题:启用 UFW 后无法 SSH 登录。

  • 解决方案

    1. 确保 SSH 端口开放:

      sudo ufw allow ssh
    2. 若已启用但规则未生效,检查规则顺序(UFW 按规则优先级执行,先定义的规则优先)。

2. UFW 无法启用

  • 问题:提示 Error: Another instance of ufw is already running

  • 解决方案

    sudo ufw disable sudo ufw enable

3. 端口转发未生效

  • 问题:配置了端口转发但无法访问。

  • 解决方案

    1. 检查 iptables 的 nat 表是否正确配置。

    2. 确保目标服务器监听了对应端口(如 netstat -tuln)。


八、UFW 与 iptables 的关系

  • UFW 是 iptables 的封装,所有 UFW 规则最终会转换为 iptables 规则。

  • 直接操作 iptables(需谨慎):

    sudo iptables -L -n -v sudo iptables -S

九、备份与恢复

  • 备份 UFW 配置

    sudo ufw status verbose > ufw_config_backup.txt
  • 恢复配置(手动重新应用规则)。


十、UFW 常用命令汇总

命令

说明

sudo ufw status

查看当前规则

sudo ufw enable/disable

启用/禁用防火墙

sudo ufw allow/deny <port>

允许/拒绝端口

sudo ufw delete <rule number>

删除规则

sudo ufw logging on/off

开启/关闭日志

sudo ufw default <action> <direction>

设置默认策略


十一、UFW 配置文件

  • 配置文件路径

    /etc/ufw/ufw.conf
  • 关键配置项

    • DEFAULT_FORWARD_POLICY:默认转发策略(如 ACCEPTDROP)。

    • LOG_LEVEL:日志级别(如 low, medium, high)。


十二、进阶建议

  1. 结合 Fail2Ban:自动封锁暴力破解的 IP。

  2. 使用 GUI 工具:如 Gufw(Ubuntu 的图形化 UFW 管理工具)。

  3. 定期审计规则:避免规则冗余或冲突。


附录:UFW 示例

示例 1:允许 SSH 和 HTTP

sudo ufw allow ssh sudo ufw allow 80/tcp sudo ufw enable

示例 2:拒绝所有 ICMP 请求

sudo ufw deny icmp

示例 3:限制 SSH 登录频率

sudo ufw limit ssh

通过以上详解,应能全面掌握 UFW 的配置与管理。

如需进一步优化,可结合 ipsetnftables 等工具实现更复杂的网络策略。

Comment

华计科技: 中华自主研发设计

华计科技为您提供咨询服务,IT技术支持和项目开发: (+86) 156 2654 0671

联系我们