kerberos在redhat linux下的安装和配置

来源:互联网 发布:淘宝宝贝介绍模板 编辑:程序博客网 时间:2024/05/16 18:14
Hint:
    本文中所有命令之前的$符号为命令提示符,不是命令的一部分。

正文:
Kerberos是一个第三方鉴权机制,用户和用户希望得到的服务都依赖于Kerberos的服务器来实现对双方的鉴权。这个机制同时也支持在两者之间的数据传输进行加密。Kerberos的服务器叫做KDC(Key Distribution Center),有三个部分构成:
  • 由用户和服务构成的数据库,存储着每个用户和服务的kerberos密码
  • 一个鉴权服务器AS,进行初始鉴权和发放票据授权票据TGT(Ticket Granting Ticket)
  • 一个票据授权服务器TGS(Ticket Granting Server),基于初始的TGT来处理接下来的服务票据。
服务票允许principal访问各种服务。Kerberos服务器控制的host,用户,服务的集合被称为。 

安装和配置KDC
1.对于linux而言,KDC所在的机器被要求是最安全的。如果可能,KDC的机器上不要跑其他的服务。
2.由于我们使用的是redhat linux 4.1.x版本的操作系统,自身就带有kerberos。因此,只要选择其中一台安装server,其他的机器安装client就可以了。
3.安装kerberos server:
yum install krb5-server krb5-libs krb5-auth-dialog
4.安装kerberos client
yum install krb5-workstation krb5-libs krb5-auth
注意:linux官网上提示要安装krb5-pkinit-openssl软件包,但是我们的操作系统不需要安装该软件包,因为对安装结果无影响
5.配置KDC
(我们没有配置多KDC模式,只是配置了单KDC的模式)所以只要配置Master KDC server
a)编辑/etc/krb5.conf文件如下:
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
[libdefaults]
 default_realm = CLOUD.EB
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes
 udp_preference_limit = 1
[realms]
 CLOUD.EB = {
  kdc = vbaby1.cloud.eb:88
  admin_server = vbaby1.cloud.eb:749
  default_domain = cloud.eb
 }
[domain_realm]
 .cloud.eb = CLOUD.EB
 cloud.eb = CLOUD.EB
[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }
注意:
  • 这个文件可以用include和includedir引入其他文件或文件夹,但必须是绝对路径
  • realms:包含kerberos realm的名字(部分键控),显示关于realm的特殊信息,包括该realm内的主机要从哪里寻找kerberos的server。
  • domain realm:将domain名和子domain名映射到realm名上
  • 必须填的有以下几项:
  • default-realm:在libdefault部分
  • admin_server:在realm部分
  • domain_realm:当domain名和realm名不同的时候要设置
  • logging:当该机器作为KDC时要设置

b)编辑/var/kerberos/krb5kdc/kdc.conf文件如下:
default_realm = CLOUD.EB
[kdcdefaults]
 v4_mode = nopreauth
 kdc_tcp_ports = 88
 kdc_ports = 0
[realms]
 CLOUD.EB = {
  #master_key_type = des3-hmac-sha1
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  kdc_ports = 88
  database_name = /var/kerberos/krb5kdc/principal
  key_stash_file = /var/kerberos/krb5kdc/stash
  max_life = 10h 0m 0s
  max_renewable_life = 7d 0h 0m 0s
  master_key_type = des3-hmac-sha1
  default_principal_flags = +preauth
 }
注意:所有域名(realm名)必须为大写字母,所有主机名(DNS hostnames)和相应域名(domain names)为小写字母
c)创建数据库
$ kdb5_util create -s
注意:该命令创建了可以存放kerberos域的所有key的数据库,-s命令创建了一个stash文件,存放主服务器的key。如果没有这个key,那么每次kerberos server都会提示主服务器的用户输入密码。    
d)编辑/var/kerberos/krb5kdc/kadm5.acl 文件,内容如下:
*/admin@EXAMPLE.COM  *   
注意:
最后一个星号之前有空格!!(一般是一个制表符)
所有名字为*/admin的用户都可以修改数据库,除了修改自己的密码之外其他修改数据库的命令都被允许执行,权限很大。
e)创建第一个用户:
执行以下命令:
$ kadmin.local -q "addprinc username/admin"
建议:
最好把username设为root,会提示输入密码,可以输入一个密码。在我们的集群中,左右admin用户的密码都是123456. (若密码错误,试试456789)
创建第一个principal,必须在KDC自身的终端上进行,而且需要以root登录,这样才可以执行kadmin.local命令。
f)启动kerberos,执行以下命令:
/sbin/service krb5kdc start
/sbin/service kadmin start
g)添加principal:
输入kadmin或者kadmin.local命令进入kerberos的shell,输入以下命令:
kadmin: addprinc  test/localhost
然后根据提示输入密码
之后从shell中退出,用root账号创建本地的一个用户test,从root用户su到这个账号,执行:
$ kinit test
$ klist
看见如下信息的时候,kerberos安装成功
Ticket cache: FILE:/tmp/krb5cc_505
Default principal: test@CLOUD.EB
Valid starting     Expires            Service principal
03/12/14 10:29:01  03/12/14 20:29:01  krbtgt/CLOUD.EB@CLOUD.EB
        renew until 03/13/14 10:28:58
Kerberos 4 ticket cache: /tmp/tkt505
klist: You have no tickets cached


参考链接:
1.https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Smart_Cards/installing-kerberos.html
2.http://docs.hortonworks.com/HDPDocuments/HDP1/HDP-1.3.0/bk_installing_manually_book/content/rpm-chap14-1-4.html










0 0