如何保护 IIS Web 服务器
Posted
技术标签:
【中文标题】如何保护 IIS Web 服务器【英文标题】:How to secure IIS Web Server 【发布时间】:2015-10-26 22:24:44 【问题描述】:我们有一个 Web 应用程序,它由 Internet 上的 IIS Web 服务器和 IIS 通过 *** 链接访问的数据库服务器组成。
我们遇到的问题是我们需要将连接字符串存储在某个地方(显然不能在数据库中)。
我注意到可以使用 aspnet_regiis 加密 web.config 连接字符串:
https://msdn.microsoft.com/en-us/library/dx0f3cf2%28v=vs.85%29.aspx
任何人都可以评论这是多么强大。我们不希望数据库被互联网入侵。
我关心的一件事是 aspnet_regiis 用于解密和加密并安装在机器本身上。因此,如果机器被入侵并且这个 exe 文件在那里,发现密码不会那么难。
因此,假设不推荐这种保护密码的方法,我还有什么其他选择。
请注意,如果相关,IIS 正在 IIS APPPOOL\DefaultAppPool 帐户的上下文中运行。
谢谢。
【问题讨论】:
【参考方案1】:您没有加密您的配置文件以防止被互联网黑客入侵。 IIS 永远不会提供 *.config 文件。您加密配置文件以向服务器管理员隐藏其中的信息。
如果远程攻击者可以访问服务器并且可以运行任意可执行文件,那么所有的赌注都将失败。在那之后,您无法保护服务器。
如何防止服务器被远程访问过于笼统,无法回答,一般提示请查看OWASP。
【讨论】:
感谢您的回复。我意识到 II 不会提供 *.config 文件。我担心任何可以访问机器和解密文件的东西。也许我的出发点应该是首先阻止对机器的访问。注意配置加密不会阻止管理员看到明文。他们需要做的就是运行 asp_net_regiis 工具。【参考方案2】:如果可能,请授予您的应用程序池标识(在您的情况下为 IIS APPPOOL\DefaultAppPool)访问 SQL Server。
然后在您的连接字符串中使用集成身份验证而不是密码和用户名:
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
【讨论】:
感谢您的回复。我们这样做的基础是,这样做意味着任何可以冒充该用户帐户的东西都可以访问 SQL Server - 所以我们目前已经打折了这个选项。 没错,但另一方面,任何拥有该用户帐户的东西都可以通过您的连接字符串访问 sql server 凭据。 回到更一般的层面,只要服务器从 Internet 正确锁定,许多实现此目标的可能选项都可以正常运行。由服务器制作的备份除外。如果获得备份,似乎有可能对其进行分析并在必要时进行逆向工程以侵入系统。通过备份防御入侵的最佳做法是什么? 关于这种方法的另一个问题是你是否真的应该加密你的服务器和数据库/连接字符串。如果您应该这样做,那么问题仍然没有解决。以上是关于如何保护 IIS Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HTTP 连接通过托管在 IIS 上的 ASP.NET 成员身份保护 ASP.NET Web API [重复]