我可以使用 Telnet 来验证不同主机上的端口正在运行哪种服务吗?

问题描述 投票:0回答:1

在我的笔记本电脑上使用 Ubuntu 22.04,我有另一台机器的套接字地址

192.168.38.201:8080
。当我在我的终端上通过 telnet 登录时,它似乎确实 work,因为在屏幕上出现了这个

$ telnet 192.168.38.201 8080
Trying 192.168.38.201...
Connected to 192.168.38.201.
Escape character is '^]'.
^]
telnet> display

但是我能从中得出什么样的结论呢?我有那个特定端口的防火墙访问权限,并且 some 服务(可能是 http、SSH、redis 等)正在该端口上运行?连接后,我是否可以查询更多信息,例如正在运行的服务类型、支持的协议等?

如果 telnet-ing 失败,我是否可以断定没有服务正在运行或者我没有防火墙访问权限?

sockets ubuntu networking telnet
1个回答
0
投票

telnet
所做的就是打开到该端口的连接并尝试建立“交互式会话” - 您键入的所有内容都将发送到远程主机并且远程主机回复的所有内容都将回显回复给你。

它主要用作与基于文本的远程服务进行双向通信的便利工具 - NOT 安全工具。


你非常想使用像 nmap 这样的工具(在任何主要的 GNU / Linux 发行版中应该作为一个包提供)来解决任何类型的“好奇”问题。

它有很多选项,但您可以找到一些关于如何在线使用它的不错的指南 - 例如 https://phoenixnap.com/kb/nmap-commandshttps://www.stationx。 net/nmap-备忘单/


回答你的“如果远程登录失败”——这会导致“它是如何失败的?”的问题。

因为可能有几种不同的方式“失败”可能并不明显:

  • telnet
    使用 TCP 协议 - 因此它不会告诉您有关 UDP / ICMP 或其他协议的任何信息。
  • 您的防火墙可能只允许一个方向的流量。虽然这通常会导致
    telnet
    “失败”——你的防火墙可能配置错误,以至于它允许建立 TCP 连接所需的所有控制数据包——但仍然不允许发送任何数据。
  • 您连接的服务可能不支持任何输入和/或输出

为您提供更多背景知识:TCP 只是在 IP 或通常认为的“互联网”之上实施的众多协议之一。

TCP 是有状态的、基于连接的协议。

UDP 是无状态和无连接的。一些核心服务使用 UDP,例如 DNS。

nmap
这样的面向安全的工具被设计成尽最大努力找出到底发生了什么。但是有很多事情可能导致
telnet
“失败”。

从历史上看,

telnet
是在广泛采用加密外壳(例如
ssh
)之前使用的;您将使用
telnet
在远程计算机上获得交互式命令提示符。但通常情况下,当两者无法就通用字符集达成一致时,它就已经惨败了。

它也从来没有打算处理任何二进制数据。

所以基本上,如果

telnet
成功,那么可以建立双向基于文本的通信渠道。如果它没有成功,就不能可靠地假设其他任何东西。


由于您在问题中使用的是私有 IP 地址 - 请注意,您确实应该针对您的

公共 IP 地址
以及从outside 网络的机器上运行诸如nmap 之类的工具。

例如,您可以使用 Amazon AWS 等云提供商的免费套餐来部署 Debian 或 Alpine 等非常基本的映像,以从“外部”针对您的公共 IP 运行

nmap

© www.soinside.com 2019 - 2024. All rights reserved.