Ubuntu下使用Kerberos
Kerberos简介
Kerberos是MIT开发的网络身份验证系统,利用它可以实现单点登陆。Kerberos引入以下概念:
术语 | 说明 |
Principal | 被认证的实体,可以是用户、计算机、某台计算机提供的服务 |
Instances | 用于识别某些服务类、特殊的管理性实体 |
Realms | 安全域,类似于Windows的工作组、域之类的概念,通常使用全大写的域名表示 |
KDC |
密钥分发中心(Key Distribution Center),包含了:
对于每个安全域,至少需要一个KDC,最好使用KDC集群确保HA |
TGS | 票据授予服务器(Ticket Granting Server),在客户端请求时授予其服务票据 |
Tickets |
票据,用于确认两个实体 —— 用户、用户请求的服务 ——的身份 当用户实体登陆到启用Kerberos验证的客户端时:
|
Keytab Files | 从KDC的实体数据库中抽取出来的、包含服务/主机的密钥的文件 |
认证步骤举例
Apache Drill支持Kerberos认证,步骤如下:
- 客户端登陆,提供:自己的身份信息、凭证信息、对获取票据的票据的请求(对TGT的请求)
- KDC的认证服务器验证凭证信息成功,返回TGT、会话密钥给客户端
- 客户端提供TGT、会话密钥给KDC的TGS,请求对Drillbit服务的访问权限
- TGS授予用于访问Drillbit的凭证
- 客户端使用凭证访问Drill集群
- 集群对客户端身份验证成功
Kerberos服务器
安装服务器之前,应该确保DNS服务器被正确的配置,因为Kerberos的Realm基于域名进行匹配。另外Kerberos对时间敏感,如果客户端时间和服务器时间差距超过5分钟,则默认不能进行验证。
安装
假设我们的Kerberos服务器的域名为zircon.gmem.cc。
执行下面的命令完成安装:
1 2 3 4 5 |
sudo apt-get install krb5-kdc krb5-admin-server # 提示输入默认Realm名称时,输入DNS域名,例如GMEM.CC # 提示输入管理服务器名称,输入机器名,例如ZIRCON # 安装期间,修改的配置文件是 /etc/krb5.conf |
配置
创建一个新的Realm:
1 2 |
sudo krb5_newrealm # 输入数据库管理密码 |
如果需要重新配置KDC,例如修改Realm名称,可以执行:
1 |
sudo dpkg-reconfigure krb5-kdc |
一旦KDC开始运行,你需要一个管理员,建议使用和平时登陆用户不同的名称:
1 2 3 4 5 6 7 8 9 10 |
# kamin是Kerberos数据库管理程序 sudo kadmin.local # Authenticating as principal root/admin@GMEM.CC with password. # root是一个Principal,/admin是一个Instance,@GMEM.CC指明Realm # 创建新的管理员用户(实体) addprinc alex/admin # 根据提示设置密码 quit |
新的管理员需要配置ACL权限:
1 2 |
# 允许alex对Realm中任何实体进行任何操作 alex/admin@GMEM.CC * |
重新启动管理服务器,让新的ACL设置生效:
1 |
sudo service krb5-admin-server restart |
测试新用户:
1 2 3 4 5 6 7 8 9 10 |
# kinit 用于获得并缓存票据授予票据(ticket-granting ticket) kinit alex/admin # klist 列出缓存的Kerberos票据 klist # Default principal: alex/admin@GMEM.CC # Valid starting Expires Service principal # 08/15/2017 12:36:18 08/15/2017 22:36:18 krbtgt/GMEM.CC@GMEM.CC # renew until 08/16/2017 12:36:07 |
卸载
1 2 |
sudo apt-get purge krb5-kdc krb5-admin-server krb5-config krb5-locales krb5-user sudo rm /etc/krb5.conf |
Kerberos客户端
本节介绍如何把一个Linux系统配置为Kerberos客户端。一旦用户成功登陆到操作系统,他即可访问任何kerberized服务。
安装
安装以下软件:
1 |
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config |
配置以设置默认Realm:
1 |
sudo dpkg-reconfigure krb5-config |
Leave a Reply