开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

理解IIS 6.0中的身份验证

简介:
+关注继续查看
 IIS身份验证概述: 安全中的3A-->验证Authentication: Who are you?  授权Authorization: What can you do?                 审核Auditing: What have you do?
  IIS中可以设置验证的层次: Server  Site  Folder  File
  Web身份验证: 匿名身份验证 基本身份验证 摘要身份验证 集成身份验证 .Net Passport身份验证 基于客户端证书映射的身份验证 UNC Pass thought身份验证
  FTP身份验证: 匿名 基本身份验证  匿名身份验证: 不需要客户端提供认证信息,在HTTP头中不包括验证信息  IIS首选的默认验证方式RPC1945  IUSR_<MachineName>: 属于本地Guests组成员 IUSR_<MachineName>口令在SAM和IIS Metabase中要同步 NTFS权限阻止匿名访问时IIS会尝试启用其它验证方法 在每个不同的节点上可以设置不同的Anonymous对应的账户  子验证(subAuthentication): IIS将管理匿名账户的口令验证 在IIS 5.0中子验证默认是启用的 在IIS 6.0中子验证默认被禁用  在全新安装的IIS 6.0中启用子验证: 将AppPool的运行标示设置为Local System 注册子验证组件,iissuba.dll-->(rundll32 %windir%\system32\iissuba.dll,RegisterIISSUBA) 设置Metabase属性 AnonymousPasswordSync=true  从IIS 5.0升级到IIS 6.0后启用子验证: 将AppPool的运行标示设置为Local System 注册子验证组件,iissuba.dll 
  如何查看IUSR_这个用户的密码呢?
20031734
  我现在来到一台计算机名称叫做Windows2003的计算机  它是一台IIS 6.0服务器  我已经在这台计算机上安装IIS 6.0Resource Kit工具了  打开命令提示符--在里面输入cd \按回车键--输入cd C:\Inetpub按回车键--输入cd AdminScripts按回车键--输入adsutil.vbs get w3svc/AnonymousPasswordSync按回车键  可以看到它提示在这个节点里面没有设置  输入adsutil.vbs get w3svc/AnonymousUserName按回车键  可以看到当前的匿名用户是IUSR_  注意: WINDOWS2003是本地计算机的名称   输入adsutil.vbs get w3svc/AnonymousUserPass按回车键  可以看到现在查看的密码是被加密的  看不到的  怎么样去查看IUSR_这个用户的密码呢?  输入notepad adsutil.vbs按回车键  在脚本里面找到一条叫做Function IsSecureProperty(ObjectParaneter,MachineName)的函数  然后在下面添加IsSecureProperty = False   Exit Function  在记事本里面按文件--按保存  输入adsutil.vbs get w3svc/AnonymousUserPass按回车键  看到了吧?  可以看到IUSR_ 这个用户的密码是N1;Ce<2q|SE7Lc了  
  如何在IIS 6.0中启用子验证 然后能够让IIS自动去管理IUSR_这个用户的密码呢?
20031735
  通过开始--程序--管理工具--选择Internet信息服务(IIS)管理器来打开它  展开WINDOWS2003(本地计算机)--应用程序池--对着DefaultAppPool右键--选择属性  在DefaultAppPool属性里面按标识选项--在预定义账户里面选择本地系统  按确定  此时会弹出一个提示  不用管它 按是就ok了  注意: 我们不推荐把预定义账户设置成本地系统  因为如果DefaultAppPool里面运行的客户端运用发生了问题  假如黑客攻破你的系统的时候它有可能会利用这个本地系统账户去做一些比较危险的事情  所以说一般不推荐使用本地系统  那么这也是为什么在IIS 6.0里面的子验证默认被禁用掉的原因 
20031736
  接下来我们需要去注册一下子验证的模块  打开命令提示符--在里面输入cd \按回车键--输入cd Inetpub按回车键--输入cd AdminScripts按回车键--输入cd c:\WINDOWS\system32按回车键--输入rundll32 iissuba.dll, RegisterIISSUBA按回车键  注册完成之后是没有任何显示的  最后还需要输入c:\Inetpub\AdminScripts\adsutil.vbs set w3svc/AnonymousPasswordSync true按回车键  可以看到现在已经为IIS服务器启用子验证了  这样就能够帮你去管理IIS服务器里面的IUSR_这个用户的密码了 让它自动在Metabase和本地SAM数据库里面进行同步了  打开IE浏览器--在地址里面输入http://www.microsoft.com按回车键  看到了吧?  可以看到网站的内容了-->Microsoft 
20031737
  如果把IUSR_这个匿名访问用户的密码修改掉还能不能访问到网站呢?  展开网站--对着Microsoft这个网站右键--选择属性--按目录安全性  在身份验证和访问控制里面按编辑--我把IUSR_这个用户的密码修改成123--按确定  打开浏览器--在地址里面输入http://www.microsoft.com按回车键  看到了吧?  还是能够访问到Microsoft这个网站的内容  这是为什么呢? 原因就是当我们注册了子验证以后  子验证会自动去同步Metabase和本地SAM数据库里面匿名身份验证用户的密码 
20031738
  如果我把Metabase属性的值修改成false会发生什么结果呢?  打开命令提示符--在里面输入cd \按回车键--输入cd Inetpub按回车键--输入cd AdminScripts按回车键--输入cd c:\WINDOWS\system32按回车键--输入c:\Inetpub\AdminScripts\adsutil.vbs set w3svc/AnonymousPasswordSync false按回车键  打开IE浏览器--在地址里面输入http://www.microsoft.com按回车键  看到了吗?  现在不能够访问到Microsoft这个网站了  为什么不能访问呢?  因为我把子验证的功能关闭了  这样它就没有办法去同步IUSR_这个用户的密码  所以身份验证的过程就会失败了
  基本身份验证: 验证原理: Web服务器-->返回HTTP401与所支持的身份验证方式 客户端-->以Authorization头返回"明文"用户名和密码  绝大部分Web服务器/浏览器都支持HTTP 1.0协议的组成部分(RPC2617)  单独使用是一种不安全的验证方法: 用户名和口令使用Base64进行编码(RFC1521) 结合SSL保证传输的安全性  用户权限要求的变化: IIS 5.0-->用户需要Local Logon权利  IIS 6.0-->Network Logon  验证令牌缓存: 默认15分钟 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Inetlnfo\Parameters  
  如何启用基本身份验证呢?
20031739
  我来到IIS服务器这边  我已经把这台IIS服务器加入yejunsheng.com域中了  展开网站--对着Microsoft 这个网站右键--选择属性--按目录安全性  在身份验证和访问控制里面按编辑--把启用匿名访问的沟去掉--把基本身份验证(以明文形式发送密码)沟上  在默认域里面输入yejunsheng.com  领域可以随便输入一些其他的信息  因为领域只是一个显示的信息给用户的一些相应的提示  我就在领域里面输入User@yejunsheng吧  按确定
20031740
  打开IE浏览器--在地址里面输入http://www.microsoft.com按回车键  因为设置了基本身份验证 所以会弹出一个要求身份验证的窗口  为什么会可以看到User@yejunsheng呢  那就是因为我刚才设置领域的信息  它只是起到一个显示信息的作用  并没有其他作用  然后在用户名里面输入域名\用户(yejunsheng\administrator)  在密码里面输入administrator的密码  按确定  看到了吧?  可以看到网站的内容了-->Microsoft    
  摘要身份验证: 基于质询/响应的验证方法: 服务器-->返回HTTP401与所支持的身份验证方式,提供nonce、realm  客户端-->提供nonce和口令的hash摘要作为响应   默认使用口令和nonce生成MD5摘要   支持Proxy   中等的安全性   RFC2069/RFC2617   浏览器必须是IE 5.0以上   必须在Windows的域环境中使用-->IIS服务器和用户必须是信任域的成员 用户账户储存于AD中   DC、IIS必须是Windows 2000以上   摘要身份验证-->IIS 5.0、IIS 6.0支持  用户口令使用可还原加密  IIS 6.0需要使用子验证(Windows 2000 DC): 注册iissuba.dll  AppPool使用Local System标识  Metabase值UseDigestSSP=False   高级摘要身份验证-->只有IIS 6.0支持,默认的摘要验证  DC、IIS必须是Windows 2003  用户口令以多种MD5摘要形式存放于AD 
  如何启用摘要身份验证呢?  如果启用摘要身份验证的话必须要启用子验证和把DefaultAppPool属性里面的预定义账户设置成本地系统  因为这两步在上面已经做过了  这里就不需要再做了20031742
  我现在来到IIS服务器这边  打开Internet信息服务(IIS)管理器--展开网站--对着Microsoft右键--选择属性--按目录安全性--在身份验证和访问控制里面按编辑--把Windows域服务器的摘要式身份验证沟上 按确定 
20031744
  注意: 为了能使用摘要身份验证 我们还需要在IIS服务器上设置一个Metabase的值  打开命令提示符--在里面输入cd \按回车键--输入cd \Inetpub按回车键--输入cd AdminScripts按回车键  输入adsutil.vbs set w3svc\UseDigestSSP false按回车键  默认情况下这个Metabase的值是true 
20031743
  我现在来到一台计算机名称叫做GC的计算机  它是森林中第一台DC(全局编录服务器)  打开命令提示符--在里面输入cd \WINDOWS\system32按回车键--输入rundll32 iissuba.dll, RegisterIISSUBA按回车键  注册完成之后  这样域控制器就也可以支持子验证了
20031745
  通过开始--运行--输入dsa.msc按确定来打开Active Directory 用户和计算机  我已经提前新建一个叫做user1的用户了  展开yejunsheng.com这个域名--按User--对着user1这个用户右键--选择属性--按账户--把使用可逆的加密保存密码沟上--按确定       注意: 此时还需要对user1这个用户进行重新设置一次密码 
20031741
  我现在来到IIS服务器这边测试一下  打开IE浏览器--在地址里面输入http://www.microsoft.com按回车键--在用户名里面输入域名+用户名(yejunsheng\user1)--在密码里面输入user1的密码  按确定  看到了吧?  已经可以访问到Microsoft这个网站的内容了  说明已经成功启用Windows域服务器的摘要式身份验证了  如果想启用高级摘要身份验证的话  就在IIS服务器的命令提示符里面输入adsutil.vbs set w3svc\UseDigestSSP true按回车键就ok了  这样就可以支持高级摘要身份验证了  高级摘要身份验证的好处就是不需要为用户设置使用可逆的加密保存密码了
  集成身份验证: 是基于SSPI(Security Support Provider)的身份验证方式  包含两种验证方式: NTLM(LM/NTLM/NTLMv2)-->NT4/Win2k/XP/Win2k3  kerberos-->Win2k/XP/Win2k3  IIS将会询问客户端协商验证协议  在IIS中强制验证协议: Metabase-->NTAuthenticationProviders: Negotiate  NTLM  Kerberos   适用于Intranet环境: NTLM无法使用Proxy  Kerberos不易通过防火墙   安全的身份验证方式-->和具体使用安全身份验证协议相关
  .Net Passport身份验证: 由微软提供的.Net Passport Service服务  不能与其它任何验证方式共存  使用加密Cookie  IIS上不存放任何验证用户的信息  .Net Passport SDK开发应用  安全的身份验证方法
  基于证书的身份验证: 使用客户端证书验证用户身份  双因子验证-->客户端证书+其他身份验证   客户端证书映射,IIS自动将用户与Windows账户关联-->目录服务映射  一对一映射  多对一映射,使用规则 
  UNC Passthrough身份验证: 确定获得远程计算机上UNC共享访问使用的凭据  IIS 6.0支持以当前登录用户的凭据访问UNC共享  如果凭据无效,返回HTTP 500错误
  FTP身份验证方法: 匿名身份验证  基本身份验证  如考虑安全不应该使用ftp协议,可以用WebDAV替代
  排错工具简介: AuthDiag  WFetch  SSLDiag  Network monitor  ADSIUtil.vbs  HTTP Look  ieHttpHeader


本文转自 叶俊生 51CTO博客,原文链接:http://blog.51cto.com/yejunsheng/160975

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
你有没有使用过这些编程骚操作(二)- 验证框架(Part B)
你有没有使用过这些编程骚操作(二)- 验证框架(Part B)
9 0
你有没有使用过这些编程骚操作(二)- 验证框架(Part C)
你有没有使用过这些编程骚操作(二)- 验证框架(Part C)
7 0
iOS9.2.1 App从AppStore上下载闪退问题
首先这是小编的第一篇文章,我是一名做iOS开发的小白,出于爱好会更新发表些相关的技术文章,偶尔也会发些视频。恳请大家不要去嘲笑一个努力的人,要是做的不好请多多评论,反正我也不改。
1088 0
身份证 验证
身份证验证     import java.text.ParseException; import java.text.SimpleDateFormat; import java.
1185 0
Ubuntu 安装软件和centos 对比命令
之前都是使用Redhat 或者Centos 等rpm的linux  ,开始使用ubuntu 很不习惯1.  安装命令Centos  : yum install httpd                  Ubuntu:  sudo apt-get install apache2  或者sudo a...
1334 0
CentOS 与Ubuntu 安装软件包的对比
工作需要开始转向centos,简单记录软件包安装    wget不是安装方式 他是一种下载软件类似与迅雷 如果要下载一个软件 我们可以直接 wget 下载地址ap-get是ubuntu下的一个软件安装方式,它是基于debainyum是redhat、centos下的一个软件安装方式,它是基于Lin...
1392 0
js 验证身份证号码
idCard.js部分******************************************************* //**************************************************************************** //...
862 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载