centos7安装Kerberos


Kerberos是一个c/s架构的服务软件,通过向服务端获取票据来实现安全通讯。

下面讲如何配置kerberos服务并获取票据通信

1. 服务端的配置

 1.1 下载对应服务的软件包

yum -y install   krb5-server    openldap-clients

在安装完上述的软件之后,会在KDC主机上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf

 

1.2 配置/etc/krb5.conf

/etc/krb5.conf:包含Kerberos的配置。例如,KDC的位置,Kerberos的admin realms等。需要所有使用的Kerberos的机器上的配置文件都同步。这里仅列举需要的基本配置。

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 # default_ccache_name = KEYRING:persistent:%{uid}

[realms]
  EXAMPLE.COM = {
   kdc = master   
   admin_server = master
  }

[domain_realm]
  .example.com = EXAMPLE.COM
  example.com = EXAMPLE.COM

说明:

  • [logging]:表示server端的日志的打印位置
  • [libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
    • default_realm = EXAMPLE.COM 默认的realm,必须跟要配置的realm的名称一致。
    • udp_preference_limit = 1 禁止使用udp,可以防止一个Hadoop中的错误
    • ticket_lifetime表明凭证生效的时限,一般为24小时
    • renew_lifetime表明凭证最长可以被延期的时限,一般为一周。当凭证过期之后,对安全认证的服务的后续访问则会失败。  
  •  [realms]:列举使用的realm。
    • kdc:代表kdc的位置,格式是:机器hostname或ip地址
    • admin_server:代表admin的位置,格式是:机器hostname或ip地址
    • default_domain:代表默认的域名
  • [appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。

1.3  配置kdc.conf

默认放在/var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 EXAMPLE.COM = {
  #master_key_type = aes256-cts
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
  max_life = 25h
  max_renewable_life = 8d
 }

说明:

  • EXAMPLE.COM:是设定的realms,名字随意。Kerberos可以支持多个realms,会增加复杂度。一般为大写。
  • max_renewable_life = 8d 涉及到是否能进行ticket的renew必须配置。
  • master_key_type:和supported_enctyps默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,推荐不使用。
  • acl_file:标注了admin的用户权限。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
  • admin_keytab:KDC进行校验的keytab。
  • supported_enctypes:支持的校验方式。注意把aes256-cts去掉。

1.4  配置kadm5.acl

修改服务端上的配置文件/var/kerberos/krb5kdc/kadm5.acl,以允许具备匹配条件的admin用户进行远程登录权限:

*/admin@EXAMPLE.COM	*

 说明:

  • 标注了admin的用户权限,需要用户自己创建。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。最简单的写法是*/admin@EXAMPLE.COM * 代表名称匹配*/admin@EXAMPLE.COM都认为是admin,权限是*代表全部权限。

 1.5  创建Kerberos数据库

在服务端上对数据库进行初始化,默认的数据库路径为/var/kerberos/krb5kdc,如果需要重建数据库,将该目录下的principal相关的文件删除即可,请牢记数据库密码。

kdb5_util create -r EXAMPLE.COM -

 

 说明:

  • [-s] 表示生成stash file,并在其中存储master server key(krb5kdc)
  • [-r] 来指定一个realm name,当krb5.conf中定义了多个realm时使用
  • 当Kerberos database创建好了之后,在/var/kerberos/中可以看到生成的principal相关文件

 

1.6 启动Kerberos服务

服务端执行

# 启动服务命令
systemctl start krb5kdc
systemctl start kadmin

# 加入开机启动项
systemctl enable krb5kdc
systemctl enable kadmin

 

 

1.7 创建Kerberos管理员principal

# 需要设置两次密码
kadmin.local -q "addprinc root/admin"

 

pincipal的名字的第二部分是admin,那么根据之前配置的kadm5.acl文件,该principal就拥有administrative privileges,这个账号将会被用来生成其他用户/服务的principal。

注意:需要先kinit保证已经有principal缓存。

[root@master ~]# kinit root/admin
Password for root/admin@EXAMPLE.COM: 
[root@master ~]# klist 
Ticket cache: KEYRING:persistent:0:0
Default principal: root/admin@EXAMPLE.COM

Valid starting       Expires              Service principal
07/14/2020 11:51:17  07/15/2020 11:51:16  krbtgt/EXAMPLE.COM@EXAMPLE.COM
    renew until 07/21/2020 11:51:16

 Kerberos客户端支持两种,一是使用principal + Password,二是使用principal + keytab。前者适合用户进行交互式应用,例如hadoop fs -ls 这种,后者适合服务,例如yarn的rm、nm等。principal + keytab就类似于ssh免密码登录,登录时不需要密码了

 

2. 客户端安装kerberos

2.1 安装软件包

yum -y install krb5-devel krb5-workstation

 在安装完上述的软件之后,在kerberos客户端主机上生成配置文件/etc/krb5.conf。

  把服务端的/etc/krb5.conf文件拷贝到其他各节点客户端同路径/etc/krb5.conf中。

--- Linux连接服务端和上述的缓存票据一样

--- windows的略有不同,复制服务端的/etc/krb5.conf文件,然后删除其他多余的配置,剩下下面三个标签下的东西,注意不是只剩下三个标签,是保留三个标签以及三个标签包含的内容。

[libdefaults]

[realms]

[domain_realm]

备注:Kerberos进入admin管理模式需要使用root用户。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM