Kerberos安装和配置

Kerberos是一种基于可信性的第三方的网络认证系统。其他两方为用户和用户希望对其进行身份验证的服务。并不是所有的服务和应用程序可以使用Kerberos,但是对于那些可以使用的,它使得网络环境更接近于一步到位,就是所谓的Single Sign On (SSO)。

这一节介绍Kerberos服务器的安装和配置,和一些客户端配置的实例。

概览

如果你刚接触Kerberos,有几个概念,最好在设置一个Kerberos服务器之前了解清楚。大多数概念将和你在其他环境中所熟悉的概念相关。

Principal:任何服务器所提供的用户、计算机、服务都将被定义成Principal。

Instances:用于服务principals和特殊管理Principal。

Realms:Kerberos安装提供的独特的域的控制,把它想象成你的主机和用户所属的主机或者组。官方约定这域需要大写。默认的,Ubuntu将把DNS域名转换为大写当成这里的域。

Key Distribution Center: (KDC)由三部分组成,一是principal数据库,认证服务器,和票据授予服务器。每个Realm至少要有一个。

Ticket Granting Ticket:由认证服务器(AS)签发,Ticket Granting Ticket (TGT)使用用户的密码加密,这个密码只有用户和KDC知道。

Ticket Granting Server: (TGS) 根据请求签发服务的票据。

Tickets:确认两个Principal的身份。一个主体是用户,另一个是由用户请求的服务。门票会建立一个加密密钥,用于在身份验证会话中的安全通信。

Keytab Files:从KDC主数据库中提取的文件,并且包含的服务或主机的加密密钥。

总得来讲就是,一个域至少包含一个KDC,最好能有更多的冗余,它包含一个principal数据库。当用户登录一个被Kerberos认证定义的工作站中,KDC发布一个TGT。如果用户提供的证书匹配,用户得到认证,之后就能从TGS请求被kerberos注册过的服务的票据,用户凭票据就可以认证并访问服务,而不需要再提供用户名和密码。

Kerberos服务器端 安装

这里,我们将提供一个包含以下属性MIT Kerberos域(根据自己的需要修改它们):

Realm: EXAMPLE.COM Primary KDC: kdc01.example.com (192.168.0.1) Secondary KDC: kdc02.example.com (192.168.0.2) User principal: steve Admin principal: steve/admin

tips:强烈建议你的网络认证用户的uid和你其他本地用户的uid不在同一个范围(比如:从5000开头)。

在安装Kerberos服务之前,你需要为你的域名配置合理的DNS。由于按照约定Kerberos的域与域名相匹配,本节使用EXAMPLE.COM这个域定义DNS。

另外,Kerberos是一个时间敏感的协议。因此,如果客户机和服务器之间的本地系统时间超过五分钟(默认情况下),工作站将无法进行身份验证。要纠正这个问题,所有的主机都应该把自己的时间与统一一个(NTP)服务器同步。细节设置NTP参阅使用NTP进行时间同步

创造Kerberos领域的第一步是安装krb5-KDC和rb5-admin-server软件包。从终端输入:

sudo apt-get install krb5-kdc krb5-admin-server

在安装的最后你将被要求为realm提供Kerberos的主机名和管理服务器名,不一定相同。

tips:默认情况下,realm是从KDC域名创建。

下一步,使用kdb5_newrealm工具创建新域。

sudo krb5_newrealm 配置

安装过程中所问到的问题用于配置/etc/krb5.conf文件。如果你需要调整kdc的设置,你只需要简单的编辑这个文件即可并重新i动krb5-kdc守护进程。如果你需要从头到尾重新配置,比如重命名realm的名字,你可以输入:

sudo dpkg-reconfigure krb5-kdc

一旦KDC正常运行,则需要一个管理员用户–the admin principal。建议使用和平时经常用的用户名有所区别。在终端提示符下输入kadmin.local:

sudo kadmin.local Authenticating as principal root/admin@EXAMPLE.COM with password. kadmin.local: addprinc steve/admin WARNING: no policy specified for steve/admin@EXAMPLE.COM; defaulting to no policy Enter password for principal "steve/admin@EXAMPLE.COM": Re-enter password for principal "steve/admin@EXAMPLE.COM": Principal "steve/admin@EXAMPLE.COM" created. kadmin.local: quit

在上面的例子中,steve是这个Principal,/admin是一个Instance,@EXAMPLE.COM代表这个realm(域)。“日常”Principal,即用户Principal,将会是这样:steve@EXAMPLE.COM,并且只有普通用户的权限。

tips:把这里的EXAMPLE.COM和steve替换成你的realm和管理员用户名。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b735001d947f44c2335c3b4deb38bd84.html