我正在我的系统上运行简单的端口扫描,我不知道我是否感到困惑。
运行后lsof -i
我的结果是:
命令 PID 用户 FD 类型 设备大小/关闭节点名称 firefox-e 8008 legion 43u IPv4 96999 0t0 TCP KryptL0c:44376->ec2-34-212-188-196.us-west-2.compute.amazonaws.com:https (已建立) firefox-e 8008 legion 67u IPv4 84170 0t0 TCP KryptL0c:52778->ord37s09-in-f10.1e100.net:https (已建立) firefox-e 8008 legion 94u IPv4 93549 0t0 TCP KryptL0c:56526->ord37s35-in-f1.1e100.net:https (已建立) firefox-e 8008 legion 98u IPv4 89869 0t0 TCP KryptL0c:47874->ec2-52-86-133-10.compute-1.amazonaws.com:https (已建立) firefox-e 8008 legion 126u IPv4 98838 0t0 TCP KryptL0c:40792->ord38s28-in-f10.1e100.net:https (已建立) firefox-e 8008 legion 131u IPv4 98839 0t0 TCP KryptL0c:41878->ord38s01-in-f10.1e100.net:https (已建立) firefox-e 8008 legion 133u IPv4 88016 0t0 TCP KryptL0c:44998->server-99-84-167-136.ord52.r.cloudfront.net:https (已建立) firefox-e 8008 legion 176u IPv4 88018 0t0 TCP KryptL0c:51574->ord37s18-in-f2.1e100.net:https (已建立) firefox-e 8008 legion 179u IPv4 86297 0t0 TCP KryptL0c:46752->142.250.123.157:https (已建立) firefox-e 8008 legion 184u IPv4 84401 0t0 TCP KryptL0c:40262->ord38s08-in-f2.1e100.net:https (已建立) firefox-e 8008 legion 187u IPv4 92092 0t0 TCP KryptL0c:38700->ord38s28-in-f1.1e100.net:https (已建立) firefox-e 8008 legion 193u IPv4 89558 0t0 TCP KryptL0c:40714->ord37s09-in-f2.1e100.net:https (已建立) firefox-e 8008 legion 199u IPv4 90795 0t0 TCP KryptL0c:47760->136.144.59.88:https (已建立) firefox-e 8008 legion 201u IPv4 90789 0t0 TCP KryptL0c:40586->server-99-84-253-65.ord50.r.cloudfront.net:https (已建立) firefox-e 8008 legion 210u IPv4 90803 0t0 TCP KryptL0c:41732->lga15s49-in-f4.1e100.net:https (已建立) firefox-e 8008 legion 214u IPv4 90805 0t0 TCP KryptL0c:45540->rio01s25-in-f3.1e100.net:https (已建立) firefox-e 8008 legion 221u IPv4 97886 0t0 TCP KryptL0c:41752->ord37s07-in-f14.1e100.net:https (已建立) firefox-e 8008 legion 301u IPv4 92423 0t0 TCP KryptL0c:59832->ord38s04-in-f2.1e100.net:https (已建立)
第一行的端口是 44376,对吗?
如果这是正确的,并且这些服务已经在我的系统上建立,为什么当我运行端口扫描时,nmap -p 1-65535 xxx.xxx.x.xxx
我得到没有开放端口的结果?
答案1
第一行的端口是 44376,对吗?
是的,本地端口是 44376。但是,您正在查看系统与远程主机之间建立的连接。在某个端口上建立连接并不意味着该端口上有一个监听套接字。
这里,由于本地端口较高(>40,000)且远程端口为 443(HTTPS),我们可以高度自信地推断这是一个与互联网上某些 HTTPS 服务的传出连接。
我假设您使用的是 macOS 或 BSD。
考虑以下实际监听器的示例(因此-P
端口不会解析为“已知端口名称”):
$ lsof -i udp -P
…
syncthing 16758 fuzzy 7u IPv6 0xd2b0d06f6f1a443d 0t0 UDP *:22000
…
$ lsof -i tcp -P
…
syncthing 16758 fuzzy 17u IPv6 0xd2b0d06f70a57bfd 0t0 TCP *:22000 (LISTEN)
…
如您所见,它们很容易区分:它们没有远程端点。因为在 TCP 上有一个正确的“正在监听”状态,所以这也被明确列出。对于 UDP,事情就没那么简单了。
如果我对 TCP 端口 22000 运行 NMAP,它会报告为打开。
答案2
KryptL0c:44376->ec2-34-212-188-196.us-west-2.compute.amazonaws.com:https
在这种情况下,我们可以推断该连接从 的客户端主机:端口 源指向 的KryptL0c:44376
目标->
服务器主机:端口ec2-34-212-188-196.us-west-2.compute.amazonaws.com:https
,因为 https 是已知服务。
源端口用于出站客户端连接,没有服务监听它们,这就是它们不显示为打开的原因。例如,每个 Web 浏览器连接到 Web 服务器都将使用不同的客户端/源端口来打开网络连接。连接关闭时,端口将自动关闭,下一个连接将使用新端口。源端口通常为高数字,高于 32768。
此外,常见的服务端口号使用 /etc/services 文件解析为类似的名称https
(即端口 443),并且通常可能不会像这样在输出中显示为数字。