网络安全网络IDS【免费下载链接】zeekZeek is a powerful network analysis framework that is much different from the typical IDS you may know.项目地址https://gitcode.com/gh_mirrors/ze/zeek点击查看免费下载本指南基于 Zeek 官方文档中Popular Customizations章节展开系统讲解 Zeek 社区中最常用的四类扩展方向通过 Community ID 流哈希与 GeoIP/ASN 查询增强日志信息、通过 Kafka 与 JSON 流式日志外送、通过长连接日志补齐检测短板以及借助 jemalloc profiling 定位内存问题。读完本文你将掌握每项功能的启用方式、配置要点、命令行验证手段并理解其底层实现原理与源码位置可直接照搬到自己的 Zeek 部署中。需要先说明的是本文涉及的多数扩展来自 Zeek 生态中的第三方包如 zeek-kafka、json-streaming-logs、zeek-long-connections、zeek-jemalloc-profilingZeek 官方团队并不为这些包提供支持与维护遇到 bug 或功能需求应直接联系对应包的维护者也可以到 Zeek Slack 的#packages频道或官方论坛向社区求助。下文会区分Zeek 原生内置功能与外部包便于你判断责任边界。Log Enrichment让日志携带更多上下文Community ID 流哈希**Community ID社区 ID**是一种将网络流flow的五元组信息稳定哈希为单一字符串的规范便于在不同安全工具Zeek、Suricata、ELK 等之间关联同一连接。自 Zeek 6.0 起Zeek 已原生内置 Community ID Flow Hashing 支持此前需要通过zeek-community-id包提供。注意外部zeek-community-id包目前仍可安装用于支持运行旧版本 Zeek 的部署。但该包提供的脚本与 Zeek 6.0 自带的脚本存在冲突——两者不能同时加载。如果你已升级到 6.0请直接使用内置支持。启用方式与效果加载以下两个脚本即可scripts/policy/protocols/conn/community-id-logging.zeek为Conn::Info记录追加community_id字段带有log属性会写入 conn.logscripts/policy/frameworks/notice/community-id.zeek为Notice::Info记录追加community_id字段且会自动加载上面的 conn 脚本。实际运行效果如下读取离线 pcap 并输出 JSON 格式的 conn.log$ zeek -r ./traces/get.pcap protocols/conn/community-id-logging LogAscii::use_jsonT $ jq conn.log { ts: 1362692526.869344, uid: CoqLmg1Ds5TE61szq1, id.orig_h: 141.142.228.5, id.orig_p: 59856, id.resp_h: 192.150.187.43, id.resp_p: 80, proto: tcp, ... community_id: 1:yvyB8h3dnggTZW0UEITWCst97w }示例中的get.pcap是本地 trace 文件若需自行获取测试样本可使用 doc/traces 目录下的get.trace下载脚本。直接调用内置函数Community ID 由内置函数community_id_v1计算签名如下见 src/communityid.biffunction community_id_v1(cid: conn_id, seed: count default0, do_base64: bool defaultT): stringcid连接标识符conn_id 记录seed16 位无符号哈希种子默认 0可用于自定义命名空间以避免与其他组织撞哈希do_base64是否对摘要做 Base64 编码默认开启输出更短。它既能在自定义脚本中使用也能直接在命令行上针对构造的 conn_id 求值$ zeek -e print community_id_v1([$orig_h141.142.228.5, $orig_p59856/tcp, $resp_h192.150.187.43, $resp_p80/tcp]) 1:yvyB8h3dnggTZW0UEITWCst97w这个输出与上面 conn.log 中的community_id完全一致说明 conn.log 中的字段就是对该连接c$id调用同一函数得到的。底层实现要点从 src/communityid.bif 的 C 段实现可以梳理出完整哈希流程协议归一Zeek 的传输协议别名与底层 IP 协议号并不总是一一对应代码针对 TCP/UDP 直接映射为IPPROTO_TCP/IPPROTO_UDP对 ICMP 则按 IPv4/IPv6 分别映射为IPPROTO_ICMP/IPPROTO_ICMPV6若协议未知TRANSPORT_UNKNOWN则直接采用记录中的协议号且此时不参与端口哈希SCTP 除外。单/双向 ICMP 判定通过ICMP4_counterpart/ICMP6_counterpart判断 ICMP 流是否为单向如 echo request 无对应 reply单向流同样不哈希端口。端点规范化为保证双向流哈希一致先按地址-端口规范序比较addr_port_canon_lt必要时交换源/目的地址与端口确保无论观察方向如何都得到同一 ID。SHA-1 摘要依次将种子2 字节、源/目的地址IPv4 为 4 字节、IPv6 为 16 字节、协议号、填充字节以及若有端口时源/目的端口送入 SHA-1最后按do_base64决定输出 Base64 还是十六进制字符串统一加1:版本前缀。可调参数在 community-id-logging.zeek 中CommunityID 模块导出两个 optionCommunityID::seed: count 0哈希种子可重定义CommunityID::do_base64: bool T是否做 Base64 编码。在 community-id.zeek 中还有一个运行时开关CommunityID::Notice::enabled: bool T控制 Notice 的 community_id 增强是否生效。关闭后community_id字段仍存在于 notice 日志中只是不被填充。notice 侧的填充逻辑通过hook Notice::notice实现从n$conn$conn读取连接记录若其中已存在community_id则复制到 notice 记录该值在new_connection事件中由 conn 脚本写入。地址地理定位与 AS 查询Zeek 支持 IP 地址地理定位GeoIP以及自治系统ASautonomous system查询。启用该功能需要满足两个前提编译期支持以libmaxminddb库及其开发头文件编译 Zeek。若你使用的是官方 Docker 镜像或二进制包则无需任何操作——它们已内置 GeoIP 支持运行时数据库在系统上安装对应的 MaxMind 数据库文件.mmdb。检查是否支持自 Zeek 6.2 起可用zeek-config --have-geoip检查或者直接执行一次地址查询$ zeek -e lookup_location(1.2.3.4) error in command line, line 1: Zeek was not configured for GeoIP support (lookup_location(1.2.3.4))出现上述错误即表示当前 Zeek 未编译 GeoIP 支持。源码编译时安装 libmaxminddb自行编译 Zeek 时需要在configure之前安装 libmaxminddb各平台安装命令如下RPM/RedHat 系 Linuxsudo yum install libmaxminddb-develDEB/Debian 系 Linuxsudo apt-get install libmaxminddb-devFreeBSDsudo pkg install libmaxminddbmacOS通过你常用的包管理工具安装Homebrew、MacPorts 或 FinkHomebrew 下包名为libmaxminddb。configure脚本的输出会明确提示是否成功定位到 libmaxminddb。如果库安装在非标准路径可用./configure --with-geoippath显式指定。安装与配置 GeoIP 数据库MaxMind 数据库以独立文件形式分发可在其官网注册账户后下载。数据库分三类城市级地理定位city-level、国家级地理定位country-level、IP 到 AS 映射含 AS 号与所属组织。下载后放到文件系统的固定位置若使用自动化工具或系统包安装路径可能已被指定如/usr/share/GeoIP。Zeek 提供三种配置数据库访问的方式可任选其一方式一通过脚本变量指定路径与文件名。设置mmdb_dir变量默认未设置指向数据库所在目录Zeek 默认按GeoLite2-City.mmdb、GeoLite2-Country.mmdb、GeoLite2-ASN.mmdb三个文件名查找。自 Zeek 6.2 起可用mmdb_city_db、mmdb_country_db、mmdb_asn_db三个变量分别重定义文件名。redef mmdb_dir /opt/maxmind; redef mmdb_city_db GeoLite2-City.mmdb; redef mmdb_asn_db GeoLite2-ASN.mmdb;方式二依赖预配置的搜索路径与文件名。mmdb_dir_fallbacks变量保存了默认搜索路径当mmdb_dir未设置时 Zeek 会依次尝试。6.2 之前这些路径是硬编码的现在可重定义。默认值见 scripts/base/init-bare.zeekconst mmdb_dir_fallbacks: vector of string vector( /usr/share/GeoIP, /var/lib/GeoIP, /usr/local/share/GeoIP, /usr/local/var/GeoIP, ) redef;进行地理定位查询时Zeek 会优先尝试精度更高的城市级数据库失败再回退到国家级。方式三通过脚本显式打开数据库。mmdb_open_location_db与mmdb_open_asn_db函数接受数据库文件的完整路径。Zeek 始终只使用一个地理定位数据库和一个 ASN 数据库显式加载会覆盖之前加载的任何数据库且可以在任意时刻执行。mmdb_open_location_db(/data/db/GeoLite2-City.mmdb); mmdb_open_asn_db(/data/db/GeoLite2-ASN.mmdb);查询函数与返回结构两个内置函数见 src/mmdb.bif提供 GeoIP 能力function lookup_location(a:addr): geo_location function lookup_autonomous_system(a:addr): geo_autonomous_systemlookup_location返回geo_location记录包含国家/地区等字段。geo_location的定义见 scripts/base/init-bare.zeek包括country_code、region、city、latitude、longitude等可选字段lookup_autonomous_system返回geo_autonomous_system记录含numberAS 号与organization所属组织。由于不同 IP 的查询结果中某些字段可能未初始化访问前务必用存在性测试守卫例如loc?$region。数据库的新鲜度与自动重载Zeek 会检查数据库文件是否过期一旦检测到文件被更新inode 或修改时间变化会自动重新加载。底层实现在 src/MMDB.cc 的IsStaleDB()默认每mmdb_stale_check_intervalscripts/base/init-bare.zeek默认 5 分钟检查一次文件 inode 与 mtime发生变化即关闭并重开数据库MMDB_open采用MMDB_MODE_MMAP内存映射方式打开。将该间隔设为负数可禁用过期检查。若查询出现错误也会触发关闭重开以自愈。与日志/告警的集成Zeek不会自动把 GeoIP 情报写入日志需要借助以下脚本或包Notice 框架通过Notice::lookup_location_types指定希望附加位置信息的 notice 类型配合Notice::ACTION_ADD_GEODATA动作使用。实现见 scripts/base/frameworks/notice/actions/add-geodata.zeek它会为连接中的远端主机查询位置并写入remote_location字段且要求Site::local_nets已定义才能区分本地/远端。redef Notice::lookup_location_types { SSH::Login };现成策略脚本scripts/policy/protocols/smtp/detect-suspicious-orig.zeek基于SMTP::suspicious_origination_countries可疑发件国家集合如 US与SMTP::suspicious_origination_networks检测可疑邮件来源需要 GeoIP 支持scripts/policy/protocols/ssh/geo-data.zeek基于SSH::watched_countries默认含RO在成功登录来自/发往关注国家的 SSH 会话时产生SSH::Watched_Country_Loginnotice并给 SSH 日志附加remote_location字段。其他社区 Zeek 包。快速自检配置完成后建议先验证一切就绪zeek -e print lookup_location(8.8.8.8);若看到类似 Failed to open GeoIP location database 的错误说明数据库配置有问题可能需要重命名或移动 GeoIP 数据库文件使其匹配预期路径/文件名。实战示例下面的脚本打印所有来自美国俄亥俄州OH主机的 FTP 连接event ftp_reply(c: connection, code: count, msg: string, cont_resp: bool) { local client c$id$orig_h; local loc lookup_location(client); if (loc?$region loc$region OH loc?$country_code loc$country_code US) { local city loc?$city ? loc$city : unknown; print fmt(FTP Connection from:%s (%s,%s,%s), client, city, loc$region, loc$country_code); } }注意对region、country_code、city均使用了?$存在性测试避免未初始化字段报错。Log Writers换一种方式写日志Kafka若希望以流式方式将日志导出到 Apache Kafka外部维护的zeek-kafka包是社区热门选择配置也很简单。它依赖librdkafkaKafka 的 C/C 客户端库。配置要点将默认日志写入器切换为 Kafka writer并通过Kafka::kafka_conf设置 broker 列表redef Log::default_writer Log::WRITER_KAFKAWRITER; redef Kafka::kafka_conf { [metadata.broker.list] 192.168.0.1:9092 };kafka_conf中可继续追加任意 librdkafka 支持的配置键如acks、compression.codec等实现更细粒度的投递语义与吞吐调优。Logging日志格式与时机优化JSON 流式日志外部维护的json-streaming-logs包专为配合 Filebeat、fluentd 等日志转发器设计。它做三件事额外生成一批以json_streaming_为前缀的日志文件为日志记录追加_path与_write_ts字段分别标识日志来源与写出时间戳便于下游索引与时间对齐按流式消费场景配置合适的日志轮转策略。如果你的部署没有日志归档archive需求、又不想引入 Kafka只想把所有日志实时送出 Zeek 所在主机这个包就是现成方案。长连接日志Zeek 默认只在连接终止或因不活动超时过期时才把连接条目写入conn.log。受协议与超时值影响一个连接出现在日志中的时间可能被显著推迟——例如长时间挂起的 SSH 连接或 FIN/RST 报文被漏掉的连接延迟甚至可达一小时。这对流式检测场景显然不够友好。zeek-long-connections包正是为此而生它创建与conn.log格式相同的conn_long.log但会按可配置的时间间隔为存活中的连接输出条目。默认在连接存在10 分钟后记录第一条。在流式环境中即使 10 分钟对检测来说也可能太长可按需调低该间隔。Profiling and Debugging内存问题定位jemalloc profiling排查 Zeek 的内存泄漏或状态增长state-growth问题时jemalloc 的 profiling 能力非常关键。社区包zeek-jemalloc-profiling提供了配置 jemalloc profiling 功能所需的少量支持。关于内存 profiling 的更多通用信息可参考 doc/advanced/troubleshooting.rst 中的 Troubleshooting 章节。小结常用定制化的选用建议需求方案性质关键配置项日志增加流哈希 ID内置 Community IDZeek 原生6.0加载 community-id-logging.zeek、CommunityID::seed日志/告警增加地理位置内置 GeoIPZeek 原生需 libmaxminddb .mmdb 库mmdb_dir、mmdb_dir_fallbacks、Notice::lookup_location_types日志导出 Kafkazeek-kafka外部包Log::WRITER_KAFKAWRITER、Kafka::kafka_confJSON 流式外送json-streaming-logs外部包直接加载长连接即时落盘zeek-long-connections外部包间隔时间默认 10 分钟内存 profilingzeek-jemalloc-profiling外部包配合 Troubleshooting 章节原生功能Community ID、GeoIP随 Zeek 发布、行为稳定且有源码级文档可查建议优先采用外部包功能成熟但维护责任在各自项目生产环境引入前应在测试环境验证其与自身 Zeek 版本的兼容性尤其要注意本文开头提到的zeek-community-id与内置实现的冲突问题。赞分享网络安全网络IDS【免费下载链接】zeekZeek is a powerful network analysis framework that is much different from the typical IDS you may know.项目地址https://gitcode.com/gh_mirrors/ze/zeek点击查看免费下载相关推荐Gorpc快速入门5分钟搭建你的第一个高并发RPC服务Gorpc快速入门5分钟搭建你的第一个高并发RPC服务 Gorpc是一个简单、快速且可扩展的Golang RPC库专为高负载场景设计。它提供了易于使用的AP微服务网络与通信Android-PickerView 调试日志管理控制日志输出的最佳实践Android PickerView 调试日志管理控制日志输出的最佳实践 日志管理的重要性 在Android开发中日志Log是调试和问题定位的重要工具。移动开发UI组件presenterm日志系统调试与问题定位工具presenterm日志系统调试与问题定位工具 引言终端演示工具的调试痛点 你是否曾在终端演示时遇到幻灯片渲染异常却无从排查presenterm作为一款终CLI上一篇HTTP响应时间告警阈值async-http-client最佳实践下一篇终极指南如何在WSL2环境中配置node-notifier实现Linux子系统通知创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
事业单位转大模型:先把数据分级这件事做对 版权与内容来源声明
本文为原创整理。文中涉及官方文档、开源仓库、论文与公开报道的内容,均在附表 A 中标注来源;引用官方原文保持原样,不作改写。文中命令、版本号与界面截图以本文成文时的实测/核验结果为准,标注「待验证」的部… · 2026/9/27 23:39:19
搞定wordpressmd主题:5个图解步骤让官网流量翻倍 搞定wordpressmd主题:5个图解步骤让官网流量翻倍 网站做好了没人访问,这是建站圈最扎心的现实。很多老板花几万块做完了官网,上线三个月后台全是零,问就是“百度不收录”。其实问题往往出在最基础的主题配置上,尤其是WordPress… · 2026/9/27 23:39:13
铁路轨道缺陷数据集:从PASCAL VOC到YOLOv8训练全流程指南 简介:铁路轨道缺陷数据集面向目标检测、缺陷识别方向的研究者与算法工程师,聚焦铁轨裂缝、间隙等常见表面缺陷的标注数据。压缩包内共包含2000个XML文件,均采用PASCAL VOC格式,记录缺陷类别与边界框信息,可用于YOLO、F… · 2026/9/27 23:39:06
学编程做网站自研比外包省多少钱3步搞定域名服务器 学编程做网站自研比外包省多少钱3步搞定域名服务器 改个需求建站公司拖一周,你盯着邮件干着急,心里盘算着这单外包费到底值不值。很多项目经理朋友问我,自己 学编程做网站 到底 多少钱… · 2026/9/28 0:19:47
不会代码想建站?网站开发包括哪些环节全解析 不会代码想建站?网站开发包括哪些环节全解析 自己不会代码想做网站,这是无数老板和创业者最头疼的坎。别被那些高大上的术语吓住,其实 网站开发包括哪些 环节,核心就是解决从想法到落地的过程。很多新手在 对比评测… · 2026/9/28 0:19:35
从零搭建安全防线:如何入侵自己做的网站防挂马实战 从零搭建安全防线:如何入侵自己做的网站防挂马实战 网站被黑挂马却毫无头绪?别慌,这行干久了谁没遇到过。很多站长从 从零搭建 网站开始,只盯着功能实现,却忽略了安全漏洞,结果上线没几天,页面就被塞满博彩广告或木马文件。今天不讲虚的,直接拆解… · 2026/9/28 0:19:35
3个技巧搞定wordpress调用微博,附源码下载避坑指南 3个技巧搞定wordpress调用微博,附源码下载避坑指南 网站被黑挂马不知道怎么办?别慌,这往往不是代码问题,而是权限配置太松。很多站长一遇到后台异常登录、页面弹出赌博广告,第一反应是重装系统,其实 80% 的情况源于第三方插件的… · 2026/9/28 0:19:23
0代码做网站工作避坑指南:2024最新速查手册 0代码做网站工作避坑指南:2024最新速查手册 自己不会代码想做网站,这大概是过去三年我听得最多的一句话。很多老板、运营甚至刚入行的新人,拿着“我想做个官网”的需求找到我,眼神里透着焦虑:怕被坑、怕太贵、怕做出来不好看。今天我不讲虚的,直接… · 2026/9/28 0:19:23
新手入门gzip压缩网站:3个配置坑让加载快50% 新手入门gzip压缩网站:3个配置坑让加载快50% 改个需求建站公司拖一周,这种经历在行业里太常见了。很多刚入行的前端或运营新手,面对这种低效沟通往往感到无力。其实,除了沟通技巧,技术层面的优化才是硬道理。今天咱们聊的 gzip压缩网站… · 2026/9/28 0:19:04
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
制作网页比较方便的软件怎么选?一文搞懂避坑指南 制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。… · 2026/9/28 0:00:06
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例… · 2026/9/28 0:00:19
济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?… · 2026/9/28 0:00:25