CentOS yum 方式安装配置Kerberos

2,688 阅读3分钟

kerberos安装

安装kerberos server端

环境准备:编辑 /etc/hosts 文件,指定本机主机名为 hadoop(可自定义)

  1. 直接使用 yum 安装

    yum -y install krb5-server krb5-libs krb5-workstation
    
  2. 配置KDC服务 vi /etc/krb5.conf

    #表示server端的日志的打印位置
    [logging]
     default = FILE:/var/log/krb5libs.log
     kdc = FILE:/var/log/krb5kdc.log
     admin_server = FILE:/var/log/kadmind.log
    #每种连接的默认配置
    [libdefaults]
     dns_lookup_realm = false
     #表明凭证生效的时限,一般为24小时。
     ticket_lifetime = 24h
     #表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。
     renew_lifetime = 7d
     forwardable = true
     rdns = false
     #默认的realm,必须跟要配置的realm的名称一致。
     default_realm = HADOOP.COM
     default_ccache_name = KEYRING:persistent:%{uid}
     #禁止使用udp可以防止一个Hadoop中的错误
     udp_preference_limit = 1
    #列举使用的realm。
    [realms]
    HADOOP.COM = {
     #代表要kdc的位置。格式是IP:端口 默认88?,记得在 hosts 文件里配置好主机名供域名解析使用
     kdc = hadoop
     #代表admin的位置。格式是IP:端口 默认88?,记得在 hosts 文件里配置好主机名供域名解析使用
     admin_server = hadoop
    }
    #代表默认的域名,大小写敏感,等号俩边必须全部大写
    [domain_realm]
    .HADOOP.COM = HADOOP.COM
    HADOOP.COM = HADOOP.COM
    
  3. 修改 vi /var/kerberos/krb5kdc/kadm5.acl 内容为

    */admin@HADOOP.COM  *
    
  4. 修改 /var/kerberos/krb5kdc/kdc.conf 内容为

    [kdcdefaults]
     kdc_ports = 88
     kdc_tcp_ports = 88
    [realms]
    #是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
     HADOOP.COM = {
      #默认使用aes256-cts
      #master_key_type = aes256-cts
      #涉及到是否能进行ticket的renwe必须配置。
      max_renewable_life = 7d
      #标注了admin的用户权限。文件格式是 Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
      acl_file = /var/kerberos/krb5kdc/kadm5.acl
      dict_file = /usr/share/dict/words
      #:KDC进行校验的keytab
      admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
      #支持的校验方式。
      supported_enctypes = aes256-cts:normal 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
     }
    
  5. 创建/初始化Kerberos database

    kdb5_util create -s -r HADOOP.COM
    # PS1:其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。
    # PS2:保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可
    # PS3:在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。
    
  6. 添加database administrator。我们需要为Kerberos database添加administrative principals (即能够管理database的principals) —— 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。

    /usr/sbin/kadmin.local -q "addprinc root/admin"
    
  7. master KDC启动Kerberos daemons

    systemctl start krb5kdc
    systemctl start kadmin
    chkconfig krb5kdc on
    chkconfig kadmin on
    
  8. 导出 kadmin 服务的 keytab 文件

    kadmin.local:  ktadd -k /var/kerberos/krb5kdc/krb5.keytab root/admin
    
  9. 使用 keytab 文件验证登录,将root/admin@HADOOP.COM 的credentials取到本地做为cache,这样以后就可以不用重复输入password了。

    kinit -kt /var/kerberos/krb5kdc/krb5.keytab root/admin
    # 查看自己的 credential(票据)
    klist
    

安装kerberos client端

环境准备:编辑 /etc/hosts 文件,指定server主机名为 hadoop,确保和 server 主机可正常通讯

  1. 直接yum安装

    yum -y install krb5-workstation krb5-libs
    
  2. copy server 端配置文件到 client 端所在机器

    scp root@hadoop:/etc/krb5.conf /etc/krb5.conf
    
  3. copy server 端生成的keytab文件到 client 端,用于使用 keytab 方式认证。

    scp root@hadoop:/var/kerberos/krb5kdc/krb5.keytab /var/kerberos/krb5/krb5.keytab
    
  4. 使用 keytab 进行认证

    kinit -kt /var/kerberos/krb5/krb5.keytab root/admin
    # 查看自己的 credential(票据)
    klist