跳至内容

OpenSSH/第三方工具

100% developed
来自维基教科书,开放世界中的开放书籍
autossh - 自动重新启动 SSH 会话和隧道
scanssh - SSH 主机和一些代理类型扫描器
sshfs - 基于 SFTP 的用户空间文件系统客户端
sshfp - 从known_hosts文件或ssh-keyscan(1)生成SSHFP DNS记录
keychain - 在登录之间重复使用 ssh-agent 和/或 gpg-agent
rsync - 使用增量编码同步文件和目录
gstm - 管理 SSH 隧道端口重定向的图形界面
sslh - 协议多路复用器
sshguard - 带有数据包过滤的入侵检测系统
ssh-audit - 识别服务器的横幅、密钥交换、加密、MAC、压缩、兼容性和其他信息。
webcat - 可以使用 WebSockets[1]进行隧道传输,否则与netcatcurl非常相似。

scanssh扫描主机和网络以查找正在运行的服务[2]。它检查服务器的版本号并将结果显示在列表中。它检测 ssh、sftp 和几种类型的 SOCKS、HTTP 和 telnet 代理。

扫描一个小型的子网以查找 ssh 服务器

$ sudo scanssh -n 22 -s ssh 192.168.100.32/26

扫描同一个小型网络以查找 SOCKS 代理

$ sudo scanssh -s socks5,socks4 192.168.100.32/26

可以设置不同的扫描速度,以及随机采样。开放代理检测扫描可检测常见端口上的开放代理。

随机扫描 172.16.1.1 到 172.31.254.254 之间的 1000 个主机,速度为每秒 200 个

$ sudo scanssh -r 200 -p random(1000)/172.16.0.0/12

要扫描的主机和网络可以指定为 IPv4 地址或 CIDR 格式的 IP 前缀,其中包含 IP 地址和网络掩码。可以通过在地址规范的末尾添加冒号来追加端口。扫描主机顺序是随机的,但可以通过以下两个参数进行修改,randomsplit

random(n[,seed])/从指定为扫描目标的范围内选择 n 个随机地址。n 是要在给定网络中随机创建的地址数量,而 seed 是伪随机数生成器的可选种子。例如,可以通过将 'random(10000)/0.0.0.0/0' 指定为地址来对来自互联网的 10000 个随机 IPv4 主机进行采样。

split(s,e)/选择要使用的地址范围的特定段。e 指定并行段数,而 s 是此特定扫描使用的段号。这可用于通过从每个主机扫描不同的段来从多个主机并行扫描。

-n 指定要扫描的端口号。端口以逗号分隔。每个指定的扫描器都会针对此列表中的每个端口运行。默认端口为 22。

扫描端口 22 和 2022 上的 SSH 服务器

$ sudo scanssh -s ssh -n 22,2022 192.168.0.0/24

sshfs基于用户空间文件系统 (FUSE) 接口构建,允许非特权用户创建安全可靠的文件系统框架。它允许通过利用 SFTP 子系统将远程文件系统挂载为本地文件夹。它使用 SFTP 将远程服务器上的目录挂载为本地目录。这样,所有使用应用程序都可以像本地一样与该目录及其内容进行交互。顾名思义,这是在用户空间完成的,而不是像文件系统通常需要的那样在内核中完成。FUSE 具有稳定的 API 库以及与 C、C++ 和 Java 的绑定。在这种情况下,它专门是通过ssh(1)运行的 SFTP 客户端,然后将其挂载为文件系统。

有关sshfs的更多信息,请参见SFTP上的 Cookbook 部分。

sshfp使用存储在known_hosts文件中的公钥或ssh-keyscan(1)提供的公钥生成 SSHFP NS 记录,作为使用 DNS 发布 SSH 密钥指纹的一种方式。这反过来允许在使用之前使用 DNSSEC 查询来验证 SSH 密钥。DNS 中的 SSHFP 资源记录用于存储与主机名关联的 SSH 公共主机密钥的指纹。记录本身包含算法编号、指纹类型和公共主机密钥的指纹。

有关 SSHFP 的详细信息,请参见RFC 4255

keychainssh-agent(1)的另一个管理器,允许多个 shell 和进程(包括cron(8)作业)使用代理持有的密钥。它通常集成到特定于桌面的工具中,如 OS X 上的 Apple Keychain 或 KDE 的 kdewallet。http://www.funtoo.org/en/security/keychain/intro/

rsync是一个文件传输工具,可高效地在计算机之间传输文件。它可以在 SSH 之上运行,也可以使用自己的协议。SSH 是默认协议。http://rsync.samba.org/

有关在脚本中使用rsync进行实时或脚本化备份的示例,请参见自动备份上的 Cookbook 部分。

gstm (Gnome SSH Tunnel Manager)

[编辑 | 编辑源代码]

gstm是管理 SSH 连接,尤其是端口转发的图形界面。http://sourceforge.net/projects/gstm/

sslh是协议多路复用器。它接受指定端口上的连接,并根据客户端发送的第一个数据包转发连接。它可用于在 SSH、SSL、HTTP、OpenVPN、tinc 和 XMPP 之间共享单个端口。https://www.rutschle.net/tech/sslh/README.html

有关带示例的讨论,请参见多路复用部分。

sshguard是一个入侵防御系统。它监控日志以检测不良活动模式,并触发相应的包过滤规则,持续时间越来越长。它可以与除 SSH 之外的其他一些服务一起使用。http://www.sshguard.net/

ssh-audit

[编辑 | 编辑源代码]

ssh-audit是一个 Python 脚本,用于收集有关 SSH 服务器的信息。它可以识别使用的横幅、密钥交换、加密、消息认证代码 (MAC) 算法、压缩、兼容性设置以及其他几个与安全相关的方面。https://github.com/arthepsy/ssh-audit

其他第三方工具

[编辑 | 编辑源代码]

以下工具在使用 OpenSSH 时很有用,但不在本书详细介绍的范围内。尽管如此,它们还是值得一提,足以列出

netstat – 显示网络连接、路由表、接口统计信息、伪装连接和组播成员资格
ncnetcat – Netcat,TCP/IP 万能工具。
socat – SOcket CAT,与 netcat 类似的多用途中继。
nmap – 网络探索工具和安全扫描器。
tcpdump – 实时显示网络流量。
telnet – 与其他主机进行未加密的交互。
pagsh – 创建新的凭证缓存沙箱和进程身份验证组 (PAG)。
nohup – 调用忽略 HANGUP 信号的进程。
sudo – 以其他用户身份执行程序。
lftp – 支持 SFTP 的便捷交互式多协议文件传输文本客户端。
curl – 支持 SCP 和 SFTP 的多协议文件传输文本客户端。
tmux – 终端多路复用器。


参考资料

[编辑 | 编辑源代码]
  1. Stefan Tatschner (2020-10-15). "SSH (反向) 通过 Websocket 隧道". 检索于 2020-10-20.
  2. Niels Provos; Peter Honeyman (2001). "ScanSSH - 扫描互联网上的 SSH 服务器" (PDF). 密歇根大学信息技术集成中心 (CITI). 检索于 2016-03-05.

 

华夏公益教科书