当前位置: 首页 > 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.wxhsa.cn/company.asp?id=6613

相关文章:

  • kylin SP2安装mysql 8.0.41
  • SAP采购订单数据获取
  • get和post如何理解
  • me and my girlfriend WP复盘
  • 顺序表
  • 能源管理的数字神经:MyEMS如何重塑能效认知
  • 开源・数据・能效:MyEMS 如何成为能源管理革新的核心引擎
  • mysql回表,为什么你的查询总是慢半拍?
  • HMCL 3.6.17 Minecraft我的世界启动器
  • 用自带的Nginx为gitlab做白名单
  • XHR/Fetch请求介绍与安全测试
  • 能流新智:MyEMS与开源时代的能源感知
  • ​​普科科技罗氏线圈应用指南:精准掌控电流测量的艺术​​
  • go mod基础
  • go 变量作用域
  • Oracle笔记:测试update语句关联表扫描的次数
  • ​​电流互感器选型指南:以普科科技产品为例
  • .NET驾驭Word之力:玩转文本与格式
  • 读书笔记:白话解读位图索引:什么时候该用,什么时候千万别用?
  • 泰克CT-6交流电流探头测量原理
  • 结构体成员赋值问题
  • RepositoryItemGridLookUpEdit 使用 ok
  • wso2~系统端口总结
  • 故障处理:19C RAC改私网IP后重建集群时报网络找不到
  • 谈谈程序猿的职业方向
  • Flash Attention详解
  • eclipse插件调用保护后的jar包流程
  • 通义上线 FunAudio-ASR,噪声场景幻觉率降 70%;盒智科技推出 AI 口语练习陪伴设备 Lookee 丨日报
  • reLeetCode 热题 100-11 盛最多的谁 - MKT
  • Markdown语法学习