我们有一个 IIS 应用程序需要执行一个可能带有恶意输入的 exe。此应用程序池中运行多个应用程序,我希望尽可能限制我们的风险。可执行文件本身是受信任的,但很可能包含漏洞(例如 ImageMagick)。通过缓冲区溢出或其他机制,攻击者可以获得控制权并以与原始可执行文件相同的权限(即应用程序池用户)执行。
我想最安全的做法是创建一个用户,该用户只有权限执行此 exe 文件,并可以读取和写入单个特定文件夹,但很难找到有关如何执行此操作的指南。
答案1
如果你真的不信任系统,那么你必须隔离它。使用单独的服务器来存放你的数据、数据库以及任何你想远离不受信任的 IIS 服务器的东西。
注意:每一项都可能需要整篇文章来解释。强化面向互联网的 IIS 服务器可能是一个漫长的过程。
- 使用最新版本的 Windows 和 IIS
- 创建 DMZ 子网和 VLAN
- 将 IIS 服务器置于 DMZ 中
- 切勿将 IIS 服务器加入域
- 在 DMZ 中放置带有 Web 应用程序防火墙的反向代理服务器
- 通过具有 IPS 功能的防火墙路由所有进出流量
- 将所有流量从互联网路由到反向代理服务器,以便流量永远不会直接进入 IIS 服务器
- 安装包含主机防火墙和行为分析的安全软件套件
- 安装 Microsoft EMET:https://support.microsoft.com/en-us/help/2458544/the-enhanced-mitigation-experience-toolkit
- 部署 AppLocker 以控制可以运行的可执行文件:https://technet.microsoft.com/en-us/library/dd759117%28v=ws.11%29.aspx
- 禁用 NetBIOS 和 SMB
-或者-
- 将应用程序托管在 Azure 云中,让 Microsoft 担心当它受到损害时会发生什么。
- 仍然对服务器本身进行一些强化,但现在您不必保护其周围的网络。