如何保护来自外界的测试/开发环境?

信息安全 阿帕奇
2021-09-03 19:22:28

我想为我的测试/开发环境设置一个安全屏障。我在专用服务器上或多或少地处于典型的 LAMP 之下。

问题是,我有一些 facebook 应用程序、用于其他设备的小部件以及其他需要通过 API 连接到我的网站的应用程序(还有,ajax 调用!)。但我希望我的测试/开发站点无法从外部访问。因此,我怎样才能更好地在这里设置一些保护?

我的第一个想法是:

  • 删除 DNS 条目。
    • 您只能通过 IP 访问,并在我想测试的任何地方设置 /etc/hosts 条目。但它需要在其他外部应用程序(如 FB 应用程序)中通过 IP 引用。
  • 阿帕奇 http 身份验证
    • 优点:您需要 u/pw 才能访问,所以有点安全。但是:如何设置自动访问?例如小部件、FB 应用程序、ajax 调用......(我其实不知道)
  • robots.txt 条目以避免搜索引擎暴露 - 但不足以实际阻止网站。

请问有什么想法吗?谢谢!

4个回答

将测试服务器放在路由器/防火墙后面,不要将其暴露在外面。只要需要访问测试服务器的每个人都在同一个路由器后面,一切都很好(前提是您信任本地网络);外界甚至不知道这台机器的存在。

如果您需要从外部访问,请使用 VPN 或 SSH 隧道进入本地网络。

  • 删除 DNS 条目。

这不会帮助你。任何从外部找到并扫描您的人几乎可以肯定是在盲目地扫描 IP 空间,而不是查找名称并尝试它们,并且将自己从 DNS 中删除不会对它们产生一点影响。

  • 阿帕奇 http 身份验证

这会有所帮助,但正如您所指出的,让它与您的所有小部件一起工作可能最终会很痛苦。

  • robots.txt 条目以避免搜索引擎暴露

这不会有太大帮助。它可能会减少对您进行索引的诚实搜索引擎,但只会阻止表现良好的爬虫。而且你的对手通过网络搜索偶然发现你的机会非常非常低 - 见上文,他们可能会盲目地扫描 IP 空间并攻击你。

更新以完全回应@Co Lega 的评论

哦,你也想要解决方案吗?废话,这才是硬道理!8)

一种可能对您有用的解决方案是根据身份验证临时授予基于 IP 的访问权限。这类似于端口敲门或 POP-before-SMTP。听起来您想在开发服务器上测试应用程序,因此不能在不与可能已经拥有自己的身份验证的应用程序冲突的情况下将应用程序层身份验证添加到开发服务器。您不想维护防火墙规则,因为您的用户可能无法预测其源 IP,或者您不想维护一组不断变化的规则。

因此,这个想法是人们对开发服务器执行身份验证,其唯一目的是在有限的时间内从他们的 IP 开放访问 - 就像动态和临时防火墙规则一样。因为您正在更改 IP 访问权限,所以他们的浏览器和/或应用程序不需要维护凭据,应用程序服务器不需要维护该访问级别的状态等。他们浏览到服务器身份验证页面,进行身份验证,然后他们的 IP 将被清除,以便在 30 分钟、2 小时、2 天的时间内访问该站点的其余部分,无论您想要什么。他们测试应用程序而无需允许在身份验证中包装该访问,因为他们的 IP 已被授予基于该带外(例如,不是应用程序)身份验证的访问权限。

一个缺点是 IP 源并不总是那么安全。如果他们在图书馆的代理后面,则该代理后面的任何其他人也被授予访问权限。那时您想查看 VPN 解决方案。

看着你的问题,我不确定这与你最初的目标有多吻合。它的目标受众更多是开发人群,而不是最终用户,听起来您可能正在考虑最终用户。在这种情况下,也许答案是强化应用程序以在 Internet 曝光中存活——无论如何,这都是一个好主意。

祝你好运!

设置不可猜测的 DNS。

$ openssl rand -hex 16
dbfbd61101a137242e6f1e1149923e20

$ host instance-dbfbd61101a137242e6f1e1149923e20.myapp.com
instance-dbfbd61101a137242e6f1e1149923e20.myapp.com has address 128.64.32.16

设置防火墙。从阻止从外部对您的机器进行所有访问的策略开始。然后只针对需要暴露的目的端口在防火墙上打几个洞,但是根据需要联系你的外部服务的IP地址,通过源IP进行限制。

这并不完美,因为 IP 地址可能会被欺骗。但是,它可能足以设置一段时间的测试/开发环境。只是不要永远离开它:完成后,将其关闭。