FakeSSH是一个开源的docker化蜜罐ssh服务器,其GitHub项目地址:https://github.com/fffaraz/fakessh 。在项目的readme页面中,我们可以知道这个项目是用go语言开发的,模拟出了SSH服务器,但是其身份验证总是失败,而且不会向攻击者提供登录成功后的终端访问权限,只是会记录登录信息。

现在我们来搭建并运行这个蜜罐ssh服务器。先准备以下几个前置条件

  • 确定有管理员权限账号或可以提权至管理员,方便安装应用和修改系统配置

  • 确保你的服务器安装了docker

  • 修改您服务器系统的ssh服务端口为非22的其他端口
  • 确保没有其他应用服务占用22端口

拉取fakessh镜像

demouser@demohosts:~$ docker pull fffaraz/fakessh
Using default tag: latest
latest: Pulling from fffaraz/fakessh
a3b4fdbe647e: Pull complete 
Digest: sha256:7c80391d55f436ae192a326a13c92880829377e9eb8f26267fe572aa42a7f414
Status: Downloaded newer image for fffaraz/fakessh:latest
docker.io/fffaraz/fakessh:latest

启动容器

我在这里只是演示,就不映射到22端口了。

demouser@demohosts:~$ docker run -d --restart=always -p 8822:22 --name fakessh fffaraz/fakessh
dae886d9144799c7b5c98f14bfaef41f2314abc4fc3019d371c6fc02aa5953b1
demouser@demohosts:~$ docker ps -a
CONTAINER ID   IMAGE             COMMAND      CREATED         STATUS         PORTS                                   NAMES
dae886d91447   fffaraz/fakessh   "/fakessh"   7 seconds ago   Up 5 seconds   0.0.0.0:8822->22/tcp, :::8822->22/tcp   fakessh

容器启动后,记得防火墙记得需要放通对应的端口。

查看记录

定期查看和分析fakessh的日志文件,及时发现和应对潜在的安全威胁。

下面是我在同一个局域网中,用另外一个设备分别用空密码、123456和111111测试连接蜜罐ssh服务的输出日志。

demouser@demohosts:~$ docker logs -f fakessh
2024/10/04 01:28:41.092903 192.168.10.109:51603
2024/10/04 01:28:49.144883 192.168.10.109:51603 SSH-2.0-OpenSSH_9.7 admin 
2024/10/04 01:28:52.834808 192.168.10.109:51603 SSH-2.0-OpenSSH_9.7 admin 123456
2024/10/04 01:28:57.064782 192.168.10.109:51603 SSH-2.0-OpenSSH_9.7 admin 111111

可以看到,在输出的日志中,可以获取到试图登录的用户名(倒数第二列)和密码(最后一列)。

如果每小时输出一次日志,并将这些内容保存到指定文件中,你就可以收集到这些常用会被爆破的用户名和弱密码了。

这些信息可以为你指定服务器的安全策略提供用户名和密码设置的参考。