设为首页 收藏本站
查看: 1137|回复: 0

[经验分享] 为IIS配置安全的发布方法

[复制链接]

尚未签到

发表于 2015-8-16 09:16:02 | 显示全部楼层 |阅读模式
为IIS配置安全的发布方法

  IIS发布Web服务、网页、上传下载程序等的时候,对它的安全性都极为关注,比如:防止其他程序访问、下载你的发布资源,禁止非法用户上传东西等。
一、安全发布
  WebService类、WebRequest类、WebClient类等都有一个共同的属性是Credentials 属性,它是访问 Internet 资源所需的身份验证凭据。
  打开IIS选中发布目录,点击鼠标右键,选择快捷菜单“属性”,在主目录标签页中有脚本资源访问、读取、写入、目录浏览四个选择项。如果你只需要外网读取就把“读取”选上,如果允许写入要把“写入”选上,“目录浏览”不要选上,一般不让外网浏览目录,应用程序保护选择“中(共用的)”,如果是IIS6.0还要设置所在缓冲池的访问权限。进入计算机管理,添加一个用户snt,使它隶属于users,进入目录安全性标签页---〉匿名访问和验证控制---〉编辑,不要选择“匿名访问”,把“集成windows验证”选上。把发布目录所在的磁盘转换为NTFS格式。选中网站目录点击鼠标右键选择属性,进入安全标签页(如:默认网站指向目录为:c:\inetpub\wwwroot,则选中wwwroot),把snt用户和users组加上,使它们有“读取及运行、列出文件夹目录和读取”权限,如果需要上传资源到这个目录,还要选上“写入”权限。(注意:系统目录WINNT或WINDOWS也要分配users组具有“读取及运行、列出文件夹目录和读取”权限,因为II要访问Microsoft.NET目录和Temp目录等,Documents and Settings目录要加上snt用户,使它有“读取及运行、列出文件夹目录和读取、写入”权限)。如果配置可以上传的发布目录,要把IIS的扩展服务WebDev设为“允许”。
  程序携代码时加入一下程序:
  NetworkCredential networkCredential=new NetworkCredential(UserName,Password)
  (WebService类或WebRequest类或WebClient类).Credentials=networkCredential
  再用相关类访问发布资源就可以了。
  示例:
  [Visual Basic, C#, C++] 下面的示例收集来自用户的用户名和密码信息,并使用这些信息创建 NetworkCredential。使用此 NetworkCredential 设置 Credentials 属性。当进行请求时,将使用存储在该属性中的凭据对请求方的访问进行验证。
  [Visual Basic]
  
  ' Create a new webrequest to the mentioned URL.
  Dim myWebRequest As WebRequest = WebRequest.Create(url)
  
  ' Set 'Preauthenticate' property to true.
  myWebRequest.PreAuthenticate = True
  Console.WriteLine(ControlChars.Cr + "Please Enter ur credentials for the requested Url")
  Console.WriteLine("UserName")
  Dim UserName As String = Console.ReadLine()
  Console.WriteLine("Password")
  Dim Password As String = Console.ReadLine()
  
  ' Create a New 'NetworkCredential' object.
  Dim networkCredential As New NetworkCredential(UserName, Password)
  
  ' Associate the 'NetworkCredential' object with the 'WebRequest' object.
  myWebRequest.Credentials = networkCredential
  
  ' Assign the response object of 'WebRequest' to a 'WebResponse' variable.
  Dim myWebResponse As WebResponse = myWebRequest.GetResponse()
  [C#]           // Create a new webrequest to the mentioned URL.
              WebRequest myWebRequest=WebRequest.Create(url);
  
              // Set 'Preauthenticate' property to true. Credentials will be sent with the request.
              myWebRequest.PreAuthenticate=true;
  
              Console.WriteLine("\nPlease Enter ur credentials for the requested Url");
                       Console.WriteLine("UserName");
              string UserName=Console.ReadLine();
              Console.WriteLine("Password");
              string Password=Console.ReadLine();
  
              // Create a New 'NetworkCredential' object.
              NetworkCredential networkCredential=new NetworkCredential(UserName,Password);
  
              // Associate the 'NetworkCredential' object with the 'WebRequest' object.
              myWebRequest.Credentials=networkCredential;
  
              // Assign the response object of 'WebRequest' to a 'WebResponse' variable.
              WebResponse myWebResponse=myWebRequest.GetResponse()
  
二、匿名:无客户端身份验证
  IIS 5.0 为独立提供了三个选项:低(IIS 进程)、中(池)和高(独立)。IIS 具有匿名 Internet 用户帐号的概念,默认为 IUSR_MACHINE,这是另一个在安装 IIS 时创建的本地帐号(类似于 IWAM_MACHINE)。对于给定的资源,如果启用了匿名选项,IIS 将会检查通过这个帐号是否可以成功的访问请求的资源(HTML 文件、ASP 脚本、GIF 文件等)。如果文件上的 DACL 允许访问匿名 Internet 用户帐号,IIS 将在该帐号的支持下执行客户端的请求,而不会尝试一个更加昂贵的身份验证选项。这意味着 IIS 将模拟这个匿名的 Internet 用户帐号并在模拟时打开文件。另一方面,如果 DACL 拒绝访问这个匿名 Internet 用户,那么 IIS 将迁移到列表中下一个身份验证选项。对于该资源如果没有启用其他选项,则访问将被拒绝。请注意,我已经很小心地用抽象术语来标识这个帐号。这是因为它并不总是 IUSR_MACHINE。当然,IIS 元数据库中每个单独的 Web 资源(Web 站点、虚拟目录、文件系统目录或者文件)都具有以下(可继承的)属性:
  AnonymousUserName 这是一个有效的用户帐号名,当匿名 Internet 用户请求特定资源时,IIS 使用这个帐号为他们建立一个登录会话。
AnonymousUserPass 刚刚描述过的帐号的密码。
  AnonymousPasswordSync 这是一个我即将描述的具有神奇性质的布尔属性。
  默认情况下,元数据库(所有 Web 节点的根)中的 W3SVC 节点设置 AnonymousUserName 为 IUSR_MACHINE,并设置 AnonymousPasswordSync 为 True 。后面的这个属性非常神奇,当设置的时候,通过在 LSA 中调用一个特殊的子身份验证 DLL 可以使 INETINFO.EXE 在没有提供密码的情况下获得一个登录会话,这基本上为您提供了一个登录,而根本不需要检查密码。这是一个很好的特性。但是要注意:它只支持本地帐号。如果这个特性使你有所警觉的话,想想 INETINFO.EXE 是运行在 System 登录会话中的,因此是 TCB 的一部分。这是 TCB 的成员在本地机上随意行事的例子。
  根据我自己使用 IIS 5.0 的经验,如果使用密码同步选项,那么为匿名用户产生的登录会话将是一个没有网络凭据的网络登录会话,由于 IIS 在没有提供密码的情况下获得登录会话,这将很有意义。另一方面,如果没有使用这个特性,并且明确的指定了一个密码,登录会话将是一个有网络凭据的交互式登录会话。当然,如果您使用一个本地帐号,这些网络凭据不会有太大帮助,除非您在另外一台机器上创建了一个匹配的用户名和密码。
  另外还应注意,当两个或者多个资源共享同一匿名帐号设置(典型情况)时,IIS 尽量缓存一个单独的登录会话,并为所有这些资源模拟该会话,甚至跨越独立的应用程序边界。
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-99598-1-1.html 上篇帖子: IIS 7.0 中的 10 大性能改进(转自TechNet Magazine) 下篇帖子: IIS中.net4.0配置三大注意事项【转自百度】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表