Cowrie 攻击数据接入 InfluxDB 的 3 个步骤:配置、验证到告警查询

📅 2026/8/23 14:09:14
Cowrie 攻击数据接入 InfluxDB 的 3 个步骤:配置、验证到告警查询
Cowrie 攻击数据接入 InfluxDB 的 3 个步骤配置、验证到告警查询【免费下载链接】cowrieCowrie SSH/Telnet Honeypot https://docs.cowrie.org/项目地址: https://gitcode.com/gh_mirrors/co/cowrieCowrie 内置的 InfluxDB 输出插件[output_influx]会把 SSH/Telnet 蜜罐捕获的登录、命令、文件下载等事件按时间线写入 InfluxDB让你可以用 InfluxQL 做统计和告警。整个过程分三步在配置里启用插件、确认数据落库、编写查询。本文按这条动线展开所有配置项和查询语法都以仓库中的实际实现为准。InfluxDB 输出插件写入了什么数据插件源码在src/cowrie/output/influx.py。它的写入逻辑是每条事件的事件 ID如cowrie.login.failed去掉点号后变成一个 measurement如cowrie_login_failed所有事件统一带session和src_ip两个 tag字段里还会带上sensor蜜罐实例名以及各事件特有的内容。各事件对应的 fields 差异很大直接决定你能查什么cowrie.command.input/cowrie.command.failedinput攻击者敲的命令cowrie.login.success/cowrie.login.failedusername、passwordcowrie.session.file_downloadshasum、url、outfilecowrie.session.closedduration_ms会话时长cowrie.session.connect协议、源/目的端口等插件启动时还会自动建库库不存在就创建并建立名为库名_retention_policy的保留策略默认保留 12 周replication1设为默认策略。所以通常不需要你预先在 InfluxDB 里建任何表。启用 [output_influx] 的关键配置项先装依赖。InfluxDB 插件依赖 Python 包influxdbrequirements 中锁定为influxdb5.3.2对应 InfluxDB 1.x 客户端不适用于 InfluxDB 2.x。若用 pip 方式安装 Cowrie输出类依赖在requirements-output.txt中按官方安装文档见仓库INSTALL.rst安装即可。然后在etc/cowrie.cfg中覆盖配置注意仓库里的src/cowrie/data/etc/cowrie.cfg.dist是只读默认模板不要直接改它改动都写到etc/cowrie.cfg[output_influx] enabled true host 127.0.0.1 port 8086 database_name cowrie retention_policy_duration 12w #username cowrie #password 几个容易踩坑的点段落名是output_influx不是output_influxdb配置插件是否启用的开关只有enabled。库名配置项叫database_name不写时默认值为cowrie。retention_policy_duration只接受数字单个单位格式d/h/m/w比如30d、2w格式不合法时会打警告并回落到默认的12w。只有同时配置了username和password才会走switch_user认证支持ssl项启用 TLS。验证数据是否真正落库改完配置重启 Cowrie 后用 SSH 或 Telnet 主动连一次蜜罐哪怕失败登录也算再进 InfluxDB 查询$ influx -host 127.0.0.1 -port 8086 influx SHOW DATABASES influx USE cowrie influx SHOW RETENTION POLICIESSHOW RETENTION POLICIES里应能看到 Cowrie 自动创建的库名_retention_policy。再抽查一个 measurementinflux SELECT * FROM cowrie_login_failed LIMIT 5 influx SELECT * FROM cowrie_command_input LIMIT 5能查出带session、src_iptag 的记录说明链路通了。如果库存在但没有数据优先检查两点cowrie.log里有没有output_influx相关的报错连接失败时插件只记日志并停止工作以及 InfluxDB 版本是否为 1.x。常用 InfluxQL 查询从统计到告警基于上面的数据模型几个有实际用途的查询暴力破解识别——按源 IP 统计 10 分钟窗口内的失败登录次数SELECT count(password) FROM cowrie_login_failed GROUP BY src_ip, time(10m) HAVING count(password) 10恶意命令词频——攻击者输入过的命令分布SELECT TOP(input, 20) FROM cowrie_command_input WHERE time now() - 24h GROUP BY time(1h)会话时长分析——蜜罐上停留较久的会话往往更值得人工复盘SELECT mean(duration_ms) FROM cowrie_session_closed WHERE time now() - 1w GROUP BY session, src_ip文件下载事件——按 shasum 聚合可识别重复投递的 payloadSELECT count(url) FROM cowrie_session_file_download GROUP BY shasum要把这类统计接到告警InfluxDB 1.x 的方式是连续查询continuous query例如把失败登录按分钟聚合到alerts库里再配合告警工具或 Grafana消费CREATE CONTINUOUS QUERY cq_login_alert ON cowrie BEGIN SELECT count(password) INTO cowrie_alerts.login_5m FROM cowrie_login_failed GROUP BY time(5m) END进阶使用与已知边界插件不是把所有事件都写进去。事件 ID 落在已处理清单之外的比如cowrie.direct-tcpip.data、cowrie.log.closed会被跳过并记一条 not handled 日志src_ip、session之外的会话级信息tty 录制、原始包也不进 InfluxDB需要完整交互记录时仍要配合ttylog。运维层面两个建议一是保留策略已自动管理调整保留期只需改retention_policy_duration并重启插件会自动ALTER现有策略不用手工删库二是sensor字段来自honeypot.sensor_name配置不配置时用蜜罐 IP多蜜罐汇聚到同一库时务必给每个实例设不同的sensor_name否则查询时无法区分来源。这套方案让 Cowrie 的攻击记录从一条条翻日志变成可聚合、可告警的时间序列数据配合 Grafana 之类的工具即可搭建出蜜罐的态势看板。【免费下载链接】cowrieCowrie SSH/Telnet Honeypot https://docs.cowrie.org/项目地址: https://gitcode.com/gh_mirrors/co/cowrie创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考