《深入理解AD域登录过程》由会员分享,可在线阅读,更多相关《深入理解AD域登录过程(3页珍藏版)》请在金锄头文库上搜索。
1、深入理解 AD 域登录过程 “域帐号登录” 属于“交互式登录”(即用户通过相应的用户帐号(User Account)和密码进行登录)的一种(另外一种为“本地登录”)。采用域用户帐号登录计算机,系统通过存储在域控制器的活动目录中的数据进行验证。如果该用户帐号有效,则登录后可以访问到整个域中具有访问权限的资源。交互式登录,系统需要以下组件: 1、winlogon.exe winlogon.exe 是“交互式登录”时最重要的组件,它是一个安全进程,负责如下工作: 加载其他登录组件。 提供同安全相关的用户操作图形界面,以便用户能进行登录或注销等相关操作。 根据需要,同 GINA 发送必要信息。 2、G
2、INA GINA 的全称为“Graphical Identification and Authentication”图形化识别和验证。它是几个动态数据库文件,被 winlogon.exe 所调用,为其提供能够对用户身份进行识别和验证的函数,并将用户的帐号和密码反馈给 winlogon.exe。在登录过程中,“欢迎屏幕” 和“登录对话框”就是 GINA 显示的。 3、LSA 服务 LSA 的全称为“Local Security Authority”本地安全授权,Windows 系统中一个相当重要的服务,所有安全认证相关的处理都要通过这个服务。它从 winlogon.exe 中获取用户的帐号和密码
3、,然后经过密钥机制处理,并和存储在帐号数据库中的密钥进行对比,如果对比的结果匹配,LSA 就认为用户的身份有效,允许用户登录计算机。如果对比的结果不匹配,LSA 就认为用户的身份无效。这时用户就无法登录计算机。 4、SAM 数据库 SAM 的全称为“Security Account Manager”安全帐号管理器,是一个被保护的子系统,它通过存储在计算机注册表中的安全帐号来管理和用户和用户组的信息。我们可以把 SAM 看成一个帐号数据库。对于没有加入到域的计算机来说,它存储在本地,而对于加入到域的计算机,它存储在域控制器上。 如果用户试图登录本机,那么系统会使用存储在本机上的 SAM 数据库中
4、的帐号信息同用户提供的信息进行比较;如果用户试图登录到域,那么系统会使用存储在域控制器中上的 SAM 数据库中的帐号信息同用户提供的信息进行比较。 5、Net Logon 服务 Net Logon 服务主要和 NTLM(NT LAN Manager,Windows NT 4.0 的默认验证协议)协同使用,用户验证 Windows NT 域控制器上的 SAM 数据库上的信息同用户提供的信息是否匹配。NTLM 协议主要用于实现同 Windows NT 的兼容性而保留的。 6、KDC 服务 KDC(Kerberos Key Distribution CenterKerberos 密钥发布中心)服务主
5、要同 Kerberos 认证协议协同使用,用于在整个活动目录范围内对用户的登录进行验证。如果你确保整个域中没有 Windows NT 计算机,可以只使用 Kerberos 协议,以确保最大的安全性。该服务要在 Active Directory 服务启动后才能启用。 7、Active Directory 服务 计算机加入到 Windows2000 或 Windows2003 域中,则需启动该服务以对 Active Directory(活动目录)功能的支持。 登录到域的验证过程,对于不同的验证协议也有不同的验证方法。如果域控制器是 Windows NT 4.0,那么使用的是 NTLM 验证协议,其
6、验证过程和 “登录到本机的过程”差不多,区别就在于验证帐号的工作不是在本地 SAM 数据库中进行,而是在域控制器中进行;而对于 Windows2000 和 Windows2003域控制器来说,使用的一般为更安全可靠的 Kerberos v5 协议。通过这种协议登录到域,要向域控制器证明自己的域帐号有效,用户需先申请允许请求该域的 TGS(Ticket-Granting Service票据授予服务)。获准之后,用户就会为所要登录的计算机申请一个会话票据,最后还需申请允许进入那台计算机的本地系统服务。 登录前后,winlogon 到底干了什么?如果用户设置了“安全登录”,在 winlogon 初始
7、化时,会在系统中注册一个 SAS (Secure Attention Sequence安全警告序列)。SAS 是一组组合键,默认情况下为Ctrl-Alt-Delete。它的作用是确保用户交互式登录时输入的信息被系统所接受,而不会被其他程序所获取。所以说,使用“安全登录”进行登录,可以确保用户的帐号和密码不会被黑客盗取。要启用“安全登录”的功能,可以运行 “control userpasswords2”命令,打开“ 用户帐户”对话框,选择“高级” 。(如图 4)选中“要求用户按 Ctrl-Alt-Delete”选项后确定即可。以后,在每次登录对话框出现前都有一个提示,要求用户按Ctrl-Alt-
8、Delete 组合键,目的是为了在登录时出现 WindowsXP 的 GINA 登录对话框,因为只有系统本身的 GINA 才能截获这个组合键信息。而如前面讲到的 GINA 木马,会屏蔽掉“安全登录” 的提示,所以如果“安全登录” 的提示无故被屏蔽也是发现木马的一个前兆。“安全登录 ”功能早在 Windows2000 时就被应用于保护系统安全性。 在 winlogon 注册了 SAS 后,就调用 GINA 生成 3 个桌面系统,在用户需要的时候使用,它们分别为: Winlogon:桌面用户在进入登录界面时,就进入了 Winlogon 桌面。而我们看到的登录对话框,只是GINA 负责显示的。如果用
9、户取消以“欢迎屏幕” 方式登录,在进入 WindowsXP 中任何时候按下“Ctrl-Alt-Delete”,都会激活 Winlogon 桌面,并显示图 5 的“Windows 安全”对话框。(注意,Winlogon 桌面并不等同对话框,对话框只是 Winlogon 调用其他程序来显示的) 用户桌面: 用户桌面就是我们日常操作的桌面,它是系统最主要的桌面系统。用户需要提供正确的帐号和密码,成功登录后才能显示“用户桌面” 。而且,不同的用户,winlogon 会根据注册表中的信息和用户配置文件来初始化用户桌面。 屏幕保护桌面:屏幕保护桌面就是屏幕保护,包括“系统屏幕保护 ”和“用户屏幕保护”。在
10、启用了“ 系统屏幕保护”的前提下,用户未进行登录并且长时间无操作,系统就会进入 “系统屏幕保护”;而对于“用户屏幕保护”来说,用户要登录后才能访问,不同的用户可以设置不同的“用户屏幕保护” 。 在“交互式登录”过程中, Winlogon 调用了 GINA 组文件,把用户提供的帐号和密码传达给 GINA,由GINA 负责对帐号和密码的有效性进行验证,然后把验证结果反馈给 Winlogon 程序。在与 Winlogon.exe对话时,GINA 会首先确定 winlogon.exe 的当前状态,再根据不同状态来执行不同的验证工作。通常Winlogon.exe 有三种状态: 1 、已登录状态:顾名思义
11、,用户在成功登录后,就进入了“已登录状态 ”。在此状态下,用户可以执行有控制权限的任何操作。 2、已注销状态:用户在已登录状态下,选择 “注销”命令后,就进入了“已注销状态” ,并显示 Winlogon桌面,而由 GINA 负责显示登录对话框或欢迎屏幕。 3 、已锁定状态:当用户按下“Win+L”键锁定计算机后,就进入了“已锁定状态” 。在此状态下,GINA 负责显示可供用户登录的对话框。此时用户有两种选择,一种是输入当前用户的密码返回“ 已登录状态”,另一种是输入管理员帐号和密码,返回“已注销状态” ,但原用户状态和未保存数据丢失。 登录到域的过程如下: 1、 用户首先按 Ctrl+Alt+
12、Del 组合键。 2、 winlogon 检测到用户按下 SAS 键,就调用 GINA,由 GINA 显示登录对话框,以便用户输入帐号和密码。 3、 用户选择所要登录的域和填写帐号与密码,确定后,GINA 将用户输入的信息发送给 LSA 进行验证。4、在用户登录到本机的情况下,LSA 将请求发送给 Kerberos 验证程序包。通过散列算法,根据用户信息生成一个密钥,并将密钥存储在证书缓存区中。 5、 Kerberos 验证程序向 KDC(Key Distribution Center密钥分配中心)发送一个包含用户身份信息和验证预处理数据的验证服务请求,其中包含用户证书和散列算法加密时间的标记
13、。 6、 KDC 接收到数据后,利用自己的密钥对请求中的时间标记进行解密,通过解密的时间标记是否正确,就可以判断用户是否有效。 7、 如果用户有效,KDC 将向用户发送一个 TGT(Ticket-Granting Ticket票据授予票据)。该TGT(AS_REP)将用户的密钥进行解密,其中包含会话密钥、该会话密钥指向的用户名称、该票据的最大生命期以及其他一些可能需要的数据和设置等。用户所申请的票据在 KDC 的密钥中被加密,并附着在AS_REP 中。在 TGT 的授权数据部分包含用户帐号的 SID 以及该用户所属的全局组和通用组的 SID。注意,返回到 LSA 的 SID 包含用户的访问令牌。票据的最大生命期是由域策略决定的。如果票据在活动的会话中超过期限,用户就必须申请新的票据。 8、 当用户试图访问资源时,客户系统使用 TGT 从域控制器上的 Kerberos TGS 请求服务票据(TGS_REQ)。然后 TGS 将服务票据(TGS_REP)发送给客户。该服务票据是使用服务器的密钥进行加密的。同时,SID 被 Kerberos 服务从 TGT 复制到所有的 Kerberos 服务包含的子序列服务票据中。 9、 客户将票据直接提交到需要访问的网络服务上,通过服务票据就能证明用户的标识和针对该服务的权限,以及服务对应用户的标识。