【发布时间】:2021-08-10 10:08:47
【问题描述】:
我有多个运行在相同 IP 地址但端口不同的 ASP.NET 服务器。它们在 Microsoft IIS 中运行,并共同构成一个多租户应用程序。这些服务器的示例如下表所示。有超过 15 台服务器。由于开放了许多端口,因此引发了应用程序容易受到攻击的安全问题。
+------------+-----------+----------------+-----------------+-----------+
| Server | Home | Authentication | User Management | Others |
+------------+-----------+----------------+-----------------+-----------+
| IP Address | 127.0.0.1 | 127.0.0.1 | 127.0.0.1 | 127.0.0.1 |
+------------+-----------+----------------+-----------------+-----------+
| Port | 80 | 97 | 120 | |
+------------+-----------+----------------+-----------------+-----------+
在这个应用程序中,你可以在80端口访问主页,当你点击登录按钮时,Home服务器会将你重定向到97端口的Authentication服务器。虽然管理单独的服务器项目更容易,不利于生产。
您能否建议您的解决方案,我应该使用什么架构来代替多端口问题?
【问题讨论】:
-
您可以设置
nginx。然后 Nginx 将接收所有传入的请求,并根据 URL 路径将其转发到正确的服务。所以/auth将进入您的身份验证服务,/user将进入用户管理,而所有其他人将进入 Home。正如 Marc 所说,这并不能真正提高安全性。不过看起来确实更好。 -
“由于有许多端口开放,因此引发了应用程序容易受到攻击的安全问题。” - 那是怎么回事?如果端口都在做同样的事情,那么一个端口与 20 个端口一样容易受到攻击。端口的数量在很大程度上是无关紧要的(尽管它可能对您的防火墙配置不方便) - 这是 它们所做的这使他们易受攻击(或不易受攻击)
-
@HansKilian:我研究了
NginX,这是一个可行的解决方案,但是当手动更改配置时,您必须重新启动NginX,从而中断应用程序,这对生产不利。我尝试动态更改配置以防某些服务器 URL 发生更改,但我无法做到。您还有其他解决方案吗? -
@MarcGravell:我认为当打开多个端口时,你会增加暴露并增加被攻击的机会。此外,服务器也不相同,其中一个可能比其他服务器更容易受到攻击。
-
您可以使用命令
nginx reload重新加载 nginx 配置,该命令没有任何停机时间。在生产环境中,您还希望运行多个 nginx 实例,这样您的整个站点就不会出现故障,以防单个实例发生故障。