XieJava's blog

记录最好的自己


  • 首页

  • 分类

  • 标签

  • 归档

  • 关于

Loki+Alloy+Grafana构建轻量级的日志分析系统

发表于 2025-08-10 | 更新于: 2025-12-04 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 2k | 阅读时长 ≈ 8

在现代运维和开发流程中,日志分析是故障排查、性能优化的核心环节。传统的日志系统(如 ELK Stack)虽功能强大,但资源消耗高、配置复杂,对中小规模环境或边缘设备不够友好。Loki+Alloy+Grafana组合则以 “轻量级、低成本、易部署” 为核心优势,成为替代方案的理想选择。

典型的基于 Loki 的日志记录技术栈由 3 个组件组成:

Loki

  • Loki:Grafana Labs 开源的日志聚合系统,借鉴 Prometheus 设计理念,仅索引日志元数据(标签)而非全文,大幅降低存储和计算开销。
  • Alloy:代理或客户端,Grafana 官方推荐的新一代数据采集器Alloy(替代 Promtail),支持日志、指标、追踪多信号采集,配置灵活且资源占用低。
  • Grafana:强大的可视化平台,原生支持 Loki 数据源,提供丰富的日志查询、过滤和仪表盘功能。

对网络设备、安全设备等的告警日志进行分析是在网络运维和安全运营中经常遇到的场景,我们可以通过Loki+Alloy+Grafana来搭建一套轻量级的日志分析系统来收集各类网络设备、安全设备的日志进行分析。现在就以采集TP-Link路由器的上网行为日志为例来构建这套日志分析系统。

日志采集分析

本文将详细介绍在Ubuntu 24.04 LTS环境中,从零搭建这套日志分析系统的全过程,确保每个步骤可操作、可复现。

环境准备:Ubuntu 24.04 系统配置
系统要求

  • 硬件:2 核 CPU、4GB 内存、20GB 磁盘(日志存储根据需求调整)
  • 系统:Ubuntu 24.04 LTS(已更新至最新版本)
  • 权限:sudo 权限(用于安装软件和配置服务)

根据Grafana官网的建议步骤,先安装Loki,再部署采集代理Alloy,再部署Grafana,通过Grafana来分析日志。

日志采集步骤

部署Loki日志存储系统

Loki 是日志的 “后端存储”,负责接收、存储日志并响应查询请求。采用二进制方式部署,步骤如下:

1. 下载Loki二进制文件

通过 GitHub API 获取Loki的二进制安装包:

1
2
3
4
5
6
7
8
9
10
# 创建Loki安装目录并下载二进制包  这里安装的是3.5.1 
sudo mkdir -p /opt/loki /etc/loki
wget -qO /opt/loki/loki-linux-amd64.zip "https://github.com/grafana/loki/releases/download/v3.5.1/loki-linux-amd64.zip"

# 解压并设置可执行权限
sudo unzip -d /opt/loki /opt/loki/loki-linux-amd64.zip && rm /opt/loki/loki-linux-amd64.zip
sudo chmod a+x /opt/loki/loki-linux-amd64

# 创建软链接,方便全局调用
sudo ln -s /opt/loki/loki-linux-amd64 /usr/local/bin/loki

查看Loki版本 loki --version

1
2
3
4
5
6
7
loki --version
loki, version 3.5.1 (branch: release-3.5.x, revision: d4e637ce)
build user: root@ceaea196ea87
build date: 2025-05-19T17:06:03Z
go version: go1.24.1
platform: linux/amd64
tags: netgo

2. 配置 Loki

使用官方提供的本地存储配置文件,创建 Loki 配置目录并下载默认配置文件:

1
2
sudo mkdir -p /etc/loki
sudo wget https://raw.githubusercontent.com/grafana/loki/v3.5.1/cmd/loki/loki-local-config.yaml -O /etc/loki/config.yaml

3. 创建 Systemd 服务

为 Loki 创建系统服务,确保开机自启和进程管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sudo tee /etc/systemd/system/loki.service <<EOF
Description=Grafana Loki Log Aggregation System
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/loki -config.file=/etc/loki/config.yaml
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target
EOF# 重载systemd配置并启动Loki

sudo systemctl daemon-reload
sudo systemctl start loki
sudo systemctl enable loki
# 验证服务状态(应显示active (running))
sudo systemctl status loki

可以使用 journalctl -u loki -f 查看 Loki 日志以进行故障排除

4. 验证 Loki 运行

通过 HTTP 接口检查 Loki 状态:

1
curl http://127.0.0.1:3100/ready

预期输出:ready(表示 Loki 已就绪)

loki ready

部署配置Alloy

Alloy 是连接日志源与 Loki 的 “桥梁”,负责采集服务器本地日志并发送到 Loki。作为 Grafana Agent 的替代者,Alloy 配置更灵活,支持多信号采集。

1. 安装 Alloy

通过 Grafana 官方仓库安装 Alloy(与 Grafana 使用同一仓库,无需重复添加):

1
2
3
4
5
# 安装Alloy包
sudo apt install -y alloy

# 验证安装
alloy --version

alloy --version

2. 配置 Alloy 收集日志

Alloy 使用声明式配置文件定义采集规则,默认路径为/etc/alloy/config.alloy。我们需配置:
1、 通过syslog采集;2、对日志中的IP进行提取;3、 将日志转发到 Loki。
创建配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
otelcol.receiver.syslog "local" {
udp {
listen_address = "0.0.0.0:514"
encoding = "GBK"
}
output {
logs = [otelcol.exporter.loki.local.input]
}
}

otelcol.exporter.loki "local" {
forward_to = [loki.process.extract_ip.receiver]
}

loki.process "extract_ip" {
stage.regex {
expression = "a:(?P<ip>\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"
}
stage.labels {
values = {
ip = "ip",
}
}
forward_to = [loki.write.local.receiver]
}

loki.write "local" {
endpoint {
url = "http://localhost:3100/loki/api/v1/push"
}
}

配置说明:

alloy目前对syslog支持并不是特别好,经过多次尝试,用alloy的syslog组件不能支持中文编码,所以改用通过otelcol的syslog来采集日志。
listen_address = “0.0.0.0:514” 表示监听所有源的514端口来的upd数据。

3. 启动 Alloy 服务

1
2
3
4
5
# 启动Alloy并设置开机自启
sudo systemctl enable --now alloy

# 验证服务状态(应显示active (running))
sudo systemctl status alloy

排查提示若启动失败,通过sudo journalctl -u alloy -f查看日志,常见问题:配置文件语法错误、Loki未启动导致连接失败

部署Grafana

Grafana 是整个系统的 “前端”,用于日志查询和可视化。通过官方仓库安装可确保自动更新。

1. 添加 Grafana 官方仓库

1
2
3
4
5
# 导入Grafana GPG密钥(用于验证包完整性)
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

# 添加Grafana OSS仓库(稳定版)
echo 'deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main' | sudo tee /etc/apt/sources.list.d/grafana.list

2. 安装并启动 Grafana

1
2
3
4
5
6
7
8
# 更新包索引并安装Grafana
sudo apt update && sudo apt install -y grafana

# 启动Grafana服务并设置开机自启
sudo systemctl enable --now grafana-server

# 验证服务状态(应显示active (running))
sudo systemctl status grafana-server

3. 验证 Grafana 安装

打开浏览器访问 http://<服务器IP>:3000,首次登录使用默认凭据:

  • 用户名:admin
  • 密码:admin

首次登录会要求修改密码,按提示设置新密码即可。

接入数据源

1. 在发送端配置采集器的地址

这里我们要接入和分析TP-Link路由器的上网行为日志。所以要在路由器上配置将日志发送到alloy采集节点的服务器。具体的TP-Link路由器的上网行为分析审计的配置参考《通过TPLink路由器进行用户行为审计实战》

行为审计

2. 在采集端看是否收到数据

通过tcpdump命令查看采集节点是否有日志数据进来

1
tcpdump -i ens2 -A port 514

tcpdump

这里可以看到有日志数据通过ens2网卡的514端口进来了。

用Grafana查询和分析数据

在用Grafana进行查询之前先要配置Grafana的数据源添加loki的数据源

添加数据源

在loki的数据源中设置loki的连接地址

loki连接

设置完成后就可以用Grafana强大的分析查询和可视化来对日志进行分析了。

日志分析

通过本文步骤,我们在 Ubuntu 24.04 上构建了 Loki+Alloy+Grafana 日志分析系统:

Loki 负责高效存储日志,仅索引元数据降低开销;
Alloy 轻量采集系统日志,配置灵活易扩展;
Grafana 提供强大的日志查询与可视化能力(支持 LogQL、仪表盘、告警)。

该架构资源占用低(单节点最低 2 核 4GB 内存即可运行),适合中小规模环境、边缘设备或开发测试场景。后续可扩展至多节点 Loki 集群、添加日志告警规则,或集成 Prometheus 监控指标,构建完整的可观测性平台。


博客地址:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

VScode对Ubuntu用root账号进行SSH远程连接开发

发表于 2025-08-02 | 更新于: 2025-12-04 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 1.2k | 阅读时长 ≈ 4

由于linux服务器大部分都是基于命令行的操作,缺乏比较方便好用的编辑工具,对于经常在linux服务器上做开发的同学来说直接在服务器上进行开发或配置文件的修改还不是特别的方便。虽然linux上有vi或vim比起图形化的编辑工具体验感还是不是很好。作为程序员常用的宇宙第一的VScode就提供了相应的插件可以通过ssh远程连接到服务器上直接编辑服务器上相应的文件,极大提高了在服务器上开发或修改配置文件的效率和体验感。本文就来介绍通过VScode对Ubuntu用root账号进行SSH远程连接直接在服务器上进行开发。

一、安装VScode的ssh扩展插件

Remote-SSH 扩展 允许你将任何带有 SSH 服务器的远程机器用作你的开发环境。这可以在多种情况下极大地简化开发和故障排除:

  • 在部署目标操作系统上开发​,或者使用比本地机器更大、更快或更专业化的硬件进行开发。
  • 轻松切换不同的远程开发环境,并安全地进行更新​,而无需担心影响本地机器。
  • 从多台机器或不同位置访问现有的开发环境。
  • 调试运行在其他地方(例如客户现场或云端​)的应用程序。

在VScode的编辑器界面在Extension中搜索ssh排名前三的Remote-SSH、Remote - SSH: Editing Configuration Files、Remote Explorer是微软官方的ssh扩展插件,都安装一下。

ssh扩展插件

安装好了后就会在左侧的导航看到Remote Exploer

Remote Exploer

在SSH中点“+” 后就可以在上面的导航输入框中输入要ssh连接服务器的命令。如:ssh xiejava@192.168.0.30 意思就是通过xiejava的用户名ssh登录到192.168.0.30的服务器。

New Remote

输入正确的口令后,表示服务器的图标变亮就意味着已经通过SSH连上了服务器了。

SSH连上了服务器

连上服务器后就可以通过命令来对服务器进行操作,也可以直接打开服务器上的文件进行操作了。

直接打开服务器上的文件进行操作

这样就可以直接在服务器上直接编辑文件,直接在命令行中输入命令执行,直接看到执行结果,简直不要太爽。

直接编辑文件

一般的教程到这里就结束了。但是有些Linux是默认不能使用root用户登录的如Ubuntu,如果不用root用户登录只能访问到登录用户的文件夹,如我是用xiejava登录的就只能访问到/home/xiejava的目录,只能在这个目录下新建和编辑相应的文件,而且每次打开编辑操作文件都要输入登录密码,作为服务器上的开发来说这显然是不可接受的。所以我们要用root账号进行ssh进行远程连接。

二、开启Ubuntu的root账号免密登录

1、生成SSH密钥对,并部署到服务器

要使 root 用户成功登录,需先在客户端生成 SSH 密钥对,并将公钥部署到服务器:

  1. 客户端生成密钥 (在本地PC执行):
1
ssh-keygen -t ed25519 -C "root_ssh_key"
  • 按提示选择保存路径(默认 C:\Users\你的用户名.ssh\id_ed25519)。
  • 连续按 3 次回车​,不设密码(实现完全免密)
    最后在文件夹中生成SSH密钥对
    生成SSH密钥对
  1. 部署公钥到服务器​:
    登录 Ubuntu
    创建 .ssh 目录并写入公钥
1
2
3
4
mkdir -p ~/.ssh
echo "粘贴复制的公钥内容,也就是id_ed25519.pub文件里面的内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2、测试免密登录

在 Windows PowerShell 执行:

1
ssh 用户名@Ubuntu_IP
  • 成功标志​:直接登录 Ubuntu,无需输入密码。
  • 失败表现​:提示输入密码或返回 Permission denied。

3、启用root用户

使用当前具有 sudo 权限的用户登录系统。执行密码修改命令

1
sudo passwd root
  • 输入当前用户的密码​(用于 sudo 提权)。
  • 输入新的 root 密码​(输入时不会显示字符)。
  • 再次确认新密码。
    禁用root密码登录(增强安全)​
1
sudo vim /etc/ssh/sshd_config

设置PermitRootLogin prohibit-password
PermitRootLogin prohibit-password

重启systemctl restart ssh

4、找到本地的ssh配置文件并配置密钥登录

在vscode中点击SSH旁边的配置按钮就会出现ssh本地的配置文件,一般是C:\Users\你的用户名\.ssh\config

找到本地的ssh配置文件

在config文件中配置User root 和IdentityFile 密钥文件的路径。

配置

这样就可以通过root进入到任何目录操作编辑任何文件了。

root免密登录

最后要提醒大家的是大家在修改任何配置文件的时候要注意备份和确认,因为获得了root权限可以操作编辑任何文件了。


博客地址:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

飞牛NAS本地化部署n8n打造个人AI工作流中心

发表于 2025-07-27 | 更新于: 2025-12-04 | 分类于 技术 | | 阅读次数:
字数统计: 1.3k | 阅读时长 ≈ 4

n8n是一个开源的工作流自动化工具,类似于Zapier和IFTTT,但它更加灵活和强大 。它允许用户通过图形化界面,以拖拽的形式构建自动化工作流,将不同的应用程序和服务连接起来,实现各种自动化任务 。
n8n最初的用途是自动化日常工作流,帮助用户节省时间,提高工作效率。在AI技术出现后,n8n更是成为了连接AI与数字世界的桥梁,因为它能够让AI与超过1000种不同的服务进行交互,几乎使AI能与赛博世界中的任何其他主体畅通无阻。

n8n的主要优势包括:

  • 部署简单:支持Docker一键私有化部署,也提供云服务选项。
  • 可接入服务强:集成了超过1000种第三方服务,且自部署版本具备丰富的本地调用能力,可以对本地数据库、文件等进行操作,甚至作为寄生系统为现有业务增添自动化和AI功能。
  • 对大模型友好:内置图形可视化的LangChain节点,能够方便地集成各种AI模型、记忆、工具和解析器,支持BYOK(Bring Your Own Key)模式,即用户可以自备API Key来调用AI服务。
  • 支持半封装模式:在低代码和代码之间实现了平衡。对于已有的节点,可以拖拽完成接入;对于没有现成节点的功能,支持通过HTTP Request接入几乎任何开放API的第三方服务。同时,其Code节点支持运行JavaScript和Python代码,非常适合与ChatGPT进行结对编程。

对于个人用户来说,在NAS(网络附加存储)上部署n8n具有多方面的优势:

  • 完全掌控数据和流程:n8n是开源的,可以选择将其部署在自己的NAS服务器上,从而完全掌控您的数据和自动化流程,无需担心数据泄露或被供应商锁定。
  • 部署简单:n8n的部署过程相对简单,可以通过Docker一键私有化部署,即使是不懂代码的用户也能通过可视化的界面快速上手。
  • 常态化运行:NAS通常是7x24小时开机的设备,结合n8n的AI工作流能力,可以帮助个人用户完成日常工作中大量的重复性劳动,例如自动生成日报、周报等,从而释放更多时间用于其他活动。
  • 随时随地访问:NAS虽然部署在家里,但是一般都通过ddns或其他方式打通了与外网的连接,可以随时随地方便的构建和调试自己AI工作流应用。

本文就以我的飞牛NAS为例来部署n8n打造人工的AI工作流中心。

一、下载n8n的镜像

在飞牛NAS的Docker镜像仓库中找到n8n的镜像,下载这个下载量和标星最多的n8nio/n8n的镜像。

下载n8n镜像

下载后就可以在飞牛NAS的本地镜像库中看到这个n8nio/n8n镜像。

本地镜像

二、启动镜像创建n8n容器

点击本地n8nio/n8n镜像的启动按钮,弹出创建容器的配置界面,在配置界面中输入容器的名称n8n勾选开机自启动。

创建容器

在进行存储位置配置之前,在NAS的文件管理中创建用于存储n8n数据文件的文件夹。

创建存储位置

在创建容器详情的配置界面其他的配置项都可以默认,在存储位置的配置项中一定要配置将容器的存储空间映射到NAS上的文件夹,这个文件夹就是刚在NAS文件管理中建的文件夹(也就是将docker容器中的/home/node/.n8n映射到NAS中的n8n/n8n_data)。否则docker重启n8n的配置数据会丢失。

存储空间映射

配置完成后,勾选创建后启动容器,点击“创建”。容器创建启动后就可以通过本地的5678端口访问n8n的应用了。

启动容器

三、访问使用n8n

在浏览器中输入你的主机和端口就可以访问n8n,我这里是 http://192.168.0.18:5678/
第一次访问有可能会出现如下图所示的提示,n8n用到了安全的cookie,要不就要配置HTTPS,要不就在环境变量中配置N8N_SECURE_COOKIE为false

警告

这里,我们在容器设置里添加变量,设置N8N_SECURE_COOKIE为false

设置N8N_SECURE_COOKIE为false

这样再次访问 http://192.168.0.18:5678/ 就可以正常访问了。第一次用n8n要设置自己的用户名和密码。

设置自己的用户名和密码

设置完用户名密码就可以使用n8n了。

使用n8n

我们可以导入一个已经配置好的n8n工作流实例。

导入n8n工作流实例

可以看到正常导入,将配置修改为自己的配置就可以直接使用别人已经配置好的工作流了。

使用效果

至此我们在飞牛NAS上成功部署了n8n,可以方便的随时随地构建自己的AI工作流应用了。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

通过TPLink路由器进行用户行为审计实战

发表于 2025-07-21 | 更新于: 2025-12-04 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.5k | 阅读时长 ≈ 5

用户行为审计是指对用户在网络平台上的行为进行监控和记录,以便对其行为进行分析和评估的过程。随着互联网的普及和发展,用户行为审计在网络安全和数据隐私保护方面起到了重要的作用。 用户行为审计可以帮助发现和预防网络安全威助。通过对用户的行为进行监控和记录,可以及时发现并阳止恶意攻击、病毒传播等网络安全威胁。例如,当用户的行为异常时,系统可以自动发出警报并采取相应的措施,保护网络平台的安全。
本文以家用的TP-Link 路由器为例,来实战一下用户行为审计,看看能发现一些什么异常。
TP-Link路由器是家用比较常见的路由器,通过简单的配置就可以实现用户行为管控。

一、路由器的行为管控配置

一般的路由器都带有简单行为管控功能,以我的TL-R479GP-AC为例,可以对网站访问、应用控制等进行相应的管控。
路由器行为管控配置

这里我们现对网站和应用进行监控记录,对用户的行为进行审计和管控。

1、网站访问控制

网站访问控制可以实现对某些IP,在什么时间段、访问什么网站进行记录和监控。
如我们对bilibil网站进行监控,将B站的域名配置到网站分组中,组名为“娱乐视频”。当然还可以加入跟多的需要记录和管控的网站。
网站分组

在网站访问的规则中进行配置,为IP地址组选择受管理的网站,在相应时间段中,与IP地址相匹配的设备在访问“娱乐视频”等类型的网站时受到管理。我这里是配置的是所有的地址段、所有时间段、将“娱乐视频”记录到系统日志。方便我们后续进行上网行为的审计分析。
网站访问控制

2、应用控制

同样可以对应用进行控制,对应用控制就是对APP的移动应用的访问进行监控和控制。在这里我们选择对所有的应用进行监控。
应用控制选择

配置监控的规则,如所有的IP所有的时间段,多访问所有的应用进行记录
记录应用访问

通过上面的配置,路由器就会根据上面配置的规则来记录相应的日志。但是要进行行为审计还要借助其他的工具如安全审计系统。

二、用户行为审计

1、安装安全审计系统

TP-Link提供了免费的TP-LINK安全审计系统。从官网上下载既可以进行部署和设置。TP-link提供的安全审计系统是以虚拟机镜像方式进行安装的。下载安装包后安装包附有一个比较详细的安装教程。
TP-Link官网 https://www.tp-link.com.cn/
TPLINK官网下载安全审计系统

下载安装包解压后除了有一个虚拟机镜像文件外安装包还附有一个比较详细的安装教程。
解压安装包

在正式安装之前需要安装Oracle VirtualBox的虚拟机管理软件,然后根据这个安装手册将虚拟机注册到管理软件进行启动。
虚拟机配置如下图所示:
虚拟机配置

启动虚拟机后,就可以访问安全审计平台了。
安全审计系统登录界面

安全审计系统默认用户名和密码都是admin,登录成功后会提示该默认密码。

2、配置安全审计平台

如果用对路由器进行安全审计,要进行简单的配置。最关键的配置还是设置IP地址。
安全审计系统安装后默认的IP是192.168.1.240,要采集网络中路由器的日志,必须要和路由器在同一网段网络要通。所以要将安全审计平台的IP进行修改。
修改IP

3、配置路由器

配置路由器的目的是要将路由器的审计日志发送到刚安装和配置好的安全审计平台。
登录到TP-Link路由器的配置管理界面,开启行为审计的上传用户上网行为,输入安全审计系统平台的地址,保存配置。
上报行为审计

同样将系统日志也配置报送到安全审计平台。
上报系统日志

将安全审计的日志也送到安全审计平台。
上报安全审计

4、日志分析与行为分析

配置完成后,我们再登录到安全审计系统,就可以看到审计日志都送到系统了可以做相应的审计了。
可以看到那个IP什么时候访问了什么,同时也看到了前面我们在路由器的的访问控制也生效了,有效的阻止了企图访问bilibili.com的IP。
访问控制效果

在行为分析中可以看到用户受管控的排行
行为分析

也可以看到具体哪些IP受管控的次数
受管控的次数

以及具体被管控的原因
具体被管控的原因

5、利用AI进行审计与分析

现在AI大模型已经很强大了,我们可以将安全审计系统的日志导出来给大模型进行审计与分析。发现其他的一些人工审计发现不了的异常。如发现用户的行为特征及偏离平时访问基线的一些访问等。
我们将安全审计系统的审计日志导出为Excel,将Excel通过coze空间进行审计分析,可以生成比较完整的审计报告。
coze空间进行审计分析

可以看到coze空间生成的审计报告还是比较全面美观。
完整的审计报告

也可以用WPS自带的AI数据分析,可以看出对用户的异常行为的分析还是比较专业和详细的。
WPSAI分析报告


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

使用GeminiBalance让Gemini免费到底

发表于 2025-07-10 | 更新于: 2025-12-04 | 分类于 技术 | | 阅读次数:
字数统计: 1.6k | 阅读时长 ≈ 6

Gemini是目前好用的免费大模型,通过在 Google AI Studio 获取 API 密钥,每位开发者可以获得慷慨的免费使用额度。这包括每天 300,000 个 Token(包括提示和响应)以及每分钟 60 个请求的速率限制 。虽然免费但有一定的额度,不过通过申请不同的账号可以申请获取多个API密钥。Gemini Balance 就是这么一款工具,允许您管理多个 Gemini API Key,这样就可以使Gemini免费额度翻N倍。

Gemini Balance 是一个基于 Python FastAPI 构建的应用程序,旨在提供 Google Gemini API 的代理和负载均衡功能。它允许您管理多个 Gemini API Key,并通过简单的配置实现 Key 的轮询、认证、模型过滤和状态监控。此外,项目还集成了图像生成和多种图床上传功能,并支持 OpenAI API 格式的代理。

要感谢snailyp大佬开发的gemini-balance 项目地址:https://github.com/snailyp/gemini-balance
《国内免代理免费使用Gemini大模型实战》介绍了如何将Gamini中转到国内能够使用,本文介绍如何使用免费的ClawCloud容器化部署gemini-balance配置多个Gemini API Key,不仅在国内可以使用还可以让Gemini免费到底!

一、申请注册多个Gemini API Key

注册google账号就可以免费申请Gemini API密钥。

申请地址 https://aistudio.google.com/

申请密钥

有了Gemini API密钥后就可以调用API使用Gemini 大模型的能力了。

注册多个google账号就可以申请多个Gemini API 密钥。

二、注册ClawCloud账号

ClawCloud是一个成立于2024年的云计算平台,总部位于新加坡,ClawCloud旨在简化技术栈的复杂性,帮助用户从编码到生产的整个过程只需几次点击即可完成 。它提供免费的每月5美元GitHub验证赠金,无需信用卡即可开始使用,并承诺在1分钟内完成设置 。

ClawCloud 在国内可以直接访问,Github 账户注册时间超过 180天就有每个月5美元的赠送额度,足够支撑我们部署gemini-balance的应用了。

在这里插入图片描述

点击 Github 登录选择github登录

进入 Github 登录界面后,输入账户名、密码,随后点击 Sign in。
Github登录

登录以后就在用户中心Account Center就可以看到每个月赠送的额度,如果有使用还可以看到目前使用的额度。

ClawCloud的用户中心

三、通过 ClawCloud Run 部署gemini-balance

gemini-balance官方有详细的部署文档

https://gb-docs.snaily.top/guide/setup-clawcloud-sqlite.html

大家可以按照这个文档一步步部署

  1. 部署项目
  • 进入主界面后,点击左上角 Region,选择服务器地址。推荐选择 Singapore。选择完成后,网页会刷新,并在服务器地址前☑️。

选择服务器地址

  • 点击 App Launchpad。

选择App Lannchpad

  • 进入页面后,点击页面右上角 Create App,进入配置页面。

Create App

  • 进入配置页面后,按顺序填写信息(不熟悉项目名称的,请打开在线翻译)。
    • Application Name:为方便识别管理,建议填写本项目名字geminibalance
    • Image: Public
      • Image Name:ghcr.io/snailyp/gemini-balance:latest

在这里插入图片描述

- Usage:`Fixed`;
- Replicas:`1`
- CPU:`1`
- Memory:`512`

> 说明:1. 若登录账号只选择部署 1 个项目,则推荐上述最高免费配置。2.目前免费用户每月流量为 10g,超出部分 0.05 美元/g。可根据流量使用情况选择服务器配置。

在这里插入图片描述

- Network
    - Container Port:`8000`
    - Enable Internet:点选为`Access`状态

在这里插入图片描述

  • Advanced Configura
    • Environment Variables:点击 Add,随后粘贴以下变量。填写完成后点击 Add 完成配置。
1
2
3
4
5
DATABASE_TYPE=sqlite
SQLITE_DATABASE=default_db
API_KEYS=[""]
ALLOWED_TOKENS=[""]
AUTH_TOKEN=TZ=Asia/Shanghai

变量说明如下:

变量名 说明 格式及示例
API_KEYS Gemini API 密钥列表,用于负载均衡 [“your-gemini-api-key-1”,”your-gemini-api-key-2”]
ALLOWED_TOKENS 允许访问的 Token 列表 [“your-access-token-1”,”your-access-token-2”]
AUTH_TOKEN 【可选】超级管理员token,具有所有权限,不填默认使用 ALLOWED_TOKENS 的第一个 sk-123456

在这里插入图片描述

  • 添加完环境变量后,再按照下图设置storage

在这里插入图片描述

  • 返回页面最上方,点击 Deploy Application。弹窗提示Are you sure you want to deploy the application?选择 Yes。

在这里插入图片描述

  • 等待几秒后,跳转至状态界面。此时,请确认页面左上角显示 running。若显示为其他状态,请稍后片刻;仍未显示 running,请确认你配置选项是否正确。需要修改的,可点击页面右下角 Manage Network 选项修改参数,或删除该项目重新部署。

在这里插入图片描述

  • 将页面滚动到最下方,在 Network 选项卡中,查看右侧公网地址配置情况。一般情况下,显示 pending 表明还在处理当中,需要等待 2~5 分钟,直至pending 状态变为Available。 实际情况下, 2 分钟后即使公网地址前显示pending,亦可尝试在新的浏览器标签中打开该地址。若网页能正常显示本项目登录界面,则正常使用即可。若公网地址前的pending状态超过 10 分钟,且无法打开登录界面,原因可能是服务器过载,需要更长等待时间。建议换区或换服务商重新部署。

在这里插入图片描述

  • 设置自定义域名
  • 在cloudflare添加cname记录,如我希望域名为ggg.abc.xyz,cloudflare中这样设置,abc.xyz为托管在cloudflare域名
  • 在clawcloud这样设置,这样就可以自定义域名访问

在这里插入图片描述

四、使用gemini-balance监控配置页面

gemini-balance贴心的带了一个监控配置页面,在这个界面可以配置多个Gemimi API 也可以监控Gemini API的调用情况。

  1. gemini-balance监控页面配置
    • 复制项目公网访问地址后,在浏览器中打开。随后进入登录界面,输入密码即可进入。(如果没有更改配置,密码是your-access-token-1)

gemini-balance监控页面登录

登录后可以进行相应的配置如添加更多的Gemini API Key
配置界面

也可以监控Gemini API Key的调用情况

监控Gemini API Key的调用情况

五、在 cherry studio使用GeminiBalance

以 cherry studio 为例
1. 添加提供商。
- 提供商名称:任意填写

在这里插入图片描述

2. 配置
    - API 密钥:填写监控面板“API 密钥”选项卡中的“允许的令牌列表”。
    - API 地址:填写 ClawCloud 中的公网访问地址。注意结尾不要出现“/”。

在这里插入图片描述

3. 添加模型
4. 点击“管理”,添加模型。

在这里插入图片描述

至此,部署完成。

最后看调用效果
在这里插入图片描述


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

国内免代理免费使用Gemini大模型实战

发表于 2025-07-07 | 更新于: 2025-12-04 | 分类于 技术 | | 阅读次数:
字数统计: 1.3k | 阅读时长 ≈ 4

谷歌的Gemini API 为开发者提供了具体的免费额度,允许将Gemini模型集成到自己的应用程序中。
模型可访问范围:开发者可以免费调用 Gemini 2.5 Pro 模型及其轻量级版本 Gemini 2.5 Flash 。
标准免费额度:通过在 Google AI Studio 获取 API 密钥,每位开发者可以获得慷慨的免费使用额度。这包括每天 300,000 个 Token(包括提示和响应)以及每分钟 60 个请求的速率限制 。

一、免费申请Gemini API密钥

注册google账号就可以免费申请Gemini API密钥。
申请地址 https://aistudio.google.com/
申请密钥

有了Gemini API密钥后就可以调用API使用Gemini 大模型的能力了。
国内上网环境无法直接使用Gemini API,本文介绍能够免代理使用Gemini的方法。

二、使用openai-gemini

1、在github上找到openai-gemini

openai-gemini 是一个 serverless 的代理项目,用于将 Gemini API 转换为 OpenAI API 。
项目地址:https://github.com/PublicAffairs/openai-gemini
Gemini API 是免费的, 但有许多工具专门与 OpenAI API 一起使用。该项目可以将Gemini API 转换为 OpenAI API ,并且通过serverless进行调用。我们可以找个国内可以访问的免费serverless服务进行中转满足国内调用使用需求。
这里介绍将openai-gemini部署到Netlify
Netlify 是一个领先的 Web 开发平台,它专门为构建、部署和管理现代高性能网站和 Web 应用程序提供了一站式解决方案。Netlify 的核心理念是支持 Jamstack 架构(JavaScript, APIs, Markup),该架构强调将网站内容预构建为静态文件,并通过 CDN 快速分发,然后通过 API 调用动态数据和执行后端逻辑。

2、将openai-gemini部署到Netlify

Deploy to Netlify

找到”Deploy to Netlify” 点击就可以一键部署到Netlify,部署完成后Netlify会自动分配一个地址用于访问刚部署的openai-gemini的serverless服务。并且这个地址是在过国内可以正常访问的。
project overview

3、在Cherry Studio中配置和使用gemini的模型

1)在Cherry Studio中配置gemini API

通过Netlify中转访问gemini API,我们可以直接在Cherry Studio中配置通过Netlify中转访问gemini API
配置API地址为通过netlify中转的地址
API密钥为google gemini 的API Key
模型可以配置你想使用的模型 如:gemini-2.5-pro
Cherry Studio中配置API key

2)在Cherry Studio中使用gemini 的模型

在Cherry Studio中选择刚配置的gemini-2.5-pro并和它对话,可以看到gemini-2.5-pro可以流畅的输出。
在cherry Studio中使用gemini

4、在Dify中配置和使用gemini的模型

1) 在Dify中配置gemini API

通过openai-gemini将 Gemini API 转换为了 OpenAI API ,所以在dify中应该使用“OpenAI-API-compatible”的插件来配置模型。
OpenAI插件

如果没有安装“OpenAI-API-compatible”插件需先安装。在模型供应商中选择“OpenAI-API-compatible”,点击“添加模型”。
配置API地址为通过netlify中转的地址
API密钥为google gemini 的API Key
模型可以配置你想使用的模型 如:gemini 2.5 pro
配置API key

2)在Dify中使用gemini的模型

在Dify中建一个对话应用,选择刚配置好的 Gemini 2.5 Pro 模型进行对话,可以看到对话成功的调用了gemini API使用Gemini 2.5 Pro的模型进行了回复。
在Dify中使用

5、如果自己有域名可以用自己的域名来中转netlify的地址进行访问

1) 在自己的DNS中配置域名解析到netlify的地址

以我的cloud flare域名服务配置为例,在DNS中配置一个netlifygemini的子域名,解析到目标为开始netlify给的服务地址。
配置子域名

2)在netlify中配置子域名

在netlify中可以配置自己的域名对gemini API进行访问。在netlify的项目中找到“domain you already own”
在netlify中配置自己的域名

在自定义域名配置界面,输入自己的子域名,它会给出Host和Value的值,这两个值需要在自己的DNS域名服务器中配置校验。
效验信息

接下来需要在自己的DNS服务中进行配置,我以自己的cloud flare域名服务配置为例,配置如下:

3)在 Cloudflare 中添加TXT记录用于校验

  1. 登录你的 Cloudflare 账户,选择我的域名doai8.dpdns.org。
  2. 进入左侧的 “DNS” 菜单。
  3. 点击 “Add record” (添加记录) 按钮。
  4. 根据下面的表格,准确填写每一个字段:
Cloudflare 字段 你需要填写的内容 (从 Netlify 截图复制)
Type (类型) TXT
Name (名称) netlify-challenge
Content (内容) 4f*****062b
TTL 保持默认的 Auto 即可

添加TXT记录

4)在netify中进行验证,验证通过就可以用自己的域名访问了

在netify中进行验证,验证通过就可以用自己的域名访问了,在图中可以看到自己的子域名和netlify给的子域名。两个域名都可以用,自己的子域名的好处就是自己容易记忆。
自定义域名配好

5)用自定义域名进行gemini API接口的测试

在Cherry Studio中将API地址配置程自定义域名的地址
配置自定义域名地址
可以看到和gemini 2.5 pro 对话同样也很丝滑。
测试


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

飞牛NAS本地化部署dify打造私有LLMOps平台

发表于 2025-06-14 | 更新于: 2025-12-04 | 分类于 技术 | | 阅读次数:
字数统计: 991 | 阅读时长 ≈ 3

作为一名程序员,在AI蓬勃发展的时代,一定要拥抱AI。Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

NAS作为私有化的个人数据中心,基本保持不停机的状态并且功耗小,比较适合作为私有化的开发平台载体。本文介绍如何在家庭飞牛NAS上本地化部署dify打造属于自己的私有化LLMOps平台,可以随时随地的通过Dify来构建自己的AI应用。

一、准备工作

1、环境介绍

我的NAS设备为零刻ME mini全闪小主机,CPU intel N200,内存12G,装了fnOS作为NAS用。这个配置如果仅仅只是存存相片、文件等还是有点过剩了,所以为了充分发挥迷你主机的效用决定把它打造为私有的LLMOps平台。

NAS的硬件配置

2、打开飞牛OS的SSH登录

登录到飞牛OS,在“系统设置”中找到“SSH”,打开SSH功能

打开SSH

3、通过SSH客户端连上NAS主机

打开SSH后就可以通过SSH的客户端工具连到fnOS

SSH连接主机

二、在飞牛NAS上安装Dify

1、找到Dify的安装源

在github或gitee上找到dify的项目地址
https://github.com/langgenius/dify/
https://gitee.com/dify_ai/dify
在国内访问github比较慢,可以访问gitee上的difyi项目地址。
这里有安装Dify的硬件要求和安装步骤。

gitee的dify项目

2、在飞牛NAS上创建存储目录

在飞牛NAS上创建一个用户clone和安装dify的目录

NAS上创建Dify目录
右键点击dify文件夹,点击“详细信息”。

查看目录详情

在详细信息中找到“复制原始路径”,这里复制的原始路径就是该文件夹在fnOS操作系统的实际路径。

找到实际路径

3、开始安装Dify

安装Dify需要docker环境,fnOS本身就已经安装好了docker环境,所以可以直接clone后进行安装
通过sudo -i 切换到 root 用户,进入到开始复制的原始路径。

切换root用户

通过git clone https://gitee.com/dify_ai/dify 命令clone项目

clone项目

进入到dify下的docker目录,将.env.example 复制成.env文件

1
2
cd dify/docker
cp .env.example .env

.env文件中配置的是dify的一些环境变量,dify默认的web端口是80,为了避免80端口冲突,我们把dify的默认端口改成8080,修改.env的配置文件,将docker输出的Nginx端口改成8080,Nginx的SSL端口改成8443。

1
2
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8080

修改端口

然后执行 docker compose up -d 就可以完成dify的安装

安装dify

安装完成后通过NAS的内网IP就可以访问到dify的初始化界面
http://192.168.0.18:8080/install
通过简单的配置,配置用户名、口令就可以正式使用dify了。

内网访问dify

三、设置外网访问

为了随时随地的访问和使用dify我们要对dify进行端口映射,使用nas的ddns来进行外网访问。

1、外网端口映射

在路由器上添加一条映射规则,将内网的8080端口映射到外网的某个端口上。

外网端口映射

2、在飞牛nas上进行ddns配置

如有域名就可以配置阿里云或Cloudflare的ddns服务

DDNS配置

这样就可以通过域名+端口直接访问NAS上的dify应用,随时随地构建和调试自己的AI应用了。

外网访问


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

什么是RACI矩阵,应用在什么场景?

发表于 2025-04-08 | 更新于: 2025-12-04 | 分类于 管理 , 项目管理 | | 阅读次数:
字数统计: 1.5k | 阅读时长 ≈ 5

一、什么是RACI

RACI矩阵是一种用于明确项目或任务中角色与责任的管理工具,通过定义不同人员在任务中的参与程度来避免职责不清的问题。以下是其核心要点:

  1. ‌RACI的含义‌
  • ‌R(Responsible)执行者‌:直接完成任务的具体负责人。
  • ‌A(Accountable)批准者‌:对任务结果负最终责任,通常为决策者。
  • ‌C(Consulted)被咨询者‌:提供专业意见的专家或利益相关方。
  • ‌I(Informed)被通知者‌:需知悉进展但不直接参与的人员。
  1. ‌典型应用场景‌
  • ‌跨部门协作项目‌:例如新产品发布,需明确市场、研发、生产等部门的职责。
  • ‌复杂流程优化‌:如企业ERP系统实施,区分流程设计、数据迁移等任务的责任人。
  • ‌危机管理‌:如安全事故处理时明确指挥、执行、沟通等角色。
  • ‌日常运营‌:适用于周期性工作(如财务审计)的职责划分。
  1. ‌使用案例‌
  • ‌软件开发项目‌:
任务 项目经理(A) 开发团队(R) 测试组(R) 客户(C) 法务(I)
需求确认 A R - C I
代码审查 R C - -
  1. 构建要点‌
  • 每个任务确保‌仅1个A角色‌,避免多头领导
  • 避免R角色过多导致执行分散(如单个任务超过3个R)
  • 关键干系人必须纳入C或I,防止遗漏重要意见
  1. 常见误区‌
  • 混淆A和R角色(如误将部门领导设为所有任务的A)
  • 过度咨询(C角色过多导致决策延迟)
  • 忽略变更管理(未随项目进展更新矩阵)

二、如何适用RACI矩阵

结合不同场景的关键步骤与操作要点:

  1. 前期准备‌

    • 分解任务清单‌
      基于项目目标,将工作拆解为具体任务(如软件开发中的需求收集、测试、部署等)‌。
      示例:在IT系统迁移项目中,任务可拆分为“制定迁移方案”“数据备份验证”等‌。
    • 识别参与角色‌
      列出所有相关角色或部门(如项目经理、开发团队、法务部等),避免仅使用个人姓名,需标注岗位或职能‌。
  2. 构建矩阵‌

    • 分配RACI角色‌
      ○ 每个任务需指定 ‌1个A角色‌(唯一责任人)和若干R/C/I角色‌。
      示例:在需求确认阶段,产品经理为A,开发团队为R,法务部为I‌。
      ○ 避免单任务分配过多R角色(建议≤3个),防止执行分散‌。
    • 关键逻辑验证‌
      ○ ‌横向检查‌:每项任务需至少包含R和A角色,确保无遗漏‌。
      ○ ‌纵向检查‌:单个角色名下任务量需合理,避免过度集中(如某成员承担过多R角色)‌。
  3. 应用中的关键技巧‌

    • 与项目工具结合‌
      ○ 将RACI矩阵与甘特图、WBS(工作分解结构)联动,识别关键路径任务并优先分配资源‌。
      示例:在部署阶段,明确运维团队为R角色并与甘特图中的时间节点对齐‌。
    • 动态更新机制‌
      ○ 项目变更时同步调整矩阵(如新增任务或角色变更)‌。
      ○ 定期向I角色推送进展(如周报同步),向C角色发起咨询(如需求评审会)‌。
  4. 常见问题与规避策略‌

问题类型 解决方案
‌角色冲突‌(多个A) 重新界定任务边界,仅保留1个A角色‌。
‌沟通低效‌(C/I过多) 精简咨询范围(如仅核心专家参与C角色),减少非必要通知‌。
‌ 责任模糊‌(无明确R) 通过工作分解细化任务颗粒度,确保每个子任务均有R角色‌。
  1. 扩展应用场景‌
  • ‌RASCI矩阵‌:在RACI基础上增加S(Support)角色,标注辅助支持团队(如IT部门协助数据迁移)‌15。
  • ‌多层级矩阵‌:针对复杂项目分层设计(如战略级、执行级),分别分配责任‌7。

总结:核心操作流程
1.‌分解任务 → 2. 定义角色 → 3. 填充矩阵 → 4. 验证逻辑 → 5. 动态维护‌
示例:某市政工程通过RACI矩阵将环评报告责任唯一分配给环保机构(A角色),施工执行由承包商(R角色)承担,社区代表仅需知悉(I角色)‌。
通过结构化分配与持续优化,RACI矩阵可显著提升跨团队协作效率,减少责任争议‌。

三、应用案例

  1. IT系统升级项目‌
    ‌背景‌:某企业需将本地服务器迁移至云端,涉及IT部、安全部、财务部及外部供应商。
    ‌任务分解与角色分配‌:
任务 IT经理 (A) 运维团队 (R) 安全部 (C) 财务部 (I) 供应商 (R)
制定迁移方案 A R C I C
数据备份与验证 I R C - R
云环境安全测试 - C A I R

‌关键点‌:

  • 安全部需深度参与方案设计和测试(C/A角色),避免安全漏洞;
  • 供应商负责具体执行(R),但需接受IT经理的最终审批(A)。
  1. 日常运维(IT支持团队)‌
    ‌背景‌:某公司IT部门处理日常故障,需明确一线支持、二线专家及管理层职责。
任务 IT主管 (A) 一线支持 (R) 二线专家 (C) 用户部门 (I)
故障初步诊断 - R - I
复杂问题升级处理 I - R C
故障解决率报告 A C - I

‌注意事项‌:

  • 一线支持直接处理简单问题(R),二线专家解决技术难点(R);
  • 用户部门仅需知悉进展(I),避免干扰技术处理。

从以上看出,RACI矩阵适用于‌任何需要明确角色分工的场景‌,尤其适合跨职能、多利益相关方的复杂任务。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

什么是互联网暴露面?什么是攻击面?暴露面与攻击面有什么区别?

发表于 2025-02-24 | 更新于: 2025-12-04 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 911 | 阅读时长 ≈ 3

一、定义与核心概念

1. ‌互联网暴露面‌

  • 定义:指组织在互联网上公开可访问的数字化资产和服务,如服务器、开放端口、API、网站、云服务等。

暴露面指网络系统中对外界开放的可见部分,包括公开的接口、网络端口、服务或应用程序等。例如Web服务、API、数据库端口等,这些资源可直接被外部访问或识别‌。暴露面的大小直接影响潜在攻击机会‌。

  • 核心特点:

    • 可见性:能被外部扫描或探测到(如通过IP、域名、端口)。
    • 入口点:是外部与内部系统交互的桥梁(如登录页面、文件上传接口)。
  • 示例:

    • 公网IP地址、开放的SSH端口(22)、公开的Web应用、未加密的HTTP服务。

2. ‌攻击面

  • 定义:指所有可能被攻击者利用的潜在漏洞和风险点,涵盖技术、人员、流程等多个维度。‌

攻击面指攻击者可能利用的所有潜在入口点和攻击路径,不仅包含暴露面中的可见部分,还涵盖漏洞、错误配置、权限问题、社会工程等动态风险因素。攻击面越大,系统被入侵的概率越高‌。

  • 核心特点:

    • 全面性:不仅包括暴露面,还包含内部漏洞(如配置错误、弱密码、员工安全意识不足)。
    • 动态性:随系统更新、新漏洞披露、业务扩展而变化。
  • 示例:

    • 暴露面中的漏洞(如SQL注入)、内部数据库弱口令、员工易受钓鱼攻击、过时的内部软件版本。

二、区别与关联

关系:从定义上看,攻击面包含暴露面,并且更加广泛。

暴露面与攻击面的关系

区别:

维度‌ ‌暴露面‌ ‌攻击面‌
范围‌ 仅包含对外可见的开放部分‌ 包含所有潜在攻击路径(含暴露面及内部系统、人为因素等)‌
‌动态性‌ 相对静态,与系统配置直接相关‌ 动态变化,受漏洞、人为因素等影响‌
关注点‌ 资源对外暴露的“可见性”‌,可见性和可访问性 攻击者可利用的“漏洞总和”‌,潜在漏洞和攻击路径
防御重点 减少不必要的公开资产 全面风险管理(技术+管理)
管理策略 定期扫描并关闭不必要的服务,使用防火墙限制访问,最小化公开资产。 漏洞管理、员工培训、权限控制、持续监控(如日志审计、入侵检测)。
示例 如:公司官网(example.com)开放了80和443端口,允许用户访问。 若官网存在未修复的XSS漏洞(技术风险),且管理员使用弱密码(人为风险),两者均属于攻击面。

三、防护侧重点

1. ‌暴露面管理‌

  • ‌原则‌:遵循最小权限,仅开放必要端口或服务‌。
  • ‌措施‌:网络隔离、访问控制、定期审查暴露资源‌。

2. ‌攻击面管理‌

  • ‌原则‌:降低漏洞利用可能性,覆盖技术、流程、人为因素‌。
  • ‌措施‌:渗透测试、安全评估、漏洞修复、权限管控‌。

四、总结

‌暴露面是攻击面的子集‌,两者区别在于:暴露面聚焦“对外可见性”,攻击面覆盖“可利用性”;前者是静态防御的基础,后者需动态应对综合风险‌。缩小暴露面可降低被攻击概率,而减少攻击面则能全面降低风险。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

一文搞懂什么是攻击面管理(ASM)

发表于 2025-02-19 | 更新于: 2025-12-04 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 3.3k | 阅读时长 ≈ 11

攻击面是网络安全防御的“第一道防线”,其管理能力直接决定企业的安全基线。

攻击面管理(Attack Surface Management,ASM)是一种新兴的网络安全策略和实践,旨在通过持续发现、分析、监控和评估组织内外部的所有资产,识别并管理潜在的安全风险。其核心是从攻击者的视角出发,主动识别企业网络资产的攻击面及脆弱性,包括已知和未知的资产、漏洞、配置缺陷以及泄露信息等。

一、什么是攻击面

要了解攻击面管理(ASM)首先需要了解什么是攻击面。攻击面指的是所有可能被攻击者利用的入口点,比如硬件、软件、云服务等等。攻击面(Attack Surface) 是网络安全领域的核心概念,指一个系统、网络或组织中可能被攻击者利用的所有潜在入口点和漏洞的集合。简单来说,它是攻击者可能发起攻击的“可触及范围”,范围越大,暴露的风险越高,防御难度也越大。

攻击面的核心组成部分

攻击面通常由以下要素构成:

  1. 技术资产
    ○ 硬件:服务器、路由器、IoT设备、摄像头等。
    ○ 软件:操作系统、应用程序、API、开源组件等。
    ○ 网络服务:开放的端口(如HTTP 80端口、SSH 22端口)、云服务(如AWS S3存储桶)、域名等。
  2. 配置缺陷
    ○ 默认密码未修改、权限设置错误、未加密的通信协议(如HTTP)、冗余服务(如未关闭的测试环境)等。
  3. 数据暴露
    ○ 敏感数据泄露(如数据库备份文件被公开)、代码仓库中的密钥硬编码、日志文件中的用户信息等。
  4. 人为因素
    ○ 员工的安全意识薄弱(如点击钓鱼链接)、第三方供应商的访问权限、社会工程攻击的潜在目标。
  5. 供应链风险
    ○ 依赖的第三方软件漏洞(如Log4j)、开源库的未更新版本、外包开发引入的后门等。

攻击面扩大的原因

  1. 数字化转型:云服务、微服务架构、远程办公导致资产分散化。
  2. 影子IT:员工私自部署未授权的应用或设备(如个人NAS)。
  3. 复杂供应链:第三方服务、开源组件的依赖增加。
  4. 自动化攻击工具:攻击者可快速扫描全网暴露资产(如Shodan搜索引擎)

二、攻击面的分类

根据视角和范围,攻击面可分为以下两类:

  1. 外部攻击面(External Attack Surface)
    ○ 定义:暴露在互联网上,能被外部攻击者直接访问的资产和漏洞。
    ○ 典型示例:
    ■ 面向公网的Web应用、API接口。
    ■ 云存储桶的错误配置(如公开可读)。
    ■ 员工在GitHub意外上传的数据库凭证。
    ○ 管理工具:EASM(外部攻击面管理)。
  2. 内部攻击面(Internal Attack Surface)
    ○ 定义:仅限内部网络访问,但可能被已渗透的攻击者横向利用的弱点。
    ○ 典型示例:
    ■ 内网未修复的漏洞(如永恒之蓝漏洞)。
    ■ 域控制器权限滥用、共享文件夹过度开放。
    ■ 内部员工滥用权限窃取数据。
    ○ 管理工具:CAASM(网络资产攻击面管理)、内部漏洞扫描器。

三、网络资产攻击面管理(CAASM)

网络资产攻击面管理(CAASM)全称(Cyber Asset Attack Surface Management, CAASM)是一种网络安全技术或方法论,旨在帮助组织全面发现、识别、监控和管理其数字化资产(包括硬件、软件、云服务、API、物联网设备等)的潜在攻击面,从而降低安全风险并提升防御能力。CAASM通过整合现有安全工具(如漏洞扫描器、EDR、CMDB等)的数据,构建统一的资产视图,覆盖内部网络、云环境、第三方服务等所有资产。其核心目标是解决资产分散、数据孤岛和未知资产的问题,帮助安全团队识别安全控制中的漏洞与差距,并协调修复。

CAASM 的核心功能

  1. 自动化资产发现
    ○ 通过主动扫描、被动流量分析、API集成等方式,自动发现企业内外的所有资产,包括未授权的“影子IT”(如员工私建的云实例、未知设备)。
    ○ 覆盖范围包括本地基础设施、云环境(AWS、Azure等)、第三方服务、物联网设备等。
  2. 资产分类与优先级排序
    ○ 根据资产类型(服务器、数据库、API)、业务重要性、暴露程度(如是否面向公网)等,对资产进行分类和风险评估。
    ○ 帮助安全团队优先处理高风险资产(如暴露在互联网的敏感数据库)。
  3. 攻击面可视化与实时监控
    ○ 通过仪表盘展示所有资产的拓扑关系和暴露路径,直观呈现攻击面。
    ○ 实时监控资产状态变化(如新开放的端口、新增的云服务),及时发现异常。
  4. 与现有工具集成
    ○ 整合漏洞扫描工具(如Nessus)、EDR(端点检测与响应)、防火墙日志等,形成统一的资产视图。
    ○ 利用API打通数据孤岛,避免不同工具间的信息割裂。
  5. 风险评估与缓解建议
    ○ 结合漏洞数据、威胁情报和资产上下文,生成风险评分。
    ○ 提供修复建议(如关闭不必要的端口、更新补丁)或临时缓解措施(如配置防火墙规则)。

网络资产攻击面管理(CAASM)与传统资产管理的区别

传统资产管理工具(如CMDB)通常依赖手动录入或静态数据,且缺乏对攻击面的动态分析。而CAASM的特点包括:
● 主动发现:自动识别资产,减少人为遗漏。
● 攻击面视角:不仅记录资产,还分析其暴露程度和潜在风险。
● 实时性:持续监控变化,适应动态环境(如云资源的弹性扩展)。
● 威胁关联:结合漏洞、配置错误和威胁情报进行综合分析。

四、外部攻击面管理(EASM)

外部攻击面管理(External Attack Surface Management, EASM) 是一种以攻击者视角为核心的安全管理方法,旨在持续发现、监控和评估组织暴露在互联网上的所有数字资产及其潜在风险。这些资产包括服务器、域名、云服务、API、物联网设备等,同时也涵盖影子资产(如未授权的云实例)、错误配置、开放端口、未修复漏洞以及敏感数据泄露等问题。EASM的关键在于通过外部视角模拟攻击者的行为,识别可能被利用的薄弱点,从而提前修复风险。

外部攻击面管理(EASM)的核心功能

外部攻击面管理(EASM)的核心功能主要包括以下几个方面:

  1. 泛资产发现与监控
    通过分布式探测引擎,持续扫描和监控外部环境,识别和编目从互联网可访问的数字资产,包括域名、IP地址、网页应用程序、API、云服务、影子资产、仿冒资产等。这些功能为企业提供了全面的资产暴露面视图。
  2. 攻击触点识别与评估
    在攻防视角下,依托指纹库和情报库,对发现的资产进行弱点检测,包括漏洞扫描、弱口令检测、敏感数据识别等。同时,结合供应链情报和攻防情报,评估资产被利用的风险。
  3. 数据泄露监测
    覆盖全网(包括暗网、深网、代码托管平台、网盘、文库等)范围,监测敏感数据泄露情况,及时发现并处理潜在的数据泄露风险。
  4. 攻击面分析
    基于弱点检测结果,综合分析资产的风险,识别可能的攻击路径和风险等级。评估一旦发生安全事件,业务可能受影响的范围,并提供风险收敛的优先级建议。
  5. 风险评估与预警
    评估外部攻击面相关的风险,并根据威胁的潜在影响和可能性进行优先级排序。提供7×24小时的风险预警服务,包括暴露面变动提醒、数据泄露监测、网站篡改和黑链预警等。
  6. 持续监控与适应
    定期对外部攻击面进行实时扫描和监控,结合威胁情报源和漏洞管理,检测新的或变化的资产、漏洞和威胁,并根据这些变化调整安全策略。

五、网络资产攻击面管理(CAASM)与外部攻击面管理(EASM)的联系与区别

EASM与CAASM的联系

  1. 共同目标:两者均属于攻击面管理(ASM)的核心组成部分,旨在缩小攻击面、降低安全风险。
  2. 互补性:EASM提供外部视角的资产发现和风险分析,而CAASM整合内外资产数据,形成全局视图。例如,EASM发现的外部暴露资产可输入到CAASM系统中进行关联分析。
  3. 数据整合:CAASM依赖EASM和DRPS(数字风险保护服务)的数据源,实现更全面的资产清单管理。

EASM与CAASM的区别

维度 EASM CAASM
视角 攻击者视角(外部“黑盒”扫描) 防御者视角(内部“白盒”数据整合)
覆盖范围 互联网暴露的资产(如云服务、域名、第三方应用) 内外部所有资产(包括网络设备、服务器、API、IoT设备等)
技术手段 依赖网络空间测绘、主动扫描、暗网监控 通过API与现有工具集成(如CMDB、漏洞扫描器),聚合多源数据
核心功能 资产发现、漏洞优先级排序、数据泄露检测、供应链风险评估 资产清点、数据关联分析、安全控制差距识别、自动化修复建议
适用场景 暴露在公网的资产风险管理(如云服务、子公司资产) 复杂混合环境(如多云、本地数据中心)的资产可见性与合规管理
数据来源 外部扫描、公开网络、暗网情报 内部系统日志、IT工具接口、CMDB数据库

典型应用场景对比

  1. EASM:
    ○ 云安全治理:发现公有云上的错误配置或未授权实例。
    ○ 供应链风险:评估第三方服务商的暴露面,如合作伙伴的漏洞代码。
    ○ 敏感数据泄露:监控暗网或公共平台(如GitHub)上的数据泄露。
  2. CAASM:
    ○ 影子资产管理:通过整合EDR、防火墙日志等,发现未登记的内部设备。
    ○ 漏洞优先级排序:结合资产业务价值与漏洞严重性,优化修复策略。
    ○ 合规性报告:生成统一的资产与安全控制报告,满足ISO 27001等合规要求。

● EASM更强调从外部攻击者的角度发现风险,适用于防御边界模糊的互联网暴露场景。
● CAASM则聚焦于内部资产的全面可见性,解决复杂IT环境下的数据孤岛问题。
● 协同作用:在实际应用中,两者需结合使用。例如,EASM发现的外部风险需通过CAASM与内部资产关联分析,形成闭环管理。

未来,随着攻击面管理技术的成熟,EASM与CAASM可能会进一步融合到统一平台中,实现更高效的风险收敛。

六、攻击面管理的优势与应用场景

随着技术的发展,攻击面正从传统IT向云、物联网、供应链等方向快速扩展,企业需借助自动化工具(如EASM、CAASM)和系统化策略,实现攻击面的持续收敛与风险控制。

攻击面管理的优势

● 主动防御:从传统的被动防御模式转变为积极主动地发现和管理潜在风险。
● 全面覆盖:不仅关注已知资产,还能发现未知的影子资产和泄露信息。
● 动态适应:能够适应云计算、物联网等复杂环境,并与现有安全工具(如SOC、SIEM)集成。
● 风险量化:提供更精细的风险评估和量化功能,帮助企业制定有效的安全策略。

应用场景

攻击面管理适用于多种场景,包括但不限于:
● 企业数字化转型:应对云计算、物联网等新技术带来的复杂攻击面。
● 供应链安全:评估和管理供应商基础设施中的安全风险。
● 安全运营:与安全运营中心(SOC)结合,提升整体安全管理水平。

随着技术的不断发展,攻击面管理正朝着自动化、智能化、云原生化的方向发展,并与企业的业务风险管理流程紧密结合。


博客文章:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

<123…22>
XieJava

XieJava

217 日志
11 分类
27 标签
RSS
GitHub
友情链接
  • 爱分享读书
  • CSDN
  • 豆瓣
© 2025 XieJava | Site words total count: 438.2k

主题 — NexT.Muse
0%