我有一台运行多个 IIS Web 站点的多租户 Windows 2012 机器,每个网站都运行自己的应用程序池并具有自己的 Windows 用户标识,我需要限制每个应用程序池的所有出站网络访问。
我一直在寻找解决方案,但收效甚微。我认为可以限制每个 Windows 用户的连接,或者将 IP“映射”到 Windows 用户并按 IP 进行限制。但似乎没有任何东西允许我采用这两种方法。我调查了:
- 使用 Windows 防火墙 -> 不允许按用户创建规则,仅允许按 IP/端口/进程名称创建规则
- 使用 ASP.NET/IIS 安全限制 -> 它们都是入站的,而不是出站的。
- 使用多个 IP -> 无法将出站 IP 分配给相应的应用程序池
- 使用容器 -> 通常容器也共享相同的 IP... 而且它仍然是 Windows 2016 的技术预览版
- 使用.net 代理设置 -> 不包括非 http/https 连接,例如 ado.net。
我确实在 Linux(iptables 模块 ipt_owner)中找到了我需要的东西,但切换操作系统不是一个选择。我需要相同的,但适用于 Windows。
我愿意开发一些在机器上运行的 IIS 模块或系统服务来实现这一点,但我不知道 IIS 模块如何管理工作进程的出站连接,而实现一个管理进程网络连接的系统服务在我看来是一个非常大的项目,并且很有可能导致机器出现网络问题...
您还有其他值得研究的想法吗?
在此先感谢您提供的任何帮助。
干杯
答案1
ModSecurity能够满足您的需求,因为它可以完全查看 HTTP 请求/响应流。只需制定适当的规则来限制访问,正如您所描述的那样。