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,还可以覆盖CFLAGS
并LDFLAGS
删除特定于 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
然后你需要将二进制文件移动到路径中的文件夹中,我通常移动到/usr/local/bin/
接着把systemd服务文件复制到systemd系统中
cp util/endlessh.service /etc/systemd/system
启动systemd服务
systemctl enable endlessh
最后一步,创建配置文件,先创建一个名为endlessh的文件夹,然后创建一个名为config的文本,我们只需要指定端口,也就是默认的22(如果一直用的默认的话记得把ssh端口转移走)
接下来就可以启动了
systemctl start endlessh
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:http://m8box.cn:8084/%e6%9c%89%e8%b6%a3%e7%9a%84ssh%e8%9c%9c%e7%bd%90/
WOPI
610d16eb006f350253b8faa0fc3fa285c99e643625a3127afe15afed5bec8776
AMDRadeonM470X博主
https://ts.isc.org.cn/#/search/myComplaints
2307KfJdU8