T-Pot是一个集成式、可选分布式的、支持多架构(amd64、arm64)的蜜罐平台,它支持20多种蜜罐,并提供了使用Elastic Stack的无数可视化选项、动态实时攻击地图以及众多安全工具,以进一步提升蜜罐系统体验。源码地址:GitHub - telekom-security/tpotce: 🍯 T-Pot - The All In One Multi Honeypot Platform 🐝
随着人工智能技术的普及,从T-Pot 24.04.1版本开始,引入了两个基于LLM的蜜罐:Beelzebub和Galah。这些蜜罐需要安装Ollama,并需在T-Pot配置文件中进行相应配置。
在deepseek横空出世后,Ollama终于可以在大多数普通机器上较快的使用大模型了。基于此,再次实践蜜罐系统T-Pot 。以前的实践见:T-Pot多功能蜜罐实践@debian12@FreeBSD-CSDN博客
安装带AI人工智能的蜜罐系统T-Pot
这次是在Ubuntu24.04虚拟机中进行操作。
T-Pot的安装非常简单方便
下载源码:
git clone https://github.com/telekom-security/tpotce
然后进入tpotce目录,执行./install.sh安装即可。
安装完成,重启系统,T-Pot就算安装好了。
下载源代码
git clone https://github.com/telekom-security/tpotce
$ cd tpotce
- Run the installer as non-root:
$ ./install.sh
安装之前,先手工安装docker并设置镜像
如果能科学上网,这步可以省略,直接install.sh一键安装即可
sudo apt install docker.io
设置docker镜像
如果能科学上网,就不用设置镜像这么繁琐,docker也不用手工安装,直接install.sh一键安装即可。
在/etc/docker/daemon.json文件中写入:
{
"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
}
启动docker服务
service docker start
如果前面已经启动服务了,这里就重启服务
service docker restart
安装其它依赖库
为了防止安装失败,需要安装这个库
sudo apt-get install util-linux
安装T-Pot
进入源代码目录cd tpotce
执行安装命令 ./install.sh
注意这里并不需要sudo,但是安装过程中,会提示输入sudo口令。
稍后会出现安装选择界面,让选择哪种模式:标准模式,Hive模式,llm AI大模型模式等
选了l,也就是llm大模型模式
设了web账号sky,密码123
后面就是漫长的安装过程:
✔ nginx Pulled 323.8s
✔ logstash Pulled 526.1s ✔ beelzebub Pulled 432.2s
⠴ suricata [⣿⣿⣷] 37.81MB / 41.96MB Pulling 718.7s
✔ map_redis Pulled 29.5s
✔ p0f Pulled 489.2s ✔ tpotinit Pulled 559.0s
✔ ewsposter Pulled 370.4s ⠼ kibana [⣿⣿⣿⣿⣿⣿] 359.6MB / 360.2MB Pulling 718.6s
⠴ elasticsearch [⣿⣿] 644.8MB / 644.9MB Pulling 718.7s
✔ nginx Pulled 323.8s
✔ beelzebub Pulled 432.2s
✔ map_web Pulled 637.8s
⠴ spiderfoot [⣿⣿] 141.9MB / 142.1MB Pulling 718.7s
✔ tpotinit Pulled 559.0s
⠴ kibana [⣿⣿⣿⣿⣿⣿] 359.6MB / 360.2MB Pulling
看到里面安装了elasticsearch,这个明显是向量检索用的。
安装完成:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:64295 0.0.0.0:* LISTEN 0 83700 17424/sshd: /usr/sb
tcp6 0 0 :::64295 :::* LISTEN 0 83702 17424/sshd: /usr/sb
udp 0 0 192.168.56.101:68 0.0.0.0:* 998 87661 9049/systemd-networ
udp 0 0 10.0.2.15:68 0.0.0.0:* 998 47527 9049/systemd-networ
### Done. Please reboot and re-connect via SSH on tcp/64295.
Make sure to adjust the T-Pot config file (.env) for Ollama / ChatGPT settings.
注意这句:Please reboot and re-connect via SSH on tcp/64295.
也就是需要重启,并登录到64295端口。为什么不登陆80端口呢?因为安装好T-Pot后,80端口就是个蜜罐系统啦!
登录和管理
好的,安装完成,让我们ssh来登录64295这个端口吧!
使用命令:ssh username@192.168.56.101 -p 64295
登到服务器上,也没啥,刚开始用也不太懂,这时候感觉登上来也没啥事干。
这时候,也可以直接用浏览器登录,web登录端口是64297,比如浏览器打开:
https://192.168.56.101:64297/
就可以看到web监控页面了。这个web页面,主要是监控显示页面。
WEB监控界面的几款工具介绍
web监控界面有如下几个链接:Attack Map Cyberchef Elasticvue Kibana Spiderfoot,可以感觉需要选择合适的监控和分析视图。
1. Attack Map
Attack Map通常指的是一种网络安全可视化工具,它能够以地图的形式实时展示网络攻击的来源和目标
2. Cyberchef
Cyberchef是一个开源的、基于Web的工具,用于进行各种数据转换、编码、加密和解密操作。它提供了一个直观的界面,用户可以通过拖拽和连接不同的操作模块来处理数据。它可以帮助安全分析师快速解码和分析恶意软件样本、网络流量数据等。
3. Elasticvue
Elasticvue是一个专为Elasticsearch设计的可视化工具。它提供了丰富的图表和仪表盘功能,使用户能够直观地分析和展示Elasticsearch中的数据。与Kibana类似,Elasticvue也支持多种可视化类型,如图表、表格和地图等。然而,Elasticvue可能不如Kibana那样广泛被使用或知名,但它仍然是一个强大的Elasticsearch可视化选项。
4. Kibana
Kibana是Elasticsearch的官方可视化工具,它提供了强大的数据可视化和分析功能。用户可以利用Kibana的图表功能展示实时数据,从而迅速发现问题并采取措施。Kibana的仪表盘功能允许用户组合多个图表,创建一个全景视图,从多个角度对数据进行分析。此外,Kibana还支持多种数据源的集成,不仅限于Elasticsearch,用户可以通过插件和API将其他数据源的数据引入Kibana进行统一分析。
5. SpiderFoot
SpiderFoot是一个开源的情报收集自动化工具,它能够帮助安全研究人员和测试人员自动收集目标系统的信息。SpiderFoot通过发送各种查询和探测到目标系统,然后收集和分析返回的响应,以提取有用的信息。这些信息可能包括IP地址、域名、电子邮件地址、社交媒体账号等。。
既然deepseek那么火,我们就选一款支持AI的工具尝试一下。
AI赋能Beelzehub
两款支持AI的蜜罐工具,一款beelzebub star 836, 一款Galah star 491,我们选多的,也就是beelzebub,官网:GitHub - mariocandela/beelzebub: A secure low code honeypot framework, leveraging AI for System Virtualization.
https://github.com/mariocandela/beelzebub
但是不知道下一步该干什么。
总结
以上就是我们装好T-Pot后的第一观感。手册专门提供了First Start,让我们跟着手册开始吧!
First Start 开始第一步
一旦安装好T-Pot,系统就需要重启一下,这个我们前面已经重启过了。
可以使用系统账户通过ssh登录系统,命令为:
ssh -l <OS_USERNAME> -p 64295 <your.ip>
不过我一般习惯用命令:ssh username@ip -p 64295
还可以通过浏览器来登录T-Pot WebUI 即Web界面,地址为:
https://<your.ip>:64297
注意,这里的登录用户名和密码是安装
T-Pot最后部分时我们设定的,一般不与系统账户一样。
这两步我们前面也做了。
Standalone First Start 第一次独立启动
启动后没有啥可以做的,可以用dps看看蜜罐们是否启动了,命令:
dps
输出:
dps
NAMES STATUS PORTS
beelzebub Up About an hour 0.0.0.0:22->22/tcp, :::22->22/tcp
elasticsearch Up About an hour (healthy) 127.0.0.1:64298->9200/tcp
fatt Up About an hour
galah Up About an hour 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8443->8443/tcp, :::8443->8443/tcp
kibana Up About an hour (healthy) 127.0.0.1:64296->5601/tcp
logstash Up About an hour (healthy) 127.0.0.1:64305->64305/tcp
map_data Up About an hour
map_redis Up About an hour
map_web Up About an hour 127.0.0.1:64299->64299/tcp
nginx Up About an hour 0.0.0.0:64294->64294/tcp, :::64294->64294/tcp, 0.0.0.0:64297->64297/tcp, :::64297->64297/tcp
p0f Up About an hour
spiderfoot Up About an hour (healthy) 127.0.0.1:64303->8080/tcp
suricata Up About an hour
tpotinit Up About an hour (healthy)
可以看到beelzehub这个蜜罐启动了。
如果没啥事可以做,可以去 Kibana 或者 Geoip Attack Map 看看监控。
好吧,手册写的也这么简单,看来真的是没事做。
测试登录beelzehub蜜罐
官网:GitHub - mariocandela/beelzebub: A secure low code honeypot framework, leveraging AI for System Virtualization.
通过上面的服务列表,可以知道22端口是beelzebub的蜜罐,80端口是galah的蜜罐
登录22端口看看:
ssh root@192.168.56.101
root@192.168.56.101's password:
root@ubuntu:~$ ls
command not found
root@ubuntu:~$ pwd
command not found
看看,啥也没有啊,连ls和pwd也没有,果然是个蜜罐。
当然另一个原因是这个蜜罐没配置好ollama AI部分。
尝试配置ollama
这个以后再专门花时间去弄吧,就先到这里。
好了,到这里,T-Pot的实践之旅就结束啦!
调试
install.sh安装失败,怀疑docker有问题
Error in the pull function. [IP: 3.170.229.96 443]", "Err:10 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-compose-plugin amd64 2.32.4-1~ubuntu.24.04~noble", " Could not handshake: Error in the pull function. [IP: 3.170.229.96 443]", "Fetched 205 kB in 27s (7519 B/s)"]}
手工安装docker
sudo apt install docker-compose
加上docker加速镜像,
在/etc/docker/daemon.json文件中写入:
{
"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
}
再启动./install.sh
还是失败。
docker这块怎么办?
仔细查看这篇文档,发现docker并没有安装和启动,
一步步来,再次安装和启动docker服务:
安装docker
sudo apt install docker.io
安装完成后/etc/docker/daemon.json文件中写入镜像。
重启服务:
systemctl daemon-reload
systemctl restart docker
如果这两条命令不能执行,就用service命令:
service docker start
重启服务:
service docker restart
配置完成后,可以用以下命令查看是否生效:
sudo docker info | grep -A1 "Registry Mirrors"
显示下面内容,证明镜像生效:
sudo docker info | grep -A1 "Registry Mirrors"
Registry Mirrors:
https://docker.registry.cyou/
docker安装后启动失败
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Wed 2025-02-19 23:41:02 UTC; 19ms ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Process: 6097 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 6097 (code=exited, status=1/FAILURE)
CPU: 309ms
手工启动,启动成功:
service docker start
安装失败报错Something went wrong
TASK [Gathering Facts] *****************************************************************************************************
ok: [127.0.0.1]
TASK [Syncing clocks (All)] ************************************************************************************************
fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "hwclock --hctosys", "delta": "0:00:00.010539", "end": "2025-02-19 23:44:53.832705", "msg": "non-zero return code", "rc": 127, "start": "2025-02-19 23:44:53.822166", "stderr": "/bin/sh: 1: hwclock: not found", "stderr_lines": ["/bin/sh: 1: hwclock: not found"], "stdout": "", "stdout_lines": []}
...ignoring
TASK [Install recommended packages (Debian, Raspbian, Ubuntu)] *************************************************************
fatal: [127.0.0.1]: FAILED! => {"changed": false, "msg": "Failed to update apt cache: unknown reason"}
PLAY RECAP *****************************************************************************************************************
127.0.0.1 : ok=8 changed=3 unreachable=0 failed=1 skipped=1 rescued=0 ignored=1
### Something went wrong with the Playbook, please review the output and / or install_tpot.log for clues.
### Aborting.
安装这个试试
sudo apt-get install util-linux
解决一部分报错,有新的报错
报错TASK [Enable Docker Engine upon boot (All)]
TASK [Enable Docker Engine upon boot (All)] ********************************************************************************
fatal: [127.0.0.1]: FAILED! => {"changed": false, "msg": "Unable to start service docker: Job for docker.service failed because the control process exited with error code.\nSee \"systemctl status docker.service\" and \"journalctl -xeu docker.service\" for details.\n"}
PLAY RECAP *****************************************************************************************************************
127.0.0.1 : ok=29 changed=14 unreachable=0 failed=1 skipped=1 rescued=0 ignored=1
### Something went wrong with the Playbook, please review the output and / or install_tpot.log for clues.
### Aborting.
重新把docker服务安装,设置镜像,重启,好像整完问题就解决了。