sslh:多协议端口复用工具!全参数详细教程!Kali Linux 教程!黑客渗透教程!

简介

SSLH让一个人接受HTTPS,SSH,OpenVPN,TINC和XMPP连接 同一端口。这使得可以连接到这些服务器中的任何一个 港口443(例如,从公司内部的防火墙内部几乎永远不会阻止端口443)仍在该端口上提供HTTPS时。 

sslh 接受指定端口的连接,然后向前根据对第一个数据进行的测试进一步远程客户端发送的数据包。

HTTP,TLS/SSL(包括SNI和ALPN),SSH的探针 OpenVPN,TINC,XMPP,SOCKS5已实现,任何其他可以使用正则表达式测试的协议可以被认可。一个典型的用例是允许服务端口443上的几项服务(例如,从 在公司防火墙内部几乎永远不会阻止港口 443)仍在该端口上提供HTTP。

因此 sslh 充当协议弹药者或总机。使用SNI和ALPN探测器,它使得很好前端到一个虚拟主机农场,该农场在单个IP后面托管地址。

sslh 有一个成熟的钟声和哨子守护程序:特权和功能下降,INETD支持, SystemD支持,透明代理,Chroot,Logging, IPv4和IPv6,TCP和UDP,一种基于叉的,一种基于选择的基于叉子模型,另一个基于libev的模型安装。 

安装

Kali Linux 默认安装好 sslh 工具了。也可以通过以下命令进行安装

sudo apt install sslh

使用

sslh

1. -h

帮助信息

sslh -h

2. -F, --config=<file>

指定配置文件。使用 filename 作为配置文件。如果指定了其他命令行选项,它们将覆盖配置文件的设置。使用简写版本时,请确保 -F 和文件名之间没有空格。

sslh -F /etc/sslh.cfg

3. --verbose-config=<n>

启动时打印配置

sslh --verbose-config=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

4. --verbose-config-error=<n>

打印配置错误

sslh --verbose-config-error=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

5. --verbose-connections=<n>

跟踪已建立的传入地址到转发地址

sslh --verbose-connections=3 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

6. --verbose-connections-try=<n>

连接错误

sslh --verbose-connections-try=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

 

7. --verbose-connections-error=<n>

尝试连接目标

sslh --verbose-connections-error=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

8. --verbose-fd=<n>

文件描述符活动,打开/关闭/诸如此类

sslh --verbose-fd=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

9. --verbose-packets=<n>

已完成探测的十六进制转储数据包

sslh --verbose-packets=1 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

10. --verbose-probe-info=<n>

跟踪探测过程

sslh --verbose-probe-info=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

11. --verbose-probe-error=<n>

探测期间的故障和问题

sslh --verbose-probe-error=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

12. --verbose-system-error=<n>

系统调用失败

sslh --verbose-system-error=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

 

13. --verbose-int-error=<n>

不应该发生的内部错误

sslh --verbose-int-error=2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

14. -V, --version

打印版本信息并退出

sslh -V

15. -f, --foreground

在前台运行,而不是作为守护进程运行

在前台运行。服务器不会分叉,并将保持连接到终端。通常发送到 syslog 的消息也将发送到 stderr

sslh -f -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

16. -i, --inetd

在inetd 模式:使用 stdin/stdout 代替网络监听

作为 inetd 服务器运行。选项 -P(PID 文件)、-p(监听地址)、-u(用户)将被忽略。

sslh -i -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

17. -n, --numeric

将 IP 地址和端口打印为数字

不尝试解析主机名:日志将包含 IP 地址。如果系统的 DNS 很慢且运行 sslh-select 变体,这非常有用,因为 DNS 请求将挂起所有连接。

sslh -n -p 0.0.0.0:443

18. --transparent

设置为透明代理

使 sslh 充当透明代理,即接收服务可以看到原始客户端的 IP 地址。这仅适用于 Linux 且涉及 iptables 设置。

sslh --transparent -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

19. -t, --timeout=<n>

设置连接到默认目标之前的超时时间

将连接转发到超时协议(通常为 SSH)之前的超时时间。默认值为 2 秒。

sslh -t 2 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

20. --udp-max-connections=<n>

并发 UDP 连接数

sslh --udp-max-connections=100 -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

21. -u, --user=<str>

设置后要更改为的用户名

需要在指定的用户名下运行。

sslh -u sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

22. -P, --pidfile=<file>

存储当前实例 PID 的文件路径

指定要写入主服务器 PID 的文件。

sslh -P sslh.pid -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

23. -C, --chroot=<path>

设置后要更改为的根目录

需要在指定的 chroot 下运行。

sslh -C chroot -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

24. --syslog-facility=<str>

系统日志设施

sslh --syslog-facility=daemon -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

25. --logfile=<str>

将消息记录到文件

sslh --logfile=log -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

26. --on-timeout=<str>

超时时要连接的目标

超时期限结束后要连接的协议的名称。默认转发到第一个指定的协议。通常将“ssh”指定为超时协议是有意义的,因为 SSH 规范没有说明谁应该先发言,并且大量 SSH 客户端等待服务器发送其横幅。

sslh --on-timeout=ssh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

27. --prefix=<str>

保留用于测试

sslh --prefix="Test" -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

28. -p, --listen=<host:port>

在 host:port 上监听

要监听的接口和端口,例如 foobar:443,其中 foobar 是接口的名称(通常是 Internet 连接最终到达的 IP 地址)。可以多次指定此项以将 sslh 绑定到多个地址。

29. --ssh=<host:port>

设置 ssh 目标

用于转发 SSH 连接的接口和端口,通常为 localhost:22。

30. --tls=<host:port>

设置设置 TLS/SSL 目标

用于转发 SSL 连接的接口和端口,通常为localhost:443。

请注意,您可以将 sslh 设置为监听 ext_ip:443,将 httpd 设置为监听 localhost:443:这样,您网络内的客户端就可以直接连接到 httpd。

此外,sslh 会探测 SSLv3(或 TLSv1)握手,并拒绝请求 SSLv2 的客户端的连接。这符合
RFC6176 的规定,该规定禁止使用 SSLv2。如果您希望接受 SSLv2,请改用 --default。

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443

31. --ssl=<host:port> (已弃用)

设置 TLS/SSL 目标

'ssl' 设置已弃用,将在 v1.21 中被删除。请改用 'tls'

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:8443

32. --openvpn=<host:port>

设置 OpenVPN 目标

用于转发 OpenVPN 连接的接口和端口,通常为 localhost:1194。

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --openvpn=127.0.0.1:1194

33. --tinc=<host:port>

设置 tinc 目标

用于转发 tinc 连接的接口和端口,通常为 localhost:655。这是实验性的。如果您使用此功能,请报告结果(即使它有效!)

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --tinc=127.0.0.1:655

34. --wireguard=<host:port>

设置 WireGuard 目标

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --wireguard=127.0.0.1:51820

35. --xmpp=<host:port>

设置 XMPP 目标

用于转发 XMPP 连接的接口和端口,通常为 localhost:5222。

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --xmpp=127.0.0.1:5222

36. --http=<host:port>

设置 HTTP (plain) 目标

用于转发 HTTP 连接的接口和端口,通常为 localhost:80。

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --http=127.0.0.1:80

37. --adb=<host:port>

设置 ADB (Android 调试) 目标

 sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --adb=127.0.0.1:5555

38. --socks5=<host:port>

设置 socks5 目标

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --socks5=127.0.0.1:10808

39. --syslog=<host:port>

设置 syslog 目标

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --syslog=127.0.0.1:514

 

40. --msrdp=<host:port>

设置 msrdp 目标

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --msrdp=127.0.0.1:3389

 

41. --anyprot=<host:port>

设置默认目标

如果未找到其他协议,则转发到该接口和端口。由于 sslh 会按照命令行上指定的顺序尝试协议,因此应最后指定此项。如果未指定默认值,sslh 会将未知协议转发到指定的第一个协议。

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --anyprot=127.0.0.1:443

42. --background

在后台运行。如果在配置文件中设置了,则它将覆盖前台(或在命令行中设置,但除非您有个性障碍,否则没有必要在命令行中同时设置两者)。

sslh -p 0.0.0.0:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:8443 --background

sslh-select

因为 sslh-select 工具的选项和 sslh 的一样,所以这里就不再展示其参数功能。

1. -h

帮助信息

sslh-select -h

总结

sslh 是一款强大的多协议端口复用工具,可同时处理 SSH、HTTPS 等流量,提高端口利用率。本文介绍了其基本用法与配置。

在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。

欢迎各位大佬,小白来找我交流。


http://www.niftyadmin.cn/n/5841862.html

相关文章

UE Bridge混合材质工具

打开虚幻内置Bridge 随便点个材质点右下角图标 就能打开材质混合工具 可以用来做顶点绘制

FBX SDK的使用:读取Mesh

读取顶点数据 要将一个Mesh渲染出来&#xff0c;必须要有顶点的位置&#xff0c;法线&#xff0c;UV等顶点属性&#xff0c;和三角面的顶点索引数组。在提取这些数据之前&#xff0c;先理解FBX SDK里面的几个概念&#xff1a; Control Point 顶点的位置&#xff0c;就是x,y,z…

oracle: 表分区>>范围分区,列表分区,散列分区/哈希分区,间隔分区,参考分区,组合分区,子分区/复合分区/组合分区

分区表 是将一个逻辑上的大表按照特定的规则划分为多个物理上的子表&#xff0c;这些子表称为分区。 分区可以基于不同的维度&#xff0c;如时间、数值范围、字符串值等&#xff0c;将数据分散存储在不同的分区 中&#xff0c;以提高数据管理的效率和查询性能&#xff0c;同时…

CSDN原力值提升秘籍:解锁社区活跃新姿势

在 CSDN 这个技术交流的大舞台上&#xff0c;原力值不仅是个人活跃度的象征&#xff0c;更是开启更多权益与福利的钥匙。最近&#xff0c;我出于自身需求&#xff0c;一头扎进了提升原力值的研究中&#xff0c;经过多方探索与资料整理&#xff0c;现在就迫不及待地把这些干货分…

Hugging Face GGUF 模型可视化

Hugging Face GGUF 模型可视化 1. Finding GGUF files (检索 GGUF 模型)2. Viewer for metadata & tensors info (可视化 GGUF 模型)References 无知小儿&#xff0c;仙家雄霸天下&#xff0c;依附强者才是唯一的出路。否则天地虽大&#xff0c;也让你们无路可走&#xff0…

50【Windows与Linux】

大家可能有些人听过Linux系统&#xff0c;很多初学者被灌输的理念就是服务器必须要装Linux系统 什么是系统&#xff1f; 比如你的电脑是Windows系统的&#xff0c;你手机是Android系统的&#xff0c;物理设备都需要系统&#xff0c;系统你可以理解成直接控制物理设备的一个东…

谷歌Titans模型论文解析,Transformer迎来变革拐点——DeepSeek能否“接招”?

一、引入 Titans 模型 我们将深入探讨谷歌研究院的一篇新论文《Titans: Learning to Memorize at Test Time》&#xff0c;该论文介绍了一种名为 Titans 的新模型架构。 Titans 在缓解 Transformer 二次方成本问题的同时&#xff0c;展现出了令人期待的成果。Titans 模型的设…

《机器学习数学基础》补充资料:仿射变换

本文是对《机器学习数学基础》 第 2 章 2.2.4 节齐次坐标系的内容拓展。 1. 名称的来源 仿射&#xff0c;是英文单词 affine 的中文翻译。 单词 affine&#xff0c;读音&#xff1a;[ə’faɪn]。来自于英语 affinity。英语词根 fin 来自于拉丁语 finis&#xff0c;表示“边…