在发布之前,我查看了几个看起来很有希望但并没有真正回答我的问题的问题:
- 设置公共服务器- 这更多适用于本地开发,我谈论的更多是生产服务器,我可以部署代码并让我的客户在家里与他们进行交互。
- 设置家庭 DNS 服务器- 我认为我不需要设置自己的 DNS 服务器,因为我有一个托管服务提供商,我可以使用它的名称服务器。
设想
我经营着自己的独资企业,现在我想开发一些应用程序来自动化一些比较琐碎的事情,比如报价项目、发送发票以及诸如此类的事情。其中一些应用程序需要 MySQL 数据库连接以及提交数据的 Web 表单,这些都需要得到保护。
我经营的业务是我在全职工作(全栈软件工程师)之外的一项业务。收入不稳定,不足以证明每月支付服务器费用是合理的。在有人这么说之前,我确实明白云服务器已经变得多么便宜,但由于这种收入不稳定的性质,这感觉就像在浪费钱。然而,根据我问题的答案,我可能不得不忍痛接受。
问题
我的问题是在家运行公共服务器的“安全”方法有哪些?例如,我的托管服务提供商有名称服务器,因此将服务器公开我不能只将我的主机的名称服务器指向我的服务器的 IP 地址,以便让它在没有主机条目的情况下进行解析吗?
我还想了解在家运行自己的服务器与使用云服务相比的安全利弊。我以前使用过 VPS 云服务 (Digital Ocean),了解一旦开启,机器人攻击它们的频率。
这最理想的在我看来,最好的办法是,通过某种方式只允许我的客户访问我的家庭公共服务器。某种类似于白名单的设置,这样他们所要做的就是给我他们的 IP,然后我可以将其添加到配置中,这样他们就可以看我的服务器——最好没有主机条目。我喜欢 VPN 的想法,但我不想要求我的客户具备这种级别的技术知识。
也许我离题太远了,但我确实需要一些见解来了解我是否可以安全地在家中运行服务器。我担心的一些安全问题如下:
- 将我的家庭住址广播到互联网上
- 给我的家庭网络造成严重漏洞
- 我还没想过其他事情
也许我最好使用云服务器,但我不确定。我的理想情况甚至是一个充分的解决方案吗?
此外,如果能提供任何有用的 Google 链接/说明/条款,我将非常感激,但这不是必需的,因为我可以再问一个问题。
提前致谢!
答案1
不要这样做。在家里运行服务器就是在浪费钱。
在云服务中运行服务的优点是,您拥有技术精湛的安全工程师,确保他们控制的每个层面都是安全的,还有其他技术娴熟的人员确保您的服务正常运行、数据完好无损,并且您的资源可以快速配置。这甚至还没有提到可用性,如果您在家中运行服务,就无法获得可用性,除非您投资数千美元购买基础设施,而这仍然比使用 quickbooks online 和 Harvest 等计费方式(每月不到 20 美元)贵很多倍。
如果你想自己托管生产服务,你肯定希望在这方面拥有丰富的经验。每月付给某人几美元比花几个月甚至几年的时间自学要便宜得多。
答案2
正如@SmallLoanOf1M 所说,除非您认为自己有足够的资格为他人运行服务器,否则不要在家中运行自己的服务器。在互联网上运行公共服务器并非易事,并且您的服务器(无论是否在家中)最终可能会成为恶意软件的载体、攻击其他服务器,或者直接遭到破坏。
你可以找到很多非常便宜的提供商。只需搜索 VPS(虚拟专用服务器),你就可以找到一些每月不到 10 美元的提供商。这可能比你全天候运行服务器所支付的电费还要少。而且你不需要购买服务器、购买备用磁盘、备用电源……
即使您运行 VPS,您也会询问如何确保只有您的客户才能访问它。向他们索要 IP 地址将是一场噩梦。IP 地址通常是短暂的,因此他们可能必须将他们的 IP 提供给您每天他们想要访问它。您有了一份新的全职(我的意思是 24x7)工作:在防火墙上插入 IP 地址。
您可以做的是创建一个 VPN,并只允许用户从它进行连接。OpenVPN 易于设置,但通常需要客户端安装和配置其端,这对普通用户来说并不十分简单。PPPTP 或 L2TP 对客户端来说更简单,并且足够安全,除非您的客户端成为熟练的黑客或政客的目标。
有几个自由职业者网站,你可以付钱让别人帮你设置服务器。那里的用户声誉很好(就像我们一样),而且可以收取不到几百美元的费用来为你设置服务器。如果你想在最短的时间内拥有一个安全的服务器,这是最好的选择:租用 VPS 并付钱让别人帮你设置。
您可能没有意识到,但除非您的路由器/调制解调器配置为阻止 WAN 请求,否则您的 IP 已经是公开的,并且任何人都可以访问某些端口。
答案3
我想说的是,我也尝试寻找类似的问题,并发现你的问题措辞最好,展示了正确的基本想法/担忧,但如果你决定的话,仍然有足够的知识来完成它。
我过去和现在都完全赞成家庭服务器的想法,但应该这样做,因为你想从上到下学习有关网络的一切知识。如果你只是想用最少的工作来实现它,那么花钱请一家服务商来为你托管可以节省金钱和时间。
首先,我想说的是,我已经运行家庭服务器大概 5 年了(时间过得真快)。我的主要网站是https://www.freesoftwareservers.com/wiki。我在 VMWare ESXi 塔上运行所有东西,我还通过 GPU 将其用作主工作站。(对我来说,购买功能强大的服务器和工作站需要花费太多钱)
当我曾经在端口 22 上托管 SSH 时,我曾经遭受过黑客攻击。但最终我关闭了对公众的 SSH,因为它是现存受机器人攻击最多的服务器表面。
我将首先回答您问题中突出显示的部分,然后介绍我在此过程中“学到”的几件事(关于托管家庭服务器,我学习了大量有关 Linux 的知识,但您无需托管家庭服务器就可以做到这一点)。
在家运行公共服务器的“安全”方法有哪些?
首先是您对不使用 VPN 的白名单的想法。
The most ideal situation in my mind, would be to have some way to give only my customers access to my home public server. Some kind of set up like a white list, so all they had to do was give me their IP, and I could add it to a config which would allow them to see my server -- ideally without a host entry. I like the idea of VPNs, but I don't want to require that level of tech-savvy from my customers.
就我个人而言,我认为如今的 VPN 并不像你想象的那么罕见,而且对于最终客户来说,配置起来非常容易。我 60 多岁的母亲在公司网络中使用了 VPN。(最糟糕的情况是,你可以使用 TeamViewer 进行设置)。从你的角度来看,VPN 可以提供最具体的防火墙体验,只需转发 VPN 端口即可在网关上实现
我确实想谈谈“公共”一词。所有连接到 WAN(互联网)的 IP 都是“公共”的。我猜你的意思是“广播我的家庭 IP”,因为任何人都可以 ping freesoftwareservers.com 并获取我的家庭 IP。如果你不托管公共网站,那么只有你的客户应该拥有你的域名,它不会出现在谷歌等网站上,所以它不应该被视为“公共”。
如果您主要关心的是安全性,我会选择这种方式,并为您的家庭网络设置一个带有“动态 DNS”更新的域名。我怀疑您是否可以从 ISP 那里获得静态 IP 以用于家庭 ISP 订阅。(我不会谈论在家中运行服务器的合法性,但假设我曾经使用过一家主要的美国 ISP,从未有过投诉)。我为我的 VPN 设置 DNS 的方式是 vpn.freesoftwareservers.com 指向我的家庭网关。然后我有一个“动态 DNS”客户端,它每隔 X 分钟 ping 我的域名托管商,并在更改时更新它。除非我重新启动网关,否则我的家庭 IP 通常不会更改。通过这种方式,您可以设置您的 VPN 证书以使用该 DNS 名称并知道它应该解析。
- 我想传达的个人想法
我在攻读计算机网络和网络安全学位的同时就开始摆弄服务器,因此“用困难的方式”去做这件事似乎是合乎逻辑的。家庭服务器的优点在于你必须学习每一个步骤。没有人会替你做这件事。此外,你很可能想要了解虚拟机管理程序/VM,而这需要你花上一年的时间来学习!
刚开始的时候,我的上传速度是 1 MB,但这主要是因为我可以访问我的家庭网络。一旦我上传速度达到 20 MB,我就能够在一个简单的基于 txt 的网站上承载中等流量,而不会出现问题,但这很难找到。另外,自从我设置了服务器之后,我搬家了几次,这不可避免地会导致停机。
我最大的失败是
- 移动或重启时停机
- 不学习云服务
我想成为一名系统管理员,我对某些事情了解很多,但对主要云供应商的 GUI 不熟悉。但是,一旦你了解了 GUI 的作用,导航 GUI 就比点击和测试容易得多。
——显然我需要结束这个话题,但是这个话题对我来说很重要!
简而言之,我认为从安全角度来看,如果您是中小企业,并且可以通过自己做事来省钱,那么使用 VPN 就没问题了。您还可以使用很酷的硬件,但您必须非常想学习。对我来说,这是一见钟情,您要么开始学习/解决问题,要么发现它很有趣且具有挑战性。您可以“将 IP 列入白名单”,但您的客户端不能拥有 DHCP IP,否则我会使用密码 + VPN 并每隔 X 天重新发布一次。
在家庭 ISP 上运行服务器可能会存在合法性问题。您可以打电话并录音,直截了当地询问是否可以。我的网站是非盈利性的,因此虽然它是公开的,但实际上并不能赚钱。
您能否处理一些停机时间,因为除非您使用家庭+云,否则这种情况就会发生。
如果您真的想学习 + 拥有最佳/最便宜的设置,我会选择家庭服务器 + 云备份。云服务器可以根据带宽和使用情况收费。因此,如果由于您的家庭服务器处于“运行”状态而未使用它们,那么您将不会为云服务器支付“太多”费用。这将带您进入高可用性,这非常有趣,而且非常困难!但我猜没有必要,如果您也可以计划停机时间,它会帮助客户。
就是这样,如果你决定了,我希望你能看看我的网站,我认为它有很多资源可供家庭服务器爱好者使用,但要知道我的网站并没有做太多的“教学”。它更多的是可复制和粘贴的代码片段,对我有用。