什么是kerberos协议
kerberos是一种网络认证协议,通过密钥系统为客户端以及服务器端提供认证服务,该过程不依赖于主机操作系统认证,不依赖主机地址信任,不要求网络内所有主机物理安全(假定该网络上的所有数据可以任意进行读取,修改)。kerberos作为可信任的第三方服务,是通过传统密码技术,进行安全服务的.
kerberos协议简略流程以及详细流程
首先要明白参与对象,一共有三个,客户端(client),服务器端(server),以及KDC(密钥分发中心)就是我们说的域控DC,其中KDC中又有几个名词,CD(活动目录,DC类似于门卫,而CD就是门卫手里的名单,允许谁进行访问,谁不能进行访问)TGT(票据授予的票据),TGS(票据授予服务,为客户端生成某个服务的票据),AS(客户认证,为客户端生成TGT的服务)
粗略流程如下
1.客户端向kerberos请求,希望访问某个服务器,kerberos得到请求后,通过AD判断该用户是否可以访问,是否在白名单中,如果可信,返回AS,AS会发送一个TGT个客户。
2.客户端得到TGT后,继续向kerberos请求,希望获取访问某个服务器的权限,通过TGT判断出客户是否具有该权限,如果具有,则发送一个允许访问的Ticket
3.客户端得到Ticket后,就可以发起请求访问服务器了
详细流程如下
1.客户端向kerberos发送请求访问某个服务器的请求,在AD检查完信息后,
AS会返回两条信息,一条client/TGS会话密钥,用来客户端与TGS通信,使用用户的NTLM哈希进行加密第二条TGT,包含1中的密钥,用户id,有效时间,通过TGS密钥加密。客户端收到TGT后,用自己的NTLM哈希解密,获得TGS密钥,但是不需要解密消息二,就可以直接向TGS发起请求.
2.客户端像TGS发起两条信息,一条是刚才消息二的信息和索要服务的服务ID,第二条是用户id与时间戳,通过TGS密钥加密。Kerberos在收到请求后,kerberos先查询所需服务ID是否存在,并用TGS密钥解密消息三获得用户ID时间戳,核对后,再给客户端发送两条信息,一条是客户端服务器票据,另外一条是client/ss会话密钥,通过client/TGS密钥加密。随后客户端用消息1中的client/TGS解密消息6,得到client/ss密钥,而消息五无法被解密,因为其通过服务器密码加密.
3.客户端拿到client/ss密钥后,就能发起请求了,他向服务器发送两条消息消息5,用服务器密钥加密的客户端服务器票据,第二条新的用户id时间戳,使用client/ss会话密钥加密,服务器 收到后,用自己的密钥得到client/ss密钥,和服务器客户端票据,在使用client/ss密钥解密,得到新id,时间戳,最后服务器向客户端发送确认,用client/ss密钥加密,客户端收到后,解密验证并开始通信
图片就百度上随便找了个
kerberos协议局限性
1.如果kerberos服务器出问题,那就没办法请求服务了
2.票据具有时效性,时间一般不超过十分钟
3.DC被控制,全部寄
4.客户端防御差,hash或密码泄露