前言
因为疫情导致在家办公,正好可以利用这段时间提升一下自己,所以打算学习一下Windows认证。
windows认证
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
整个认证过程需要以下设备:
客户端(Client)
服务端(Server)
认证端(KDC) kerberos认证服务器称KDC,它是由 Authentication Service 和 Ticket Granting Service 组成,但是它会访问 AD数据库,在认证中会需要到。
- 客户端向AS请求
首先client会先向DC(KDC>AS)发送请求,但是为了保证传输安全,客户端会使用已登录用户(user1)的Hash加密请求包中的timestamp(时间戳)部分,而域中所有用户的信息(包括hash)都保存在AD(NTDS.DIT)中,这样就只有DC和客户端可以对请求包进行解密,请求包中需要包含的内容有:
发送内容① :[Pre-authentication data(client is ntlm_hash for Timestamp),Client name & realm(DomainName\Username),Server Name(KDC TGS NAME)]
Pre-authentication data:被客户端加密的timestamp内容
Client name & realm:客户端用户名,如user1/h0r2yc.cn
Server Name:KDC、TGS 的 Server Name。
- AS认证通过后发送TGT给客户端
DC(KDC>AS)接收到client发来的请求包后,会根据请求包中的用户名(user1)向AD请求user1对应的hash,然后用hash解