3. 技术专题

  • HTTP认证
    • 有很多认证方式,但在开始握手时,都基于401Unauthorized响应
  • Windows认证
    • 认证方式
      • Negotiate
      • NTLM(NT LAN Manger)
        • 比较老,主要应用于用于Windows NT 和 Windows 2000 Server(or Later) 工作组环境。
        • NTLM要传送用户的密码,但是密码经过处理后派生出一个8字节的key加密质询码,也是比较安全的。
        • 在Kerberos之前,Windows主要采用NTLM。在AD域环境中,如果需要认证Windows NT系统,也必须采用NTLM。
        • cntlm.exe相当于一个代理,其实就是帮你的请求完成NTLM认证过程。
      • Kerberos
        • 比较新,主要应用于Windows 2000 Server(or Later) 域(Domain)环境。
        • Kerberos较之NTLM更高效、更安全,同时认证过程也相对复杂。
        • Kerberos验证不在网络上传递用户密码,只用传送一个用户验证票。
        • 在允许的环境下,Kerberos是首选的认证方式。集成 Windows 身份验证Kerberos的验证方式是 Intranet 环境中最好的身份验证方案。
        • Kerberos这个名字来源于希腊神话,是冥界守护神兽的名字。Kerberos是一个三头怪兽,之所以用它来命名一种完全认证协议,是因为整个认证过程涉及到三方:客户端、服务端和KDC(Key Distribution Center)
        • 在Windows域环境中,KDC的角色由DC(Domain Controller)来担当。
        • 服务端要求windows认证时,浏览器第一次弹出窗口让输账号密码时,还没走Kerberos协议,这时输入账号密码点Sign in才走。
        • 协议过程/报文
          • AS-REQ请求
            • 向KDC请求进行认证,包含cname(邮箱地址),realm(域),addresses(主机名)等信息(输入的账号密码呢?)。
          • KRB Error: KRB5KDC_ERR_PREAUTH_REQUIRED响应
          • KRB Error: KRB5KDC_ERR_PREAUTH_FAILED响应
          • 可以在Wireshark中,用kerberos进行协议过滤,一般每条记录会显示具体的协议及版本号,比如KRB5。
      • 认证方式的选择
        • 客户端以ip地址访问服务器不管客户端跟服务器是否在域、也不管客户端是否以域帐号登陆,只要客户端以ip地址访问服务器,那么客户端就会选择NTLM方式验证,并且不会直接发送客户端登录用户的用户名和密码给服务器,而是会弹出一个对话框要求用户输入用户名和口令,然后发送到服务端验证。
          • 您可以避免在使用 IP 地址或名称中包含句点的企业内部网服务器上出现这种提示,方法是,在 Internet Explorer 的“本地 Intranet”设置中,列出包含 IP 地址的服务器,或是列出包含句点的服务器名称。可以通过依次单击“工具”、“Internet 选项”、“本地 Intranet”、“站点”、“高级”来访问“本地 Intranet”设置部分。然后在“将该网站添加到区域中”输入 http://127.0.0.1 或其他相关站点的 URL。
        • 如果服务器和客户端的机器都在域中,同时登陆用户又是以域用户登录,那么IE选择Kerberos验证方式。
        • 其他情况IE都选择采用NTLM验证方式,并首先尝试把登录客户端用户的用户名和密码传送给服务器验证。
          • 如果验证通过了,被直接授权访问;
          • 如果验证没通过,客户端弹出对话框要求输入用户名和密码,然后再传送到服务端验证,直到验证通过。
    • 组策略
      • 组策略(Group Policy)是Microsoft Windows系统管理员为用户和计算机定义并控制程序、网络资源及操作系统行为的主要工具。通过使用组策略可以设置各种软件、计算机和用户策略。 
              * 使用组策略可以给同组的计算机或用户强加一套统一的标准,如用户的桌面环境,计算机启动,关机注销等所执行的脚本文件、软件分发、安全设置等。
      • 组策略是一种管理员限制用户和限制计算机使用界面,使用功能的一种工具(管理注册表的系统应用),使用gpedit.msc打开,但Win10家庭版被禁用了
      • Local Security Policy管理器
        • 可以修改一下各种安全策略,比如密码要求等
      • Local Group Policy Editor管理器
        • 可以修改一些组策略配置
        • Computer Configuration
          • Software Settings
          • Windows Settings
            • Scripts (Startup/Shutdown)
            • Deployed Printers
            • Security Settings
              • Account Policies
                • Password Policy
                • Account Lockout Policy
              • Local Policies
                • Audit Policy
                • User Rights Assignment
                  • 一些权限设置,比如能不能修改时区什么的
                • Security Options
                  • 一些安全设置,比如NTLM网络认证的
              • Public Key Policies
            • Policy-based QoS
          • Administrative Templates
            • All Settings
        • User Configuration
          • Software Settings
          • Windows Settings
            • Scripts (Logon/Logoff)
            • Deployed Printers
            • Security Settings
              • Public Key Policies
            • Policy-based QoS
          • Administrative Templates
            • All Settings
    • 浏览器行为
      • 自动完成Windows认证。
        • 如果浏览器集成了公司的AD,那么IE,Edge,Chrome都可以自动用当前登陆的Windows账号完成Windows认证,而不需要用户参与手动输入账号密码(这个表单/弹窗是浏览器弹出的,前端代码无法控制)。
        • Firefox好像不行。
        • 好像还需要勾选Internet Options->Security->Internet/Local Intranet->Custom level…->User Authentication->Logon->Automatic logon with current user name and password。(还要看当地的IT策略,有可能没权限改)
          • ** Internet Options->Security下面有4个zone,分别是Internet,Local internet,Trusted sites和Restrict sites。相当于把想要访问的地址分了4组,可以为每组内的地址设置安全策略,比如到Custom level…下去设置是否自动登陆。**
          • 对于Local Intranet范围内的自动登陆设置,好像在Internet Options->Security->Local Intranet->Sites中列出的域名,以及列出的4个规则中勾选的项自动认为是intranet的地址,才在这个范围内,才能自动完成Windows认证。或者使用组策略(怎么弄?)。
原文地址:https://www.cnblogs.com/wyp1988/p/14918308.html