Ubuntu 24.04 LTS ufw防火墙完整配置指南(新手入门+运维必备)

Ubuntu 24.04 LTS ufw防火墙完整配置指南(新手入门+运维必备)

在Linux服务器运维中,防火墙是保障系统安全的第一道防线。对于Ubuntu 24.04 LTS系统而言,ufw(Uncomplicated Firewall,简易防火墙)是官方内置的轻量级防火墙工具,它基于iptables进行封装,无需掌握复杂的iptables语法,通过简洁的命令即可实现端口管理、IP限制、访问控制等核心防护功能。

本文将从基础操作到进阶配置,再到常见问题排查,全方位拆解ufw的使用方法,结合实测案例说明每一步操作的意义,适合Linux新手快速上手,也可作为运维人员的日常参考手册,确保服务器端口安全、合理开放。

一、前提说明(新手必看,避免踩坑)

  • 预装情况:ufw 已默认预装在 Ubuntu 24.04 LTS 系统中,无需额外安装;若检测到缺失(执行ufw命令提示不存在),可通过 sudo apt install ufw -y 快速安装。
  • 权限要求:所有ufw配置命令均需root权限,全程使用sudo前缀执行,避免权限不足导致操作失败。
  • 核心警告:若通过SSH远程连接服务器配置ufw,务必先配置SSH允许规则,再启用防火墙!否则会直接被锁机,无法远程连接(只能通过本地终端/虚拟机控制台恢复)。

二、基础操作:启用/禁用/状态查看(入门必备)

ufw的基础操作主要围绕“状态查看”“启用”“禁用”“重置”展开,命令简洁,执行后即时反馈结果,新手可快速上手。

1. 查看ufw当前状态(最常用)

通过不同参数,可查看简洁状态、详细状态或带编号的规则,适配不同场景需求:

# 简洁查看(仅显示防火墙状态和核心规则)sudo ufw status # 详细查看(显示规则、端口、协议、来源IP、默认策略等)sudo ufw status verbose # 数字端口+编号显示(不显示服务名,规则前加编号,方便后续删除)sudo ufw status numbered 

默认情况下,ufw状态为 inactive(未启用),无任何自定义规则;启用后状态变为 active,并显示已配置的所有规则。

2. 启用ufw防火墙

# 启用防火墙,默认策略:拒绝所有入站连接,允许所有出站连接sudo ufw enable

启用成功后,终端会输出:Firewall is active and enabled on system startup,表示防火墙已激活,且设置为开机自启(无需额外配置)。

3. 禁用ufw防火墙

若需临时关闭防火墙(如调试服务、排查端口问题),执行以下命令:

sudo ufw disable 

禁用后,所有ufw规则暂时失效,系统不再进行端口访问控制,调试完成后建议重新启用。

4. 重置ufw配置(恢复默认)

若规则配置混乱、出现冲突,或想重新配置ufw,可执行重置命令(谨慎使用,会清除所有自定义规则):

sudo ufw reset 

重置后,ufw恢复为默认状态(inactive),所有允许/拒绝规则、端口配置全部清空,可重新开始配置。

三、核心配置:端口/服务规则管理(重点)

ufw支持通过「端口号」或「服务名」配置访问规则(服务名对应 /etc/services 文件,如ssh=22、http=80、https=443),规则优先级遵循:更具体的规则 > 通用规则,且规则添加后立即生效(需确保ufw处于active状态)。

1. 允许入站连接(常用场景,必学)

入站连接控制是ufw的核心功能,以下是日常运维中最常用的允许规则,覆盖远程管理、网页服务、数据库等场景:

# 1. 允许特定端口(默认TCP协议,可指定UDP)sudo ufw allow 22/tcp # 允许SSH(22端口,远程连接必备,重中之重)sudo ufw allow 80/tcp # 允许HTTP(80端口,静态网页服务)sudo ufw allow 443/tcp # 允许HTTPS(443端口,加密网页服务,推荐)sudo ufw allow 3306/tcp # 允许MySQL(3306端口,数据库服务)sudo ufw allow 5432/tcp # 允许PostgreSQL(5432端口,开源数据库)sudo ufw allow 8080/udp # 示例:允许UDP协议的8080端口(按需配置)# 2. 允许特定端口范围(如1000-2000端口,TCP协议)sudo ufw allow 1000:2000/tcp # 3. 允许特定服务名(等价于对应端口,更直观,适合新手)sudo ufw allow ssh# 等价于allow 22/tcpsudo ufw allow http # 等价于allow 80/tcpsudo ufw allow https # 等价于allow 443/tcp# 4. 允许特定IP访问所有端口(信任单个IP,如内网管理机192.168.1.100)sudo ufw allow from 192.168.1.100 # 5. 允许特定网段访问特定端口(如允许内网192.168.1.0/24网段访问SSH)sudo ufw allow from 192.168.1.0/24 to any port 22/tcp # 6. 允许特定网卡的入站连接(如仅允许eth0网卡的80端口入站)sudo ufw allow in on eth0 to any port 80/tcp 

2. 拒绝入站连接

ufw默认策略已拒绝所有未明确允许的入站连接,若需针对性拒绝某个IP、端口(如黑名单、防止恶意扫描),可执行以下命令:

# 拒绝某个IP访问所有端口(添加IP到黑名单,如192.168.1.200)sudo ufw deny from 192.168.1.200 # 拒绝所有IP访问3389端口(Windows远程桌面端口,避免被恶意扫描)sudo ufw deny 3389/tcp # 拒绝特定网段访问特定端口(如拒绝10.0.0.0/8网段访问MySQL)sudo ufw deny from 10.0.0.0/8 to any port 3306/tcp 

3. 允许/拒绝出站连接

ufw默认允许所有出站连接(服务器可正常访问外部网络,如下载依赖、更新系统),若需限制出站连接(如增强安全性、禁止访问外部无关端口),可参考以下配置:

# 警告:拒绝所有出站连接(谨慎使用,会导致服务器无法访问外部网络)sudo ufw default deny outgoing # 允许出站SSH连接(仅允许服务器访问外部22端口,用于远程连接其他机器)sudo ufw allow outgoing 22/tcp # 允许出站HTTP/HTTPS(服务器可访问网页、更新系统、下载依赖)sudo ufw allow outgoing 80/tcp sudo ufw allow outgoing 443/tcp # 允许出站数据库连接(如服务器需访问外部MySQL数据库)sudo ufw allow outgoing 3306/tcp 

4. 删除规则(易错点,重点掌握)

删除规则前,建议先通过 sudo ufw status numbered 查看规则编号(最精准),避免删除错误规则,以下是两种常用删除方法:

# 方法1:通过规则编号删除(推荐,精准无误差)sudo ufw status numbered # 先查看规则编号,假设要删除编号为3的规则sudo ufw delete 3# 删除编号为3的规则# 方法2:通过原命令反向删除(需完全匹配,包括端口、协议,易出错)sudo ufw delete allow 80/tcp # 删除“允许80端口TCP”规则sudo ufw delete deny from 192.168.1.200 # 删除“拒绝192.168.1.200”规则

注意:删除规则后立即生效,无需重启ufw,若删除错误,重新添加对应规则即可。

四、进阶配置:常见场景实战(运维必备)

结合实际运维场景,整理4个高频进阶配置,直接复制命令即可使用,覆盖服务器基础防护、防暴力破解、ping测试、端口转发等需求。

1. 服务器基础防护(推荐所有服务器配置)

适合Web服务器、应用服务器、数据库服务器,仅开放必要端口,拒绝无关访问,最大化提升安全性:

# 1. 允许SSH(远程管理,必开)sudo ufw allow ssh# 2. 允许HTTP/HTTPS(网页服务,无需则删除)sudo ufw allow http sudo ufw allow https # 3. 允许数据库端口(按需开启,如MySQL 3306,无需则删除)sudo ufw allow 3306/tcp # 4. 配置默认策略:拒绝所有入站,允许所有出站sudo ufw default deny incoming sudo ufw default allow outgoing # 5. 启用防火墙(确认无问题后执行)sudo ufw enable

2. 限制SSH连接(防暴力破解,重点)

SSH端口(22)是远程管理的入口,易被暴力破解,通过以下配置限制访问来源或连接频率,提升安全性:

# 方案1:仅允许内网网段访问SSH(推荐,避免外部IP暴力破解)sudo ufw allow from 192.168.1.0/24 to any port 22/tcp # 内网网段sudo ufw deny 22/tcp # 拒绝其他所有IP访问SSH# 方案2:限制SSH连接频率(10秒内最多5次连接,防暴力破解)# Ubuntu 24.04已预装相关模块,直接执行即可sudo ufw limit ssh/tcp 

3. 允许ICMP(ping测试,调试必备)

默认情况下,ufw允许出站ping(服务器可ping通其他机器),但禁止入站ping(其他机器无法ping通服务器),若需调试网络,可允许入站ping:

# 允许入站ping(ICMP协议,其他机器可ping通服务器)sudo ufw allow in proto icmp from any to any icmp-type echo-request # 允许出站ping回复(服务器ping其他机器后,可接收回复)sudo ufw allow out proto icmp from any to any icmp-type echo-reply 

4. 配置NAT/端口转发(需内核支持)

若需将服务器端口转发到内网其他机器(如将服务器8080端口转发到内网192.168.1.10的80端口),需先启用内核IP转发,再配置转发规则:

# 1. 临时启用内核IP转发(重启服务器后失效)sudo sysctl net.ipv4.ip_forward=1# 2. 永久启用内核IP转发(编辑sysctl配置文件)sudonano /etc/sysctl.conf # 取消注释或添加一行:net.ipv4.ip_forward=1# 保存退出后,执行以下命令使配置生效sudo sysctl -p # 3. 添加端口转发规则(假设服务器外网网卡为eth0)# 将服务器8080端口(TCP)转发到内网192.168.1.10的80端口sudo ufw route allow in on eth0 from any to any port 8080/tcp to 192.168.1.10 port 80/tcp 

五、开机自启与规则持久化

ufw启用后,默认已设置为开机自启,所有自定义规则会自动持久化到 /etc/ufw/ 目录下,重启服务器后规则不会丢失,无需额外配置。

若需确认自启状态,或手动调整自启设置,执行以下命令:

# 查看ufw服务状态(确认是否开机自启)sudo systemctl status ufw # 启用开机自启(默认已启用,若被禁用则执行)sudo systemctl enable ufw # 禁用开机自启(不推荐,重启后防火墙失效)sudo systemctl disable ufw 

六、常见问题排查(新手救星)

整理4个ufw配置中最常见的问题,包含原因分析和解决方案,新手遇到问题可直接对照排查。

1. 远程连接被锁机(SSH无法连接)

原因:启用ufw前未允许SSH端口(22/tcp),默认策略拒绝所有入站连接,导致远程连接被阻断。

解决方案:通过本地终端/虚拟机控制台登录服务器,执行 sudo ufw allow ssh,然后重新启用ufw(sudo ufw enable),即可恢复远程连接。

2. 规则添加后不生效

常见原因:ufw未启用、规则冲突(如先允许再拒绝,以最后一条规则为准)、规则配置不精准(如端口协议错误)。

解决方案
1. 确认ufw处于启用状态:sudo ufw status(需显示active);
2. 查看规则是否冲突:sudo ufw status verbose,删除冲突规则;
3. 重启ufw使规则生效:sudo ufw disable && sudo ufw enable

3. 无法访问外部网络(出站被限制)

原因:误将默认出站策略设置为deny(拒绝所有出站),且未配置允许的出站规则。

解决方案:恢复默认出站策略:sudo ufw default allow outgoing,然后根据需求添加必要的出站规则。

4. 查看ufw日志(排查异常连接)

若需排查异常连接、规则生效情况,可启用ufw日志,查看连接记录:

# 启用日志(低级别,仅记录关键连接信息,推荐)sudo ufw logging on # 启用高级日志(记录所有连接细节,适合精准排查问题)sudo ufw logging full # 实时查看日志(默认日志路径:/var/log/ufw.log)sudotail -f /var/log/ufw.log # 关闭日志sudo ufw logging off 

七、总结与实用技巧

1. 核心操作流程(新手必记)

ufw配置核心逻辑:允许必要端口 → 配置默认策略 → 启用防火墙 → 验证规则,无需过度开放端口,仅保留业务必需端口,即可最大化提升服务器安全性。

2. 快速查看端口策略技巧

  • 快速查看:sudo ufw status(适合确认防火墙状态和核心规则);
  • 详细查看:sudo ufw status verbose(适合确认规则细节、默认策略);
  • 数字端口+编号:sudo ufw status numbered(适合删除规则);
  • 过滤查看:sudo ufw status verbose | grep -E "ALLOW|To"(仅看允许规则)、sudo ufw status verbose | grep -E "DENY|To"(仅看拒绝规则)。

Read more

Spring Boot 数据可视化与图表集成

Spring Boot 数据可视化与图表集成

Spring Boot 数据可视化与图表集成 27.1 学习目标与重点提示 学习目标:掌握Spring Boot数据可视化与图表集成的核心概念与使用方法,包括数据可视化的定义与特点、图表工具的定义与特点、Spring Boot与图表工具的集成、Spring Boot的实际应用场景,学会在实际开发中处理数据可视化与图表集成问题。 重点:数据可视化的定义与特点、图表工具的定义与特点、Spring Boot与图表工具的集成、Spring Boot的实际应用场景。 27.2 数据可视化与图表工具概述 数据可视化与图表工具是Java开发中的重要组件。 27.2.1 数据可视化的定义 定义:数据可视化是指将数据通过图表、地图、仪表盘等形式直观地展示出来,帮助用户更好地理解和分析数据。 作用: * 提高数据的可读性。 * 帮助用户发现数据中的规律。 * 支持快速决策。 常见的数据可视化工具: * ECharts:ECharts是百度开源的一个数据可视化库。 * Highcharts:Highcharts是一个基于JavaScript的数据可视化库。 * D3.js:D3

By Ne0inhk

ReMe vs Mem0 源码对比:两种 AI 记忆管理方案的架构差异

导读:ReMe 和 Mem0 是当前开源社区中两个代表性的 AI 记忆管理框架。ReMe 由 AgentScope 团队开发,聚焦于 Agent 的上下文管理和文件化工作记忆;Mem0(“mem-zero”)由 Y Combinator S24 孵化,定位为 AI 应用的"记忆层",主打用户画像和个性化交互。本文从源码层面对比两者的架构设计,帮助开发者理解它们的定位差异,以便在自己的 Agent 应用中做出合适的技术选型。 一、定位与设计哲学 在深入源码之前,先明确两者的定位差异——这是理解后续所有架构差异的根源。 维度ReMeMem0一句话定位Agent 的上下文管理 + 工作记忆框架AI 应用的个性化记忆层核心问题“对话太长,上下文溢出了怎么办?”“如何记住用户的偏好和事实?”记忆来源对话流中自动提取(压缩副产品)开发者显式调用 memory.add(

By Ne0inhk
SkyWalking - Kafka _ RabbitMQ 消息链路追踪支持

SkyWalking - Kafka _ RabbitMQ 消息链路追踪支持

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕SkyWalking这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * SkyWalking - Kafka / RabbitMQ 消息链路追踪支持 🚀 * 为什么需要消息链路追踪?🤔 * SkyWalking 核心概念回顾 🔍 * Kafka 链路追踪支持 🐘 * 1. 自动探针(推荐)✅ * 前提条件 * 工作原理 * Java 代码示例(无需修改业务代码!) * 验证追踪效果 * 2. 手动埋点(高级场景)🛠️ * 添加依赖 * 手动注入上下文(Producer) * 手动提取上下文(Consumer) * RabbitMQ 链路追踪支持 🐇 * 工作原理 * Java 代码

By Ne0inhk
【基于SpringBoot的图书购买系统】Redis中的数据以分页的形式展示:从配置到前后端交互的完整实现

【基于SpringBoot的图书购买系统】Redis中的数据以分页的形式展示:从配置到前后端交互的完整实现

引言 在当今互联网应用开发中,高性能和高并发已经成为系统设计的核心考量因素。Redis作为一款高性能的内存数据库,以其快速的读写速度、丰富的数据结构和灵活的扩展性,成为解决系统缓存、高并发访问等场景的首选技术之一。在图书管理系统中,尤其是涉及特价秒杀、热门图书展示等高频访问场景时,Redis的应用能够显著提升系统响应速度和用户体验。 本文将以一个实际的图书管理系统特价秒杀模块为例,详细阐述Redis在Spring Boot框架下的完整应用流程。我们将从Redis的配置开始,逐步讲解数据同步机制、后端业务逻辑实现以及前后端交互接口设计,最终呈现一个完整的基于Redis的高性能图书展示与交互模块。通过本文的学习,读者将能够掌握Redis在实际项目中的应用技巧,理解缓存策略的设计思路,并学会处理Redis与数据库的数据一致性问题。 在现代软件开发中,缓存层的设计已经成为系统架构的重要组成部分。对于图书管理系统来说,特价秒杀模块具有访问量大、数据更新频率低等特点,非常适合采用Redis作为缓存层。通过将热点数据存储在Redis中,我们可以将数据库的访问压力降低80%以上,同时将接口响应

By Ne0inhk