我正在摆弄我的电脑,然后我意识到我忘了安装 ssh,所以我安装了它,并想确保端口 22 是开放的。所以我 nmap 了我的本地 IP 192.168.1.107
。然后我决定使用 nmaplocalhost
并得到了两个不同的结果。我以为循环返回会得到相同的结果,但我得到的却是这个。
我的 IP 是 192.168.1.107
用过的:sudo nmap 192.168.1.107
用过的:sudo nmap 127.0.0.1
为什么结果不同?
答案1
打开监听套接字的程序可以决定该服务在哪些 IP 地址上可用。
127.0.0.0/8
正在侦听机器内的任何地址或无法从机器外部(直接)访问的服务::1/128
。这适用于托管敏感服务,无需传输安全性和最少的授权工作。
至于你的邮件服务:除非你想收到邮件与您的机器通信(可能性极小),它不需要监听网络。我甚至认为它不应该监听,因为为什么要制造可能的漏洞呢?
稍微扩展一下@AFH 的命令:在 GNU/Linux 上,该netstat
命令可用于仅显示正在监听的 TCP 连接:
网络状态-tlpn
意义: --tcp,--l听着,--p罗格拉姆,--n數字:
- 仅 TCP
- 仅监听套接字(隐藏连接)
- 显示监听程序的镜像名称(需要root)
- 不解析主机名和端口号
答案2
环回接口旨在允许网络服务在其他接口不可用时仍能运行。这使系统管理员能够在系统中断或网络接口发生故障时仍能通过控制台管理网络服务。
某些服务默认会将侦听器端口绑定到所有接口(即:您的例子中的 0.0.0.0:22 和 0.0.0.0:80),其中还包括环回接口。但请注意,安装服务后不正确配置服务是一种不好的做法,您应该在安装服务后始终更改默认设置。
但是,就您而言,您有一个 sshd 网络服务,并且 Web 服务器正在监听本地地址,并且这些相同的服务也在监听本地主机环回接口。如果网络出现故障,这些服务仍将处于启动状态并可访问,因此可以通过控制台正常关闭它们。
其他都是标准的,人们不一定希望 smtpd、postgresql 在互联网上监听。让 smtp 和 postgresql 服务在环回以外的接口上监听只会引来垃圾邮件发送者或潜在黑客访问您的数据库或其他潜在易受攻击的配置不当的服务。
此外,目前在您当前的配置中,如果您有一个可能从数据库运行的网站,Web 服务器仍然能够访问本地计算机上的数据库(通过环回接口)。但由于该服务未配置为侦听本地地址(仅配置为环回)接口,因此无法进行对数据库的外部访问。
希望这有意义。
而且每个人都讨厌垃圾邮件。:)