当前位置: 首页 > news >正文

Arkime:大规模开源网络分析与数据包捕获系统

Arkime:大规模开源网络分析与数据包捕获系统

项目描述

Arkime(前身为Moloch)是一个大规模、开源的网络数据包捕获和分析系统,专为处理现代网络环境中的高速流量而设计。该系统能够存储和索引标准PCAP格式的网络流量数据,提供快速的索引访问和直观的Web界面用于数据包浏览、搜索和导出。Arkime支持水平扩展,可以部署在多个系统上处理数十Gbps的流量。

Arkime保留了所有原始数据包,允许安全分析师使用Wireshark等标准工具进行深度分析,同时提供了强大的API接口用于程序化访问会话数据和PCAP文件。

功能特性

  • 大规模数据包捕获: 支持多线程处理和高吞吐量数据包捕获,可扩展至数十Gbps流量
  • 完整PCAP保留: 所有数据包以标准PCAP格式存储,兼容现有分析工具
  • 高效索引检索: 基于Elasticsearch/OpenSearch的元数据索引,实现快速搜索和查询
  • 丰富协议解析: 内置支持100+种网络协议解析,包括HTTP、DNS、TLS、SSH等
  • 实时流量监控: 提供实时网络流量可视化和会话分析功能
  • 灵活部署选项: 支持单机部署和分布式集群部署模式
  • 安全取证能力: 完整的会话重建和数据包导出功能,支持网络安全调查

安装指南

系统要求

  • Linux操作系统(推荐CentOS 7+或Ubuntu 18.04+)
  • Node.js 18或20版本
  • OpenSearch或Elasticsearch
  • 至少2-3GB内存(开发环境)

快速安装

# 使用easybutton-build.sh快速构建
./easybutton-build.sh# 安装依赖项
make check# 启动查看器
npm run viewer:test

详细安装步骤

  1. 安装OpenSearch/Elasticsearch
  2. 安装Node.js运行环境
  3. 运行构建脚本编译Arkime组件
  4. 配置网络接口和数据存储路径
  5. 启动捕获进程和Web界面

使用说明

基本使用

访问Web界面:http://localhost:8123

数据加载示例

# 加载测试数据
./easybutton-build.sh# 运行测试用例
make check# 启动开发模式查看器
npm run viewer:dev

API访问

Arkime提供完整的REST API接口用于程序化访问:

# 获取会话数据
curl http://localhost:8123/sessions.json# 下载PCAP文件
curl http://localhost:8123/api/session/[sessionId]/pcap

核心代码

数据包处理核心

/******************************************************************************/
/* packet.c  -- Functions for acquiring data */
#include "arkime.h"SUPPRESS_ALIGNMENT
LOCAL ArkimePacketRC arkime_packet_process(ArkimePacketBatch_t *batch, ArkimePacket_t *const packet, const uint8_t *data, int len)
{// 数据包基础验证和处理if (len < 20)return ARKIME_PACKET_CORRUPT;// 运行以太网回调处理return arkime_packet_run_ethernet_cb(batch, packet, data + 18, len - 18, ARKIME_ETHERTYPE_ETHER, "garland");
}

会话管理核心

/******************************************************************************/
/* session.c  -- Session functions */
LOCAL void arkime_session_init(ArkimeSession_t *session, const uint8_t *sessionId)
{// 初始化会话结构memset(session, 0, sizeof(ArkimeSession_t));memcpy(session->sessionId, sessionId, ARKIME_SESSIONID_LEN);// 初始化协议状态session->stopSaving = 0;session->midSave = 0;// 初始化数据统计session->databytes[0] = 0;session->databytes[1] = 0;
}

HTTP解析器实现

/******************************************************************************/
/* http.c  -- HTTP protocol parsing */
LOCAL int http_parser_callback(http_parser *parser, const char *at, size_t length)
{ArkimeSession_t *session = parser->data;// HTTP头部解析和处理switch (parser->type) {case HTTP_REQUEST:arkime_field_string_add(hostField, session, at, length, TRUE);break;case HTTP_RESPONSE:arkime_field_int_add(statuscodeField, session, parser->status_code);break;}return 0;
}

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

http://www.zskr.cn/news/6672.html

相关文章:

  • get和post如何理解
  • me and my girlfriend WP复盘
  • 顺序表
  • 开源・数据・能效:MyEMS 如何成为能源管理革新的核心引擎
  • HMCL 3.6.17 Minecraft我的世界启动器
  • go 变量作用域
  • ​​电流互感器选型指南:以普科科技产品为例
  • 读书笔记:白话解读位图索引:什么时候该用,什么时候千万别用?
  • RepositoryItemGridLookUpEdit 使用 ok
  • 谈谈程序猿的职业方向
  • reLeetCode 热题 100-11 盛最多的谁 - MKT
  • C# Avalonia 15- Animation- XamlAnimation
  • 域名购买方案
  • Anby_の模板题集
  • AI 编程的“最后一公里”:当强大的代码生成遇上模糊的需求
  • 使用bash脚本检测网站SSL证书是否过期 - sherlock
  • Python 2025:低代码开发与自动化运维的新纪元 - 教程
  • 一句话让AI帮你搞营销?火山引擎Data Agent说:这事儿可以的~
  • 网络安全反模式:无效工作生成器的根源与解决方案
  • Excel处理控件Aspose.Cells教程:如何将Excel区域转换为Python列表
  • LOJ #3835. 「IOI2022」千岛 题解
  • Ubuntu取消vim自动对齐
  • 中文医学基准测试题库数据集:28万条标准化JSON格式医师考试题目与临床案例分析,覆盖28个医学专业领域,用于医学AI模型训练、临床决策支持系统开发、医学知识问答系统构建、医学教育辅助工具优化
  • 函数计算的云上计费演进:从请求驱动到价值驱动,助力企业走向 AI 时代
  • Kubernetes概述与部署
  • 使用AI容器镜像部署Qwen大语言模型
  • 作业03
  • vs code运行Java遇到的输入问题
  • 关于数据跨境,你应该了解的合规难题有哪些?
  • 国内开发者如何选择代码管理平台?三大主流工具深度对比