侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 129146 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

安装与配置kerberos

2023-12-23 星期六 / 0 评论 / 0 点赞 / 29 阅读 / 10426 字

1、环境说明 系统说明: 操作系统:centos 6.6 Hadoop版本:CDH 5.5 JDK版本: 1.7.0_67 kerberos安装的组件分配: 74作为master节点,其他

1、环境说明

系统说明:

  • 操作系统:centos 6.6
  • Hadoop版本:CDH 5.5
  • JDK版本: 1.7.0_67

kerberos安装的组件分配:

74作为master节点,其他节点作为slave节点。我们在74节点安装kerberos Server,在其他节点安装kerberos client.

2、安装和配置kerberos

2.1安装kerberos

在74上安装包 krb5、krb5-server 和 krb5-client。

# yum install krb5-server -y

在其他节点(74、75、76、77)安装 krb5-devel、krb5-workstation:

# yum install krb5-devel krb5-workstation -y

2.2修改配置文件

kdc 服务器涉及到三个配置文件:

/etc/krb5.conf/var/kerberos/krb5kdc/kdc.conf/var/kerberos/krb5kdc/kadm5.acl

配置 Kerberos 的一种方法是编辑配置文件 /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 = BIGDATA.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true clockskew = 120 udp_preference_limit = 1[realms] BIGDATA.COM = {  kdc = bd-ops-test-74  admin_server = bd-ops-test-74 }[domain_realm] .bigdata.com = BIGDATA.COM bigdata.com = BIGDATA.COM

说明:

  • [logging]:表示 server 端的日志的打印位置
  • [libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
    • default_realm = BIGDATA.COM:设置 Kerberos 应用程序的默认领域。如果您有多个领域,只需向 [realms] 节添加其他的语句。
    • ticket_lifetime: 表明凭证生效的时限,一般为24小时。
    • renew_lifetime: 表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。
    • clockskew:时钟偏差是不完全符合主机系统时钟的票据时戳的容差,超过此容差将不接受此票据。通常,将时钟扭斜设置为 300 秒(5 分钟)。这意味着从服务器的角度看,票证的时间戳与它的偏差可以是在前后 5 分钟内。
    • udp_preference_limit= 1:禁止使用 udp 可以防止一个 Hadoop 中的错误
  • [realms]:列举使用的 realm。
    • kdc:代表要 kdc 的位置。格式是 机器:端口
    • admin_server:代表 admin 的位置。格式是 机器:端口
  • [default_domain]:代表默认的域名
  • [appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。

修改 /var/kerberos/krb5kdc/kdc.conf ,该文件包含 Kerberos 的配置信息。例如,KDC 的位置,Kerbero 的 admin 的realms 等。需要所有使用的 Kerberos 的机器上的配置文件都同步。这里仅列举需要的基本配置。详细介绍参考:krb5conf

[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88[realms] BIGDATA.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 = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal  default_principal_flags = +renewable, +forwardable  max_renewable_life = 10d }

说明:

  • BIGDATA.COM: 是设定的 realms。名字随意。Kerberos 可以支持多个 realms,会增加复杂度。大小写敏感,一般为了识别使用全部大写。这个 realms 跟机器的 host 没有大关系。
  • master_key_type:和 supported_enctypes 默认使用 aes256-cts。JAVA 使用 aes256-cts 验证方式需要安装 JCE 包,见下面的说明。为了简便,你可以不使用 aes256-cts 算法,这样就不需要安装 JCE 。
  • acl_file:标注了 admin 的用户权限,需要用户自己创建。文件格式是:Kerberos_principal permissions [target_principal] [restrictions]
  • supported_enctypes:支持的校验方式。
  • admin_keytab:KDC 进行校验的 keytab。
.

关于AES-256加密

对于使用 centos5. 6 及以上的系统,默认使用 AES-256 来加密的。这就需要集群中的所有节点上安装 JCE,如果你使用的是 JDK1.6 ,则到 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 6 页面下载,如果是 JDK1.7,则到 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 7 下载。

下载的文件是一个 zip 包,解开后,将里面的两个文件放到下面的目录中:$JAVA_HOME/jre/lib/security

.

为了能够不直接访问 KDC 控制台而从 Kerberos 数据库添加和删除主体,请对 Kerberos 管理服务器指示允许哪些主体执行哪些操作。通过编辑文件 /var/lib/kerberos/krb5kdc/kadm5.acl 完成此操作。ACL(访问控制列表)允许您精确指定特权。

#cat kadm5.acl */[email protected]	*

2.3同步配置文件

将 kdc 中的 /etc/krb5.conf 拷贝到集群中其他服务器即可。

# scp /etc/krb5.conf bd-ops-test-75:/etc/krb5.conf# scp /etc/krb5.conf bd-ops-test-76:/etc/krb5.conf# scp /etc/krb5.conf bd-ops-test-77:/etc/krb5.conf

2.4创建数据库

在 bd-ops-test-74 上运行初始化数据库命令。其中 -r 指定对应 realm。

# kdb5_util create -r BIGDATA.COM -s

出现 Loading random data 的时候另开个终端执行点消耗CPU的命令如 cat /dev/sda > /dev/urandom 可以加快随机数采集。该命令会在 /var/kerberos/krb5kdc/ 目录下创建 principal 数据库。

如果遇到数据库已经存在的提示,可以把 /var/kerberos/krb5kdc/ 目录下的 principal 的相关文件都删除掉。默认的数据库名字都是 principal。可以使用 -d 指定数据库名字。

2.5启动服务

在74节点上运行:

# chkconfig --level 35 krb5kdc on# chkconfig --level 35 kadmin on# service krb5kdc start# service kadmin start

2.6创建kerberos管理员

关于 kerberos 的管理,可以使用 kadmin.localkadmin,至于使用哪个,取决于账户和访问权限:

  • 如果有访问 kdc 服务器的 root 权限,但是没有 kerberos admin 账户,使用 kadmin.local
  • 如果没有访问 kdc 服务器的 root 权限,但是用 kerberos admin 账户,使用 kadmin

在 74 上创建远程管理的管理员:

#手动输入两次密码,这里密码为 bigdata# kadmin.local -q "addprinc root/admin"

密码务必记住,妥善保存。

2.7 kerberos基本操作

查看当前的认证用户:

# 查看principals$ kadmin: list_principals  # 添加一个新的 principal  kadmin:  addprinc user1    WARNING: no policy specified for [email protected]; defaulting to no policy    Enter password for principal "[email protected]":    Re-enter password for principal "[email protected]":    Principal "[email protected]" created.  # 删除 principal  kadmin:  delprinc user1    Are you sure you want to delete the principal "[email protected]"? (yes/no): yes    Principal "[email protected]" deleted.    Make sure that you have removed this principal from all ACLs before reusing.  kadmin: exit

也可以直接通过下面的命令来执行:

# 提示需要输入密码$ kadmin -p root/admin -q "list_principals"$ kadmin -p root/admin -q "addprinc user2"$ kadmin -p root/admin -q "delprinc user2"# 不用输入密码$ kadmin.local -q "list_principals"$ kadmin.local -q "addprinc user2"$ kadmin.local -q "delprinc user2"

创建一个测试用户 test,密码设置为 test:

# echo -e "test/ntest" | kadmin.local -q "addprinc test"

获取 test 用户的 ticket:

#kinit testPassword for [email protected]: #klist -eTicket cache: FILE:/tmp/krb5cc_0Default principal: [email protected] starting     Expires            Service principal09/02/16 16:43:50  09/03/16 16:43:50  krbtgt/[email protected]	renew until 09/02/16 16:43:50, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96

销毁该 test 用户的 ticket:

#kdestroy #klist klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)

更新 ticket:

# kinit -R

查看keytab文件详情:

klist -k /etc/krb5.keytab  Keytab name: FILE:/etc/krb5.keytab  KVNO Principal  ---- --------------------------------------------------------------------------     3 kadmin/[email protected]     3 kadmin/[email protected]     3 kadmin/[email protected]     3 kadmin/[email protected]     3 kadmin/[email protected]

 

广告 广告

评论区