如何通过WEB方式,来控制iis的禁用IP名单

博客主要探讨两个问题,一是如何控制IIS的IPDeny,介绍了微软msdn的几种方法,最终采用使用System.DirectoryServices并结合反射的方案;二是处理WEB方式下默认帐户权限低的问题,提到身份模拟,通过设置Web.config的identity节,使用高权限帐户登录来操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何通过WEB方式,来控制iis的禁用IP名单。

这个问题可以进一步划分为两个问题:
1、如何控制iis的IPDeny;
2、由于是WEB方式,默认的WEB帐户权限很低,不会有上面操作的权限,如何处理。
 
第一个问题:

微软的msdn中给出了三种方法:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/setting_ip_security_using_system_directoryservices.asp
这里给出了两种。其实都是使用 System.DirectoryServices 类
后一种竟然有这样的要求:
This example requires Windows Server 2003 Service Pack 1, which contains fixes that allow System.DirectoryServices to enumerate list properties.
晕倒,当时就是没看到这条,这一种调试了很久才发现有这个限制。
Windows Server 2003 Service Pack 1 那要啥时候才能出来呀。等不及了。放弃这种方案。

另外一个在:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/ref_prog_iaorefiipsecd.asp
代码是 VBScript 写的


其实有个更好的在:
http://www.thecodeproject.com/csharp/IISWMI.asp
这里其实是使用 System.DirectoryServices。同时通过使用 反射 来避免上面必须 win2003 sp1 才可以使用的尴尬。
具体代码请看那个网页,我就不详细说了。我就是采用的这个。


第二个问题:

当然,你可以给 WEB 的运行帐户非常高的权限来解决这个问题。
我们这里要说的不是这种不安全的,而是只给必要的权限。这就需要 身份模拟(Impersonation)了。

有关在ASP.NET应用程序中使用身份模拟的文章请看以下文章:
http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/impersonation.mspx

或者你查 msdn 中 WindowsImpersonationContext 类的说明。
或是是 web.config 中 <identity impersonate="true" /> 这样一节的相关信息

至于如何新设一个帐户,这个帐户只有对iis的IPDeny有读写权限。
汗颜,我也不会。

我是用了一个更高权限的帐户。通过设置 Web.config 的 identity 节来实现的。
通过设置: impersonate="true"
这样,用户身份的认证交给IIS来进行。
当允许匿名登录时,IIS将一个匿名登录使用的标识(缺省情况下是IUSR_MACHINENAME)交给ASP.NET应用程序。
当不允许匿名登录时,IIS将认证过的身份标识传递给ASP.NET应用程序。ASP.NET的具体访问权限由该账号的权限决定。
这时候我使用不允许匿名登录,然后使用一个非常高权限的帐户登录,就可以操作了。

这方面的文章还可以参考:
http://www.microsoft.com/china/technet/security/guidance/secmod38.mspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值