我的家庭网络目前运行着多台服务器。其中包括一台 Minecraft 服务器、一台 Git 服务器和一台 Teamspeak 服务器(后两台在 Raspberry Pi 上的 docker 上运行)。
为了让我和我想要与之共享服务器的人能够更轻松一些,我决定设置一个 DynDns,使用免费的 DynDns 提供商(No-Ip),而没有考虑潜在的安全风险。
几天前,我开始 ping 给定的域名,结果显示我的公共 IP 地址清晰可见,这时我意识到了其中一种风险。然后,我尝试使用一个通用的“IP 查询”网站,果然,我告诉该域名的每个人都可以看到我的公共 IP 地址(以及以某种方式找到它的每个人)。
我当然知道这是一个巨大的安全风险,经过几天的努力寻找合适的解决方案后,我现在的问题是:
我如何隐藏/屏蔽我的公共 IP,同时仍然能够有效地与朋友和 IT 同学共享我的服务器?
或者换句话说:我该如何摆脱这种风险?
答案1
几天前,我开始 ping 给定的域名,结果显示我的公共 IP 地址清晰可见,这就是其中一种风险。然后,我尝试使用通用的“IP 查询”网站,果然,只要我告诉域名,每个人都可以看到我的公共 IP 地址(以及以某种方式找到该域名的每个人)。
是的,DNS 的工作方式一直都是这样的(无论是 DynDNS 还是其他方式)。您的连接永远不会中断通过DNS;它的工作只是将您指向特定的 IP 地址。
我当然知道这是一个巨大的安全风险
不,确实不是。
首先,正如其他人所解释的那样,首先需要知道 IP 地址才能联系服务器,因为互联网实际上根本没有办法将数据包“发送到域名”——它总是需要先转换为 IP 地址。所以一般来说,IP 地址并不是需要小心保护的东西;它们更像是基线知识水平。(在某些方面,知道域名实际上比只知道 IP 地址可以获得更多访问权限!)
但即使假设你的 IP 地址可以保持隐藏(假设连接是由于您的服务器仍会以完全相同的方式接受对完全相同服务的连接(以某种方式通过域名中继),因此会面临与以前相同的风险。
重点是,攻击不是通过 IP 地址的某种“后门访问”进行的;而是通过相同的服务您开放给公众访问。您的服务器可以执行的所有操作都由接受连接的特定服务(例如您的 Minecraft 服务器)决定。
最后,即使通信需要 IP 地址,不知道地址对攻击者来说也不是太大的障碍。大多数攻击不是来自专门针对你的人,而是来自能够扫描整个互联网寻找一些易受攻击的服务。IPv4 地址相对较少(少于 232 ),而且只需要几个小时,如果不是几分钟(取决于网络连接),扫描特定开放端口的所有可能的 IPv4 地址 - 然后可能还需要几个小时来探测它们是否存在一些已知的漏洞。
这意味着,即使你保留了你的 IP 地址完全地私密,各种机器人几乎会在您的服务器上线的同一天开始敲您的门。我让新安装的 VPS 在没有防火墙的情况下运行了一个小时,它已经记录了数千次 SSH 登录尝试。
或许唯一实际的知道您的地址所带来的风险是成为 DDoS 攻击目标的可能性,但如果您的目标受众是您在现实生活中认识的人,我认为风险并不大。确实存在“代理”服务,它们允许您通过在前面使用代理来隐藏自己的地址,从而减轻这种情况。最常见的是,这些用于基于 HTTP 的服务(不仅隐藏后端服务器,还在正常运行期间提供缓存)——您可能听说过 CloudFlare 等 CDN——但甚至还有一些专门用于游戏服务器的 CDN,通常不是免费的。
我该如何摆脱这个风险?
你没有描述任何具体的风险——但只是重复一下,知道 IP 地址并不是导致服务器易受攻击的原因——服务在其上运行并接受连接,可能会(也可能不会)使其变得脆弱。
因此,减轻实际风险的主要方法有:
确保服务使用强身份验证(即没有容易猜测的密码),并保持软件更新以降低预先身份验证攻击的风险。
使用其他方式(非基于 DNS)来限制谁可以连接到它们。出于各种原因,最好使用防火墙(nftables/iptables/ufw),例如确保新服务在设置之前不会公开访问,或者将服务限制为特定的客户端 IP 地址。
通常使用私有 VPN(OpenVPN、Tailscale 等)来限制访问,这将提供额外的身份验证层,特别是当某些客户端具有动态 IP 地址时。
在服务器中使用权限分离,以便如果即使有人入侵了某项特定服务,他们也无法破坏其他服务。尽可能少地以“root”身份运行服务;在不同的系统帐户下运行不同的服务(例如,拆分“www-data”);在容器中运行服务;使用 AppArmor。
正如 Albin 所暗示的,将你的服务器与网络的其余部分隔离开来,这样如果如果有人入侵,他们只能破坏服务器,而无法破坏 LAN 的其余部分。这通常意味着两个单独的子网,一个用于服务器(“DMZ”),另一个用于其余部分,路由器有自己的防火墙来限制流量的去向。
检查服务器正在做什么。即使您没有高级监控系统,至少也要
htop
时不时地运行一下;查看最新的系统日志;可能是 vnstat 或 systemd-cgls。换句话说,寻找任何异常情况(无论是您自己的服务崩溃,还是有人在运行比特币矿工,还是您的硬盘即将崩溃)。
答案2
您无法“隐藏”您的公共 IP 地址。公共 IP 地址的意义在于公开。如果您隐藏了您的 IP 地址,那么就没有人能够再访问您的服务器了。
知道公共地址并不是导致服务器不安全的原因。您需要考虑其他多种安全概念(防火墙、更新服务器、代理等)。我建议您先阅读有关如何保护公共服务器的信息。如果您对实施有具体问题,可以在此处提出。反向代理可能就是您正在寻找的。它可以“隐藏”其背后的任何基础设施(包括 IP 地址等)。但是,您仍然需要该反向代理的公共 IP 地址。因此,您要么必须为代理获取第二个公共 IP,要么获取具有某种服务的代理服务器,例如通过托管在互联网上的 VM(我相信您可以使用各种服务)。
如果你真的需要要想立即上网,请设置 DMZ 并将您的公共服务器放在那里。这不会保护您的服务器,但至少您的其余网络不会受到损害。但鉴于您对网络安全的了解,我不建议这样做。
请注意: 作为重力指出在某些/大多数终端消费者路由器中,内置 DMZ 功能实际上是一种“暴露主机”功能。请注意,“暴露主机”功能不会像适当的 DMZ 那样将 DMZ 与 LAN 隔离,从而使您的 LAN 网络面临各种安全问题。如果您使用路由器的内置功能,请确保您了解 DMZ 功能的工作原理。
答案3
正如其中一条评论所说:
您正在寻找反向代理,它可以允许您隐藏您的 IP 地址。
互联网上有一些服务,例如 ngrok(带有免费套餐的商业服务;用于一些实验),允许使用他们的服务器在互联网上发布 DNS 名称,然后您的服务器将连接到该服务器并建立端口隧道。使用某些 VM/容器托管解决方案的免费套餐,您可以创建完全由您拥有和设置的类似服务。
这样,来自互联网的访问者就可以(从 DNS)知道这个云实例的 IP 地址并通过名称访问它,并且数据包会通过 SSH 隧道或类似方式(从您的家庭 LAN 发起)转发到您想要使用的隐藏服务器。
我的一个用例是将 GitHub 和类似服务的 web-hook(有关新提交测试的通知)接收到在没有公共地址/NAT/...的企业 LAN 内运行的 CI 服务器中。
答案4
你所要求的自相矛盾。
无论你是否使用 DynDNS,你的公共 IP 地址都是公开的。你连接的互联网上每个网站到知道你的公网 IP 地址,否则你将无法连接。这就是 TCP/IP 协议的工作原理。
如果您向任何人发送电子邮件,您的公共 IP 地址可能会永久显示在收件人收到的电子邮件标题中。还有许多其他情况,您的公共 IP 地址会被许多人知道。
如果你想自己托管任何服务,那么你必须一些IP 地址对互联网可见。即使你设置了反向代理(如其他一些答案所建议的那样),你也必须使反向代理众所周知。您连接的任何网站到互联网上的用户同样会公开其 IP 地址。这是在互联网上提供服务不可或缺的一部分。
一些 VPN(或类似服务)提供商试图通过营销让人们相信,将他们的公共 IP 地址“暴露”到互联网上是“危险的”(但实际上并没有解释真正的危险是什么),以吸引更多客户。看来你被这些营销手段骗了。
你的公共 IP 地址被任何人知道,这完全没有安全风险(无论如何,“公共”这个词就是这个意思)。是然而,连接互联网的安全风险设备安全性不够- 无论是否有人知道您的 IP 地址。这是您应该关心的部分,而不是“隐藏”您的 IP 地址。通常,您的家用路由器 - 如果其软件不包含任何已知的安全漏洞(您应该在专门的安全相关网站上查找该信息) - 应该通过它执行 NAT 这一事实为您提供基本保护,因此不可能通过在您的路由器上设置端口转发来启动从外部到您明确允许的服务以外的服务的连接。我猜你一定是这样做了,以便将您的 Minecraft 和其他服务器暴露给互联网。因此,如果您只为这些服务器工作的端口设置了转发,那么来自外部的任何人都无法连接到您家庭网络中的任何其他服务(例如 SSH)。
那么,为什么 VPN 提供商声称“暴露”IP 地址有点“危险”呢?好吧,这个“危险”指的是一种特殊情况——正如我在开头提到的,您访问的互联网上每个网站都知道您的 IP 地址。如果您担心这些信息可能会被用来对付您,例如跟踪您(假设您是一名反政府政治活动家,政府正在寻找您并想逮捕您),那么“隐藏”您的 IP 地址是一个合理的例子——但您必须记住,您的 ISP 和 VPN 提供商都会知道该地址(但如果您使用 VPN,那么您的 ISP 将不知道您连接的位置到- 但 VPN 提供商会这样做,所以问题在于你是否信任他们)。
这是 VPN 提供商在广告中提到的情况,声称“暴露”IP 地址是“危险的”。相反,这是一个潜在的风险隐私(匿名)比安全。但实际上它只影响一小部分人,因为对于我们大多数人来说,没有哪个恶意组织真正有兴趣追踪我们并以某种方式惩罚我们……