Ubuntu防火墙端口管理指南

这是一份详细且实用的 Ubuntu 防火墙端口管理指南。Ubuntu 自 18.04 LTS 以后,默认使用的防火墙是 UFW ,即"不复杂的防火墙",它极大地简化了 iptables 的管理。


第一部分:UFW 基础与安装

1. 检查 UFW 状态

首先,检查 UFW 是否已安装和运行。

bash

复制代码
sudo ufw status
  • 如果防火墙是** inactive **状态,你会看到:Status: inactive

  • 如果防火墙是** active **状态,你会看到已允许的规则列表。

2. 安装 UFW

通常 UFW 已预装。如果没有,请使用以下命令安装:

bash

复制代码
sudo apt update
sudo apt install ufw

第二部分:基本端口管理操作

1. 启用 UFW

警告 :在启用 UFW 前,务必确保允许 SSH 连接,否则你可能会被锁在服务器外。

bash

复制代码
# 首先允许 SSH(端口 22)
sudo ufw allow ssh
# 或者直接指定端口
sudo ufw allow 22/tcp

# 然后启用 UFW
sudo ufw enable

系统会提示操作可能中断现有的 SSH 连接,确认你已允许 SSH 后,输入 y 继续。

2. 禁用 UFW

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

bash

复制代码
sudo ufw disable
3. 重置 UFW

这将禁用 UFW,并删除所有规则,恢复到初始状态。

bash

复制代码
sudo ufw reset

第三部分:允许和拒绝端口/服务

1. 按服务名(推荐)

UFW 在 /etc/services 中查找一些常见服务的端口。

bash

复制代码
# 允许 SSH
sudo ufw allow ssh

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

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

# 允许 FTP (端口 21)
sudo ufw allow ftp
2. 按端口号

bash

复制代码
# 允许特定 TCP 端口 (例如:8080)
sudo ufw allow 8080/tcp

# 允许特定 UDP 端口 (例如:53,用于 DNS)
sudo ufw allow 53/udp

# 同时允许 TCP 和 UDP 的某个端口 (例如:NTP 123)
sudo ufw allow 123
3. 按特定范围端口

bash

复制代码
# 允许一个端口范围,必须指定协议 (例如:60000-60100 for TCP)
sudo ufw allow 60000:60100/tcp
4. 按 IP 地址

bash

复制代码
# 允许来自特定 IP 的所有连接
sudo ufw allow from 192.168.1.100

# 允许来自特定 IP 到特定端口的连接
sudo ufw allow from 192.168.1.100 to any port 22

# 允许一个子网
sudo ufw allow from 192.168.1.0/24 to any port 3306
5. 拒绝连接

语法与 allow 完全相同,只是将命令替换为 deny

bash

复制代码
# 拒绝 HTTP 连接
sudo ufw deny http

# 拒绝来自特定 IP 的连接
sudo ufw deny from 203.0.113.10
6. 删除规则

有两种方法可以删除规则:

方法 A:使用规则编号(最直接)

  1. 首先,查看带编号的规则列表:

    bash

    复制代码
    sudo ufw status numbered
  2. 找到你想删除的规则前面的编号(例如 [3]),然后执行:

    bash

    复制代码
    sudo ufw delete 3

方法 B:通过规则描述

通过指定你最初创建的规则来删除它。

bash

复制代码
# 例如,你之前运行了 `sudo ufw allow 80/tcp`
sudo ufw delete allow 80/tcp

第四部分:高级配置与技巧

1. 限制连接

limit 规则可以自动阻止某个 IP 在短时间内发起过多连接请求,常用于 SSH 防暴力破解。

bash

复制代码
sudo ufw limit ssh
2. 查看详细规则

显示 UFW 当前运行的完整规则集。

bash

复制代码
sudo ufw show added

或者查看 iptables 的原始格式(供高级用户诊断):

bash

复制代码
sudo ufw show raw
3. 配置默认策略

UFW 的默认行为是拒绝所有传入连接,允许所有传出连接。这是最安全的配置,通常不需要更改。但你可以明确设置:

bash

复制代码
# 拒绝所有传入(默认)
sudo ufw default deny incoming

# 允许所有传出(默认)
sudo ufw default allow outgoing

如果你想设置一个非常严格的策略(例如在个人桌面上),可以拒绝所有传出,然后只允许你需要的:

bash

复制代码
sudo ufw default deny outgoing
sudo ufw allow out 53/udp  # 允许 DNS 解析
sudo ufw allow out on eth0 to any port 80,443 proto tcp  # 允许 HTTP/HTTPS 上网

第五部分:应用配置与管理

1. 重新加载规则

在修改规则后,UFW 会自动生效。如果需要手动重载:

bash

复制代码
sudo ufw reload
2. 备份和恢复规则

你可以将规则导出到一个文件进行备份。

bash

复制代码
# 备份
sudo sh -c "ufw status numbered > ufw-backup.txt"

# 恢复(需要手动或通过脚本重新应用每条规则)
# 没有直接的“恢复”命令,但你可以通过脚本来解析备份文件并执行相应的 `ufw allow` 命令。

实用示例场景

场景:配置一个基本的 Web 服务器

  1. 设置默认策略并允许 SSH。

    bash

    复制代码
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw allow ssh
    sudo ufw limit ssh  # 可选,但推荐用于 SSH
  2. 允许 Web 服务。

    bash

    复制代码
    sudo ufw allow http
    sudo ufw allow https
  3. 启用防火墙。

    bash

    复制代码
    sudo ufw enable
  4. 验证规则。

    bash

    复制代码
    sudo ufw status verbose

    输出应类似:

    text

    复制代码
    Status: active
    Logging: on (low)
    Default: deny (incoming), allow (outgoing), disabled (routed)
    New profiles: skip
    
    To                         Action      From
    --                         ------      ----
    22/tcp (SSH)               ALLOW IN    Anywhere
    80/tcp (HTTP)              ALLOW IN    Anywhere
    443/tcp (HTTPS)            ALLOW IN    Anywhere
    22/tcp (SSH (v6))          ALLOW IN    Anywhere (v6)
    80/tcp (HTTP (v6))         ALLOW IN    Anywhere (v6)
    443/tcp (HTTPS (v6))       ALLOW IN    Anywhere (v6)

重要提醒

  • 云服务器用户注意 :如果你使用的是 AWS、Google Cloud、Azure 等云服务,它们有自己的安全组 。安全组规则在 UFW 之前生效。如果你的端口在 UFW 中允许了但仍然无法访问,请检查云服务商的安全组设置。

  • 谨慎操作:在对远程服务器进行任何防火墙更改之前,请确保你有一条不会被中断的连接(例如通过控制台),或者已经允许了你的 SSH 连接。

这份指南涵盖了 UFW 端口管理的绝大多数日常操作。通过熟练使用这些命令,你可以有效地保护你的 Ubuntu 系统。

相关推荐
fei_sun2 小时前
【复习】计网强化第一章
运维·服务器·网络
野熊佩骑3 小时前
CentOS7二进制安装包方式部署K8S集群之CA根证书生成
linux·运维·docker·云原生·容器·kubernetes·centos
每天更新3 小时前
linux内核时间&定时器&延时
linux·运维·服务器
snpgroupcn3 小时前
SAP S/4HANA迁移方法选哪种?选择性数据转换是否合适?企业需要考虑哪些关键因素!
运维·数据库·云计算
杜子不疼.3 小时前
【Linux】冯 • 诺依曼体系结构
linux·运维·服务器
门前灯3 小时前
Linux系统之msgexec 命令详解
linux·运维·服务器·msgexec
简一之学无止境3 小时前
Linux中信号量semaphore的实现
linux
東雪蓮☆5 小时前
MySQL 全量 + 增量备份脚本(RPM 安装)实践与问题解析
linux·运维·mysql
落羽的落羽5 小时前
【Linux系统】快速入门一些常用的基础指令
linux·服务器·人工智能·学习·机器学习·aigc