集群守卫Kerberos&Ldap

digest [复制链接]
发表于 : 2018-12-29 14:19:11 最新回复:2019-01-02 09:52:09
447 1

在中国有这样一句话,能者多劳。而大数据既然可以用来预测未来,那么大数据集群肩负的责任有多重,我们可想而知。在这样一种情况下,首先就要保证这个集群的安全性。怎么保证呢?大家都玩QQ或者微信吧?我们想想腾讯他是怎么保证用户使用QQ或者微信的安全性的?是不是需要登录密码才可以登录?这里边就涉及到一个认证的问题。在我们的大数据集群里,也有认证,而且是专门的一个组件来做整个集群的认证。他就是Kerberos&Ldap。


kerberos&Ldap是怎么做认证的呢?我们先回想一个生活中很常见的场景:买票看电影。电影,我们每一个人应该都看过吧?假设电影院就是我们的集群,并不是我们想进去就能随便进去的,“持票入场”就是最基本的认证方式。那么从买票到入场我们要经历那几个流程呢?


我们以网上买票为例跟大家做一个简单的说明:

第一步,网上订票,获取电子凭证;

第二步,出示电子凭证,到售票窗口获取纸质票据;

第三步,出示纸质票据,经检验之后进入影院。

注意,电子凭证和纸质票据都具有一定的有效期!

这个过程和我们的Kerberos&Ldap认证非常的类似。


微信图片_20181229141848.jpg ..


Kerberos&Ldap认证过程中也有两类票据,一类是TGT(票据授权票据),一类是ST(服务票据)。用户要登录集群的时候,需要先找Kerberos的认证服务器(AS)做一个用户认证,获取TGT;用户拿到TGT之后访问Kerberos的票据授权服务器(TGS),获取访问相应服务的ST(服务票据);拿到服务票据之后用户才可以访问最终的服务器!


但是又问题来了,这里面涉及到的用户认证具体怎么做的呢?TGT和ST又是怎么发放的呢?接下来请看详细流程。


1、客户端需要访问某个服务器。


2、客户端发送报文给Kerberos,申请TGT。

客户端在发送报文给Kerberos的时候,会发送两份信息

第一份信息是明文信息(我是谁,我需要申请一张TGT去访问服务)

第二份信息是加密信息(客户端的基本信息),通过客户端的密码加密的


3、Kerberos接收到报文。

根据客户端发送的明文信息,去Ldap找到客户端的密码

通过从Ldap拿到的客户端密码去解密客户端发送给他的加密信息

解密完成之后,对比解密出的客户端信息和客户端发送的明文信息是否一致


4、Kerberos生成一个session key。

将session key复制两分

一份session key通过客户端的密码加密

另一份session key和客户端信息通过Kerberos 密码加密(即TGT)

Kerberos将这份信息一起发送给客户端


5、客户端申请ST。

向Kerberos发送请求(我是谁,我想要访问哪个服务)-->明文信息

客户端通过自己的密码解析上一步Kerberos发送给自己的通过自己密码加密的报文,拿到session key

使用session key将自己的信息加密

将加密信息和TGT一起发送给Kerberos


6、Kerberos接收到客户端发送给他的报文。

先通过自己的密码解析TGT,解析完成之后,拿到session key(Kerberos服务端和客户端的session key)和客户端信息

通过拿到的session key(Kerberos服务端和客户端的session key)解密上一步客户端发送给他的经过session key(Kerberos服务端和客户端的session key)加密的信息,拿到客户端信息

将客户端信息和TGT里面包含的客户端信息做比较,看是否符合,如果符合,说明此客户端之前已经通过Kerberos认证,可以给客户端生成ST

Kerberos 再次生成一个session key(客户端和他所要访问的服务的session key)

通过客户端所要访问的服务端的密码将session key(所要访问的服务端和客户端的session key)和客户端信息加密(即ST)

通过上一步发送给客户端的session key(Kerberos服务端和客户端之间的session key)将客户端和服务端的session key加密

将这两个报文一起发送给客户端


7、客户端收到两个报文。

通过本地缓存的session key解密Kerberos 给他发送的通过自己session key加密的自己和服务端的session key

再使用和服务端之间的session key将自己的信息加密

将加密好的报文和ST一起发送给自己所要访问的服务


8、被访问服务收到报文。

通过自己的密码解密ST,拿到和客户端之间的session key和客户端信息

使用session key解密客户端使用session key加密的信息,拿到客户端信息

将拿到的客户端信息和ST里面包含的客户端信息做比对,看是否一致,如果一致,则客户端认证成功


9、客户端可以去访问他所需要访问的服务。

今天的分享看起来好像有点小复杂,为了保卫集群安全,防止不法分子入侵,Kerberos&Ldap真是费劲了力气,点个赞!不过话说回来,虽然整个认证过程经历了一次又一次的加密解密,绕来绕去让人眼花缭乱,但其实都是有规律可循的哦!你发现Kerberos&Ldap认证**的套路了吗?


小编写了这么多遍Kerberos&Ldap,有没有细心的读者们想要问,Kerberos和Ldap究竟是个什么关系呢?为什么要写在一起呢?简单的理解,在认证过程中,Kerberos负责认证逻辑的具体执行,Ldap负责存放和管理认证数据,这两者分工明确,紧密关系在一起!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
  • x
  • 常规:

点评 回复

QQ:3063089331
跳转到指定楼层
Becky_2019
Becky_2019  管理员 发表于 2019-1-2 09:52:09 已赞(0) 赞(0)

感谢分享!很是实用。
  • x
  • 常规:

点评 回复

发表回复
您需要登录后才可以回帖 登录 | 注册

警告 内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“隐私声明
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
登录参与交流分享

登录参与交流分享

登录