如何通过WEB方式,来控制iis的禁用IP名单
2004-09-07 10:47
716 查看
如何通过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
这个问题可以进一步划分为两个问题:
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
相关文章推荐
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
- Tomcat 7.0-如何通过Web访问控制平台和管理平台
- SpringMVC如何用Java类配置(不通过web.xml和XML方式)
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
- SpringMVC如何用Java类配置(不通过web.xml和XML方式)
- 如何通过Web方式把服务器端的数据库备份到本地的电脑硬盘中?
- 如何用HttpWebRequest通过代理IP post 到https的网站?
- 如何通过cachemgr.cgi以web方式查看squid的详细运行状态
- 如何通过组策略禁用outlook exchange add-in,控制会议室管理工具
- Web项目或WCF发布IIS后,如何通过VS2010调试
- 如何通过Web方式把服务器端的数据库备份到本地的电脑硬盘中?
- 如何设置让外网通过路由器IP加端口号访问到局域网一台Web服务器
- 如何给iis添加多个的ip以及控制来…
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
- 如何通过Web方式把服务器端的数据库备份到本地的电脑硬盘中?
- WCF服务部署到IIS上,然后通过web服务引用方式出现错误的解决办法
- Web项目或WCF发布IIS后,如何通过VS2010调试
- 使用iis设置虚拟主机(如何用同一端口ip对应不同web应用)
- 揭露黑客是如何通过上传一个jsp页面控制和攻击你web站点的(含jsp代码)
- 如何通过Web方式把服务器端的数据库备份到本地的电脑硬盘中?