有趣的SSH蜜罐

AMDRadeonM470X 2023-7-5 71 7/5

Endlessh:SSH tarpit

Endlessh 是一个 SSH 陷阱,或者说“蜜罐”他会使尝试连接的人陷入 非常缓慢地发送无尽的、随机的 SSH 横幅。它使 SSH 客户端一次锁定数小时甚至数天。目的是将真正的 SSH 服务器放在另一个端口上,然后让脚本小子陷入这个 tarpit,而不是打扰真正的服务器。

由于 tarpit 在任何加密交换发生之前就位于横幅中,因此该程序不依赖于任何加密库。它是一个简单、单线程、独立的 C 程序。它用于poll()一次捕获多个客户端。

用法

使用信息打印有-h

Usage: endlessh [-vhs] [-d MS] [-f CONFIG] [-l LEN] [-m LIMIT] [-p PORT]
  -4        Bind to IPv4 only
  -6        Bind to IPv6 only
  -d INT    Message millisecond delay [10000]
  -f        Set and load config file [/etc/endlessh/config]
  -h        Print this help message and exit
  -l INT    Maximum banner line length (3-255) [32]
  -m INT    Maximum number of clients [4096]
  -p INT    Listening port [2222]
  -s        Print diagnostics to syslog instead of standard output
  -v        Print diagnostics (repeatable)

论证顺序很重要。配置文件是在-f 处理参数时加载的,因此只有后面的选项才会覆盖配置文件。

默认情况下不生成任何日志消息。第一个-v启用基本日志记录,第二个-v启用调试日志记录(有噪音)。默认情况下,所有日志消息都发送到标准输出。-s导致它们被发送到系统日志。

endlessh -v >endlessh.log 2>endlessh.err

SIGTERM 信号将正常关闭守护进程,使其能够写入完整、一致的日志。

SIGHUP 信号请求重新加载配置文件 ( -f)。

SIGUSR1 信号会将连接统计信息打印到日志中。

配置文件示例

配置文件的语法与 OpenSSH 类似。

# 监听新SSH连接的端口.
Port 2222

# 发送无尽的一行一行横幅.这个是延迟.
# 每一行之间以毫秒为单位.
Delay 10000

# 每行的长度是随机的。这个控制最大
# 每条线的长度.较短的长度可能会让客户待更长时间
# 它们在一定字节数之后放弃.
MaxLineLength 32

# 一次接受的最大连接数。连接超出
# 这不会立即被拒绝,而是会在队列中等待.
MaxClients 4096

# 设置日志的详细级别.
#   0 = Quiet
#   1 = Standard, useful log messages
#   2 = Very noisy debugging information
LogLevel 0

# 设置侦听socket的组
#   0 = Use IPv4 Mapped IPv6 (Both v4 and v6, default)
#   4 = Use IPv4 only
#   6 = Use IPv6 only
BindFamily 0

构建问题

一些更深奥的系统在构建时需要额外的配置。

RHEL 6 / CentOS 6

该系统使用的 glibc 版本早于 2.17(2012 年 12 月),并且 clock_gettime(2)仍在 librt 中。对于这些系统,您需要链接 librt:

make LDLIBS=-lrt

Debian/Ubuntu

这些系统不包含 libc 中的所有必要功能,并且链接器需要一些额外的库:

make CC=gcc LDLIBS='-lnsl -lrt -lsocket'

如果您不使用 GCC 或 Clang,还可以覆盖CFLAGSLDFLAGS 删除特定于 GCC 的选项。例如,在 Solaris 上:

make CFLAGS=-fast LDFLAGS= LDLIBS='-lnsl -lrt -lsocket'

这些系统上的功能测试宏并不可靠,因此您可能还需要-D__EXTENSIONS__CFLAGS.

开放BSD

手册页需要进入 OpenBSDman命令的不同路径:

diff --git a/Makefile b/Makefile
index 119347a..dedf69d 100644
--- a/Makefile
+++ b/Makefile
@@ -14,8 +14,8 @@ endlessh: endlessh.c
 install: endlessh
        install -d $(DESTDIR)$(PREFIX)/bin
        install -m 755 endlessh $(DESTDIR)$(PREFIX)/bin/
-       install -d $(DESTDIR)$(PREFIX)/share/man/man1
-       install -m 644 endlessh.1 $(DESTDIR)$(PREFIX)/share/man/man1/
+       install -d $(DESTDIR)$(PREFIX)/man/man1
+       install -m 644 endlessh.1 $(DESTDIR)$(PREFIX)/man/man1/

 clean:
        rm -rf endlessh

安装

clone https://github.com/skeeto/endlessh

如果你使用的是debian或者ubuntu可能会在编译二进制文件时遇到错误,你需要安装名为libc6-dev的软件包

apt install libc6-dev

有趣的SSH蜜罐

然后你需要将二进制文件移动到路径中的文件夹中,我通常移动到/usr/local/bin/

接着把systemd服务文件复制到systemd系统中

cp util/endlessh.service /etc/systemd/system

启动systemd服务

systemctl enable endlessh

有趣的SSH蜜罐

最后一步,创建配置文件,先创建一个名为endlessh的文件夹,然后创建一个名为config的文本,我们只需要指定端口,也就是默认的22(如果一直用的默认的话记得把ssh端口转移走)

有趣的SSH蜜罐

有趣的SSH蜜罐

接下来就可以启动了

systemctl start endlessh

有趣的SSH蜜罐

- THE END -

AMDRadeonM470X

7月05日20:47

最后修改:2023年7月5日
0

非特殊说明,本博所有文章均为博主原创。

共有 2 条评论

回复给 AMDRadeonM470X 点击这里取消回复。

  1. WOPI

    610d16eb006f350253b8faa0fc3fa285c99e643625a3127afe15afed5bec8776