你能在互联网上隐藏服务器的存在吗?

信息安全 网络
2021-08-14 11:13:26

是否有可能看起来好像服务器不存在?除非在请求中提供特定短语,否则是否有可能让所有请求都认为主机名无法解析?是否有一些服务器存在无法被服务器所有者隐藏的证据?会有任何实际的附加安全性吗?

4个回答

您可以将服务器设置为正常丢弃所有传入的数据包,并且仅在它获取/看到一组指定特定端口序列的数据包后才打开一个端口(这称为端口敲击)。我在我的服务器上使用这种技术;您通常看不到服务器,因为它会丢弃所有传入的数据包。一旦端口敲门数据包到达服务器,服务器将接受来自“敲门”地址的数据包,但继续丢弃来自其他地址的数据包。

这种方法的安全性更好,因为 IP 扫描和尝试的暴力破解对您来说不是什么大问题。为了破解服务器,必须进行侦察,找出正在运行的服务,你有什么样的操作系统等等。通过拒绝攻击者这个信息,它使他更难为你的设备设计攻击。这种防御的弱点是,如果攻击者可以看到传入的敲门数据包,那么他们也可以打开该端口。

是否有可能看起来好像服务器不存在......除非在请求中提供了特定的短语?

我的猜测是您在这里谈论的是 HTTP(即“web”)和 HTTP 请求,尽管您没有指定您实际指的是哪种请求。在 HTTP 请求的情况下,这种隐藏是不可能的,因为 HTTP 是 TCP 之上的应用协议。这意味着客户端首先需要建立一个 TCP 连接,该连接涉及来自服务器的回复,然后客户端甚至会发送应用程序数据(即 HTTP 请求),因此 HTTP 服务器的存在与请求无关。

这可能与其他协议不同。例如,DNS(将主机名解析为 IP 地址)通常在 UDP 中处理,这与 TCP 是无连接的。这意味着带有有效负载的请求是客户端发送的第一个数据包。因此,可以使用 UDP 创建服务器,该服务器仅在 DNS 请求针对特定域时才回复并丢弃任何其他请求。这样,只有在发送了正确的请求时,服务器才会显示它的存在。类似的事情可以用 SIP(​​互联网上的电话)来完成,这通常也是通过 UDP 完成的。

是否有可能让所有请求都认为主机名无法解析......?

将主机名解析为 IP 地址甚至在将请求发送到该 IP 地址上的服务器之前完成,通常服务器本身甚至不参与此 DNS 解析过程。这意味着即使使用无连接协议,如果请求错误,客户端也不会获得无法解析名称的信息。客户端将获得的最多信息是目标未回复的信息,这可能被解释为没有在此 IP 地址上设置服务器或服务器已关闭、受防火墙保护或只是丢弃了意外的数据包。

是否有可能看起来好像服务器不存在?

是的,尽管这不是微不足道的。当服务器不存在时,这取决于您的 ISP 的行为。一些 ISP 将其路由器配置为在数据包尝试到达的 IP 不存在时丢弃数据包,其他 ISP 将拒绝数据包消息发送回发送者。此外,一些路由器具有自适应行为,如果它认为它可能受到攻击,就会改变它们的行为。一些 ISP 可能会根据探测数据包的来源进行区分(例如,来自经常承载恶意客户的国家/ISP 的数据包可能会比那些具有良好网络实践的数据包更具敌意)。

如果您将服务器配置为简单地丢弃所有无法识别的数据包,那么如果您的 ISP 通常发送拒绝消息,这实际上可能是服务器存在的证据。如果您的 ISP 的路由器在主动攻击期间自适应地改变其行为,并且您的服务器没有跟上 ISP 的行为,那么这实际上可能成为服务器的证据。此外,您的 ISP 可能有自己的回程 ISP,它们可能有自己的一套行为。

是否有可能让所有请求都认为主机名无法解析

是的,只是不要在公共 DNS 系统中注册您的主机名。公共 DNS 系统中的主机名是有意为公共记录的。如果它在公共 DNS 中注册,那么任何人都可以查询 DNS 记录以查找与主机名相关的 IP 地址。但是,您可以定义仅由您的机器识别的主机名(即使用主机文件)或运行您自己的私有 DNS 服务器。

是否有一些服务器存在无法被服务器所有者隐藏的证据?

任何可公开路由的 IP 地址都有公共所有权记录,可以使用 whois 工具查询该记录,以找出您的互联网服务提供商是谁。您的 ISP(或攻击您的 ISP 或与您的 ISP 合作的对手)可以监视通过其网络的任何数据包,并且他们可以看到没有更早的出站数据包的入站数据包作为服务器的证据。

会有任何实际的附加安全性吗?

如果您一开始就有糟糕的安全实践,那么隐形可能会有效地阻止许多头脑简单的机器人和不成熟的攻击者。更老练的攻击者可以找到绕过隐身的方法。如果您有良好的安全实践,使用强身份验证和加密,那么在安全性方面隐藏并不重要。

隐藏叶子的最佳位置可能是将其隐藏在树/森林中。如果您运行一个公知的服务器并且您加密所有到服务器的流量(仅限 HTTPS),那么外部人员几乎无法区分前端站点的流量和隐藏站点的流量。您唯一需要考虑的是 TLS 会泄漏 SNI 标头中的目标主机名。只要您欺骗您的 SNI 标头或使用前端服务器的主机名,那么您的隐藏服务器就会保持隐藏状态。

我使用fwknop(" Fire W all KN ock OP erator ") 来隐藏端口:

部署了 fwknop 后,任何使用 nmap 查找 SSHD 的人甚至都无法判断它正在侦听 - 如果他们想要针对 SSHD 运行密码破解程序,或者即使他们有 0-day 漏洞利用,也没有什么区别。

它甚至适用于隐藏ssh端口nat

如果您想限制对单个的访问,您可以通过使用默认拒绝策略 ( ) 运行并为特定IP 地址添加允许规则ip来实现相同的效果:iptablesiptables -P INPUT DROPsrc

iptables -A INPUT -i eth0 -p tcp -s 1.2.3.4 --dport 80 -j ACCEPT