☰
三种蜜罐搭建实录:Pentbox、Defnet、Cowrie 环境配置与避坑指南
2026/10/30 2:56:37 网站建设 项目流程

简介:这份文档面向网络安全初学者与渗透测试爱好者,围绕 Defnet、Pentbox、Cowrie 三种蜜罐工具,讲解从环境准备到实际部署使用的完整流程,帮助读者理解蜜罐的诱捕原理并动手搭建可用的实验环境。资源包内共 1 个 docx 文件,约 7.96MB,以图文步骤形式记录了 Pentbox 在 Kali 下的下载解压与快速、手动两种配置方式,Defnet 虚拟 Telnet 服务及监视器设置,以及 Cowrie 的安装、虚拟环境配置、端口修改与日志调整等关键环节,并附有访问测试与监听记录说明。内容兼顾原理介绍与命令实操,适合按章节对照练习、复现实验现象并积累排错经验。目前已有 3083 人学习下载,可作为安全课程实验、蜜罐入门实践与攻防演练准备的参考材料。

1. 三种蜜罐搭建实录:从 Pentbox 到 Cowrie,一次把环境配通

上周帮一个做安全培训的朋友重搭实验环境,三台虚拟机、三个蜜罐,从下午两点折腾到晚上九点,中间翻车四次。最坑的一次是 Cowrie 装完启动直接报依赖缺失,日志里一行ModuleNotFoundError甩过来,排查了四十分钟才发现是pycrypto没装。这类环境搭建的痛点很集中:版本对不上、依赖链断裂、端口冲突、权限没给够。Pentbox、Defnet、Cowrie 这三个蜜罐覆盖了低交互到中交互的典型场景,Pentbox 轻量、Defnet 图形化、Cowrie 能抓攻击者行为,适合安全入门实验、教学演示和渗透测试练习。这篇笔记按实际搭建顺序走一遍,把版本选择、命令参数、报错处理都写清楚,照着做能跑通。

2. 环境准备与版本选择:Kali 下三套蜜罐的依赖清单

2.1 虚拟机与网络拓扑规划

三套蜜罐里 Pentbox 和 Cowrie 跑在 Kali Linux 上,Defnet 是 Windows 图形化工具,跑在物理机或 Windows 虚拟机上。我一般用 VMware 开两台虚拟机:一台 Kali(攻击机兼蜜罐宿主),一台 Windows(跑 Defnet 并做 telnet 测试源)。网络模式选 NAT,保证 Kali 和 Windows 在同一网段能互相访问,同时不暴露到外网。

Kali 版本建议用 2023.x 之后的滚动版,内核 5.x 以上,Python 2.7 和 Python 3 共存的环境。Pentbox 是 Ruby 写的,Kali 自带 Ruby,不用额外装。Cowrie 对 Python 版本敏感,老版本 Cowrie 依赖 Python 2.7 的 twisted,新版已经迁到 Python 3,装之前先确认你 clone 的分支。Defnet 是 Windows 程序,Win7 到 Win10 都能跑,Win11 上偶发兼容问题,建议用 Win10 虚拟机。

网络规划上,Kali 的 IP 假设为192.168.44.130,Windows 为192.168.44.1,后续命令里的 IP 按你实际环境替换。三套蜜罐不要同时占同一个端口,Pentbox 默认 80,Cowrie 默认 2222,Defnet 虚拟 Telnet 用 23,错开就行。

2.2 依赖包与工具链预装

Kali 上先把基础依赖补齐,避免后面反复报错。Pentbox 只需要 Ruby 和 wget、tar,系统自带。Cowrie 的依赖分两层:系统层 Python 包和 virtualenv 里的 pip 包。系统层先装这些:

# 更新源并安装 Cowrie 所需的系统级 Python 包 apt-get update apt-get install -y python-twisted python-crypto python-pyasn1 \ python-gmpy2 python-mysqldb python-zope.interface # 安装 virtualenv 用于隔离 Cowrie 的 Python 环境 apt-get install -y virtualenv

python-twisted是 Cowrie 的事件驱动网络框架,python-crypto提供 SSH 加密支持,python-pyasn1处理 ASN.1 编码,python-gmpy2是大数运算库,SSH 密钥交换要用。python-mysqldb和python-zope.interface是 Cowrie 可选的数据库和接口依赖,装上避免启动时缺模块。

virtualenv 里的 pip 包后面在 Cowrie 目录里单独装,这里先不展开。Defnet 在 Windows 上免安装,解压即用,不需要额外依赖。有一点要注意:Kali 新版默认没有python命令,只有python3,而老版 Cowrie 的脚本里写的是python,遇到python: command not found就建个软链或者改脚本 shebang,这是常见做法。

2.3 版本对照与端口分配表

三套蜜罐的版本和端口分配提前定好,后面配置时直接查表:

蜜罐运行平台版本/来源默认端口建议端口依赖重点
PentboxKali Linuxpentbox-1.88080 或 8080Ruby 环境
DefnetWindows图形化工具23 (Telnet)23无
CowrieKali LinuxGitHub 主线222263333Python 2.7 + twisted

端口选择上,Pentbox 用 80 最省事,浏览器直接访问就能触发记录。Cowrie 的listen_port建议设到 60000 以上,原文里写的是 63333,理由是避开 nmap 默认扫描的低端口段,减少被误扫的概率。Defnet 虚拟 Telnet 固定 23,Windows 上如果本机开了 Telnet 服务会冲突,先确认 23 端口没被占用。

3. Pentbox 1.8 安装与蜜罐配置:Ruby 套件的快速上手

3.1 下载解压与目录结构确认

Pentbox 1.8 的包在 SourceForge 上,Kali 终端里直接 wget 拉下来:

# 下载 pentbox-1.8 压缩包 wget https://sourceforge.net/projects/pentbox18realised/files/latest/download/pentbox-1.8.tar.gz # 解压到当前目录 tar -zxvf pentbox-1.8.tar.gz # 进入解压后的目录 cd pentbox-1.8/ ls

tar -zxvf里-z是 gzip 解压,-x解包,-v显示过程,-f指定文件名。解压后ls应该能看到pentbox.rb主脚本和若干资源文件。如果 wget 报证书错误,加--no-check-certificate跳过校验,内网实验环境问题不大。下载慢的话换个时间段重试,SourceForge 的 CDN 偶尔抽风。

3.2 启动菜单与蜜罐模式选择

Pentbox 是交互式菜单驱动的,运行./pentbox.rb后按提示走:

# 启动 Pentbox 主程序 ./pentbox.rb # 菜单选择:输入 2 进入 Network Tools # 再输入 3 进入 Honeypot # 此时有两个选项: # 1 = Fast Auto Configuration(快速自动配置,80 端口) # 2 = Manual Configuration(手动配置端口和响应)

快速模式选 1 之后,Pentbox 直接在 80 端口起监听,终端打印HONEYPOT ACTIVATED ON PORT 80。浏览器访问http://192.168.44.130会看到Access denied报错页,同时终端出现INTRUSION ATTEMPT DETECTED,这次访问就记下来了。

手动模式选 2 会依次问你:开放端口、错误提示信息、是否保存 log 及文件名、是否开启蜂鸣报警。端口可以填 21、22、443 等,错误信息随便写个像样的,比如403 Forbidden,log 文件名给个pentbox.log,蜂鸣报警在实验环境建议关掉,不然每次扫描都响。

3.3 多端口监听与访问验证

手动配置完一个端口后,重复进 Honeypot 菜单可以再开一个端口,Pentbox 支持同时监听多个。比如先配 22 再配 443,终端会分别打印激活信息。验证时用 telnet 或浏览器:

# 测试 23 端口是否有响应(Pentbox 未监听 23 时应连接失败) telnet 192.168.44.130 23 # 测试已监听的 22 端口 telnet 192.168.44.130 22

22 端口连上后终端立刻记录一次入侵尝试,23 端口因为没配就连接被拒。这里有个细节:Pentbox 的 log 默认写在当前目录,cat pentbox.log能看到时间戳和来源 IP。如果浏览器访问 80 端口没反应,先netstat -tlnp | grep 80看端口是否真的在监听,再检查 Kali 的防火墙iptables -L有没有拦。

4. Defnet 图形化蜜罐配置:Windows 下的 Telnet 伪装

4.1 HoneyPot 服务虚拟与账号设置

Defnet 在 Windows 上双击运行,主界面点HoneyPot按钮进设置对话框。对话框里能勾选虚拟的服务类型:Web、FTP、SMTP、Finger、POP3、Telnet。实验里先勾 Telnet Server,用户名填root,密码填123456,这两个值是给攻击者“看到”的假凭据,随便设但别和真实系统账号撞。

右下角Advanced是让蜜罐更真实的关键:伪装驱动器盘符(Drive)、卷标(Volume)、目录创建时间、目录名、剩余磁盘空间(Free space in bytes)、MAC 地址、网卡类型。这些参数填得越像一台真实的老服务器,攻击者越不容易起疑。比如盘符设C:,卷标SYSTEM,剩余空间给个10737418240(约 10GB),MAC 地址随便编一个合法的十六进制格式。

4.2 Monitore 监听启动与连接测试

设置完回到主对话框,点Monitore开始监听。Windows 物理机命令行ipconfig查到 IP 为192.168.44.1,Kali 虚拟机 IP 为192.168.44.132。在 Kali 上 telnet 过去:

# 从 Kali 连接 Windows 上的 Defnet 蜜罐 telnet 192.168.44.1 # 连接成功后输入蜜罐用户名 root 和密码 123456

连接建立后 Defnet 的 Monitore 窗口会实时显示:有用户连接、输入用户名、输入密码、连接超时、登录成功。每一步都带时间戳。这里注意,Defnet 的“登录成功”是假的,它只是记录凭据然后给个假 shell,攻击者敲命令不会有真实执行。

4.3 高级伪装参数调整技巧

Advanced 里的参数不是必填,但填了效果差别明显。目录创建时间建议设成几年前,比如2015-03-12,配合老版本 Windows 的盘符结构。网卡类型选Realtek RTL8139这类老型号,MAC 地址前缀和网卡厂商对得上更真。剩余磁盘空间别给整数,10737418240比10000000000更像真实磁盘。这些细节在原文里没展开,但实际做诱捕实验时,伪装度直接影响攻击者停留时长。

5. Cowrie 中交互 SSH 蜜罐部署:Python 虚拟环境与端口转发

5.1 专用用户创建与目录权限

Cowrie 不建议用 root 跑,先建个专用用户:

# 创建系统用户 honey,带家目录和 bash shell useradd -r -m -s /bin/bash honey # 设置密码,实验环境用简单密码方便切换 passwd honey # 把 /opt/cowrie 的属主改成 honey chown -R honey:honey /opt/cowrie

-r建系统用户,-m强制建家目录,-s /bin/bash指定 shell。密码设123456是实验环境图省事,真实部署要换强密码。chown -R递归改属主,Cowrie 运行时要写日志和临时文件,权限不够会报Permission denied。

5.2 virtualenv 隔离与依赖安装踩坑

进 Cowrie 目录建虚拟环境:

cd /opt/cowrie # 创建 Python 虚拟环境到 env 目录 virtualenv env # 激活虚拟环境 source env/bin/activate # 安装 Cowrie 运行所需的 pip 包 pip install twisted cryptography pyopenssl gmpy2

这一步大概率报错,原文里也提到了。cryptography编译需要libffi-dev和libssl-dev,gmpy2需要libgmp-dev、libmpfr-dev、libmpc-dev。补装依赖:

apt-get install -y python-cffi libffi-dev libssl-dev apt-get install -y libgmp-dev libmpfr-dev libmpc-dev # 依赖装完重新执行 pip install pip install twisted cryptography pyopenssl gmpy2

python-cffi是 cryptography 的底层依赖,libffi-dev提供外部函数接口头文件,libssl-dev是 OpenSSL 开发库。这三个缺一个都会在编译阶段挂掉。装完再跑 pip 就顺了。

5.3 配置文件修改与 SSH 端口转发

复制配置文件并改关键项:

# 从模板复制出实际配置文件 cp cowrie.cfg.dist cowrie.cfg # 编辑 start.sh 把 umask 从 0077 改成 0022 vim start.sh # 编辑 cowrie.cfg 修改监听端口 vim cowrie.cfg

start.sh里umask 0077改成0022,否则日志文件只有 honey 用户能读,后续分析不方便。cowrie.cfg里listen_port默认 2222,改成63333,高于 60000 避开 nmap 默认扫描段。端口转发用 iptables 把公网 22 的请求重定向到蜜罐端口:

# 把访问本机 22 端口的流量重定向到 63333(蜜罐端口) iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 63333 # 把真实 SSH 端口改成 62225,避免和蜜罐冲突 vim /etc/ssh/sshd_config # 修改后重启 ssh 服务 service ssh restart

-t nat指定 nat 表,PREROUTING链在路由前处理,REDIRECT把目标端口改掉。真实 SSH 改到 62225 后,你自己管理机器用ssh -p 62225连,攻击者打 22 就落到 Cowrie 上。

5.4 启动排错与日志验证

切到 honey 用户启动:

su honey cd /opt/cowrie bin/cowrie start

启动报缺依赖就补:

pip install configparser service_identity pycrypto tftpy

configparser读配置文件,service_identity做 TLS 证书校验,pycrypto提供加密原语,tftpy是 TFTP 支持。装完再bin/cowrie start,看到启动成功提示即可。另开终端用 ssh 连蜜罐端口:

# 连接蜜罐的 63333 端口,模拟攻击者 ssh -p 63333 honey@192.168.44.130

连上后提示信息是蜜罐伪造的,敲ping www.baidu.com返回的也是假结果。cowrie.log和cowrie.json里记录完整会话,包括登录尝试、输入命令、上传文件行为。日志路径在cowrie.cfg的[output_jsonlog]段里配,默认在log/目录下。

6. 避坑与排查:三套蜜罐装完必查的五个点

6.1 Pentbox 启动报 Ruby 版本不兼容

现象:./pentbox.rb执行后报undefined method或语法错误。原因:Kali 新版 Ruby 3.x 对老脚本的某些写法不兼容,Pentbox 1.8 是 Ruby 1.8/1.9 时代的代码。解决:装个 rbenv 或 rvm 切到 Ruby 2.x 跑,或者直接换用系统自带的旧版 Ruby 包。实验环境图快的话,用 Docker 起个老版本 Ruby 镜像跑 Pentbox 也行。

6.2 Cowrie pip 安装 cryptography 编译失败

现象:pip install cryptography卡在building wheel然后报ffi.h: No such file。原因:缺libffi-dev头文件。解决:apt-get install -y libffi-dev libssl-dev python-cffi后重跑 pip。如果还报gmp.h找不到,补libgmp-dev libmpfr-dev libmpc-dev。这三个包是 gmpy2 的编译依赖,缺一个都过不去。

6.3 iptables 转发后真实 SSH 连不上

现象:配完REDIRECT规则后,自己ssh本机 22 端口连到了蜜罐,管理通道断了。原因:PREROUTING规则把本机所有 22 流量都劫持了,包括你自己的管理连接。解决:规则里加源 IP 排除,或者先改sshd_config端口再配转发。我一般先把真实 SSH 改到 62225 并重启服务,确认能连上,再加 iptables 规则,顺序反了就把自己锁外面。

6.4 Defnet 在 Win11 上 Monitore 无记录

现象:Defnet 启动监听后,Kali telnet 过去能连上,但 Monitore 窗口不显示记录。原因:Win11 的防火墙或网络隔离策略拦了回环流量,Defnet 抓不到连接事件。解决:换 Win10 虚拟机跑 Defnet,或者在 Win11 防火墙里给 Defnet 放行入站规则。实验环境最省事的做法是直接用 Win10。

6.5 Cowrie 日志文件权限导致分析工具读不了

现象:cowrie.log生成了但cat提示Permission denied。原因:start.sh里umask 0077没改,日志文件权限是600,只有 honey 用户能读。解决:改umask 0022后重启 Cowrie,新日志权限变644。已经生成的旧日志用chmod 644手动改,或者chown给分析用户。

7. 装完怎么验证跑通:三套蜜罐的联调检查清单

三套蜜罐装完后别急着收工,按清单逐项验证,确认每套都能正常捕获行为。Pentbox 的验证最简单:浏览器访问http://192.168.44.130,终端出现INTRUSION ATTEMPT DETECTED,pentbox.log里有记录,三项齐了就算通。手动模式再 telnet 一下 22 端口,确认多端口监听生效。

Defnet 的验证走一遍完整 telnet 流程:Kali 上telnet 192.168.44.1,输入root/123456,Monitore 窗口依次出现连接、用户名、密码、登录成功四条记录,时间戳连续。如果中间断在“输入密码”那步,检查 Advanced 里的伪装参数有没有填非法值,比如 MAC 地址格式不对会导致会话异常终止。

Cowrie 的验证分两层:先确认蜜罐端口能连,ssh -p 63333 honey@192.168.44.130能进假 shell;再确认日志有内容,tail -f log/cowrie.log能看到登录尝试和命令记录。然后测端口转发,从另一台机器ssh 192.168.44.130(默认 22),看是否落到 Cowrie 而不是真实 SSH。最后检查cowrie.json里的结构化字段,src_ip、username、password、input这些键都在,说明日志格式正常。

联调时有个习惯我每次都走:三套蜜罐同时开着,用一台测试机分别打 80、23、22 三个端口,然后对照三份日志的时间戳和来源 IP,确认没有串台。有一次 Pentbox 和 Cowrie 都配了 22 端口,结果流量全进了 Pentbox,Cowrie 日志一条没有,查了半天才发现端口冲突。从那以后我每次配完都先netstat -tlnp把监听端口列一遍,确认没有重复再开测。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询