#ssh #server #security #tarpit #netsec

应用 decoyssh

一个紧凑且便携的 SSH 陷阱服务器

9 个稳定版本

1.1.0 2024 年 4 月 16 日
1.0.7 2024 年 3 月 3 日
1.0.6 2024 年 2 月 19 日
1.0.5 2023 年 11 月 5 日
0.3.0 2022 年 7 月 7 日

#213异步

37 每月下载量

ISC 许可证

17KB
299

DecoySSH

它是一个使用 Rust 和 async-std 编写的紧凑且便携的 SSH 陷阱服务器。

动机

是的,有数百万个 SSH 陷阱服务器,除了原始的那个。其中一些也用 Rust 编写,但我所看到的没有一个使用 async-std。对我来说,其中一些有点过于复杂,而且一些缺乏可配置性。所以这是我的看法。

尽管如此,它应该100%可使用。如果它符合您的陷阱需求,不妨试试。

这个宠物项目并不是为了与任何人竞争,而是为了学习新事物和进行实验。不仅仅是 Rust 和 async-std,还有背后的东西:GitHub 工作流程、交叉编译、容器化等。换句话说,这是一个相当完整的交付周期。(但还没有测试,也许有一天。)

用法

DecoySSH 可作为独立二进制文件、Cargo 包和容器镜像提供。

二进制文件可以在仓库的 发布页面 上找到。如果您找不到所需的平台,您可以自己编译适当的二进制文件。或者,您可以随意创建 PR问题

Cargo 包可以像往常一样安装

cargo install decoyssh

容器镜像可在 docker.io/aeron/decoysshghcr.io/Aeron/decoyssh 上找到。您可以使用它们进行互换。

docker pull docker.io/aeron/decoyssh
# …or…
docker pull ghcr.io/aeron/decoyssh

应用程序选项

使用 -h--help 选项运行应用程序将显示以下内容

Usage: decoyssh [OPTIONS]

Options:
  -a, --address [<ADDRS>...]  IP address(es) to bind on [default: 0.0.0.0:22]
  -d, --delay <DELAY>         Message delay (in milliseconds) [default: 10000]
  -l, --length <LENGTH>       Maximum line length [default: 32]
  -c, --capacity <CAP>        Maximum number of connections [default: 4096]
  -h, --help                  Print help
  -V, --version               Print version

所有选项都作为环境变量提供,名称与值名相同,但带有前缀 DECOYSSH_。例如,DECOYSSH_ADDRSDECOYSSH_DELAY 等。

[!注意] 提供了与旧版 IPv4 和 IPv6 地址的向后兼容选项和环境变量。它们具有与之前相同的别名:-4-6--ipv4-address--ipv6-address,分别对应 DECOYSSH_IPV4_ADDRDECOYSSH_IPV6_ADDR

容器运行

运行容器相当直接

docker -d --restart unless-stopped --name decoyssh \
    --user=65534 \
    -p 22/2222:tcp \
    -e DECOYSSH_PORT=2222 \
    docker.io/aeron/decoyssh

默认情况下,容器化应用程序仅使用 IPv4 地址和 2222 端口,而不是 22

如果您计划仅使用 IPv4 绑定,可以使用特定于容器的 DECOYSSH_PORT 变量来更改监听/公开的端口号。否则,请明确使用标准 环境变量

别忘了无特权用户的小技巧。容器本身不会强制任何特定的 UID。

依赖项

~8–18MB
~260K SLoC