Linux Rocky 9部署ZooKeeper+Kafka+Kerberos认证 (三) Kerberos部署与配置

星光下的梦想 发布于 2024-10-11 12 次阅读


部署配置KDC服务

  1. DNF安装krb5-server、krb5-workstation
    sudo dnf install krb5-server krb5-workstation -y
  2. 配置krb5.conf
    sudo vi /etc/krb5.conf
    # 包含额外的配置文件目录
    includedir /etc/krb5.conf.d/
    [logging]
    # 通用 Kerberos 库操作的日志文件
    default = FILE:/var/log/krb5libs.log
    # KDC 活动的日志文件
    kdc = FILE:/var/log/krb5kdc.log
    # 管理服务器操作的日志文件
    admin_server = FILE:/var/log/kadmind.log
    [libdefaults]
    # 禁用对领域名称的 DNS 查找
    dns_lookup_realm = false
    # 设置票据的默认有效期为 24 小时
    ticket_lifetime = 24h
    # 设置票据续期的最大有效期为 7 天
    renew_lifetime = 7d
    # 允许票据被转发
    forwardable = true
    # 禁用反向 DNS 查找
    rdns = false
    # 指定 PKINIT 证书链的 CA 包的路径
    pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
    # 使用 edwards25519 组进行 SPAKE 预身份验证
    spake_preauth_groups = edwards25519
    # 指定DNS主机名规范化的行为
    dns_canonicalize_hostname = fallback
    # 短名称的后缀
    qualify_shortname = ""
    # 默认领域
    default_realm = KFK.COM
    # 默认凭证缓存名称,使用用户 ID
    default_ccache_name = KEYRING:persistent:%{uid}
    [realms]
    # 定义 Kerberos 领域及其相关服务器
    EXAMPLE.COM = {
     kdc = jd-lavm
     admin_server = jd-lavm
    }
    [domain_realm]
    # 定义域名与 Kerberos 领域的映射
    .kfk.com = KFK.COM
    kfk.com = KFK.COM

    3.配置kdc.conf

    [kdcdefaults]
    # KDC 使用的端口号
    kdc_ports = 88
    # KDC 使用的 TCP 端口号
    kdc_tcp_ports = 88
    # 指定用于 SPAKE 预认证的 KDC 挑战算法
    spake_preauth_kdc_challenge = edwards25519
    [realms]
    KFK.COM = {
     # 指定主密钥类型为 AES256
     master_key_type = aes256-cts-hmac-sha384-192
     # 指定访问控制列表文件的位置
     acl_file = /var/kerberos/krb5kdc/kadm5.acl
     # 指定用于字典攻击防护的字典文件
     dict_file = /usr/share/dict/words
     # 默认主用户标志,启用预认证
     default_principal_flags = +preauth
     # 指定管理员 keytab 文件的位置
     admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
     # 支持的加密类型及其使用模式
     supported_enctypes = aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal camellia256-cts-cmac:normal camellia128-cts-cmac:normal arcfour-hmac-md5:normal
     # 支持的加密类型(FIPS 模式下):
     # Supported encryption types for FIPS mode:
     #supported_enctypes = aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal
    }

    4.配置kadm5.acl (Kerberos 访问控制列表(ACL)文件,用于控制对 Kerberos 管理服务的访问权限)

    */[email protected] *

    5.初始化KDC数据库

    kdb5_util create -s -r KFK.COM

    6.启动Kerberos服务

    sudo systemctl start krb5kdc kadmin
    sudo systemctl enable krb5kdc kadmin
    sudo systemctl status krb5kdc kadmin

创建ZooKeeper、Kafka认证所需的keytab

  • 进入Kerberos管理员界面配置keytab
    # 打开Kerberos管理工具
    kadmin.local
    # 添加主体,名称为kafka/[email protected],并且为其生成一个随机密钥
    add_principal -randkey kafka/[email protected]
    add_principal -randkey zookeeper/[email protected]
    # 导出密钥到keytab文件
    xst -k /usr/local/kafka/config/kraft/keytab/kafka.keytab kafka/[email protected]
    xst -k /usr/local/kafka/config/kraft/keytab/zookeeper.keytab zookeeper/[email protected]
    # 列出所有主体
    listprincs
  • 命令方式创建
    kadmin.local -q "add_principal -randkey kafka/[email protected]"
    kadmin.local -q "add_principal -randkey zookeeper/[email protected]"
    kadmin.local -q "xst -k /usr/local/kafka/config/kraft/keytab/kafka.keytab kafka/[email protected]"
    kadmin.local -q "xst -k /usr/local/kafka/config/kraft/keytab/zookeeper.keytab zookeeper/[email protected]"
    kadmin.local -q "listprincs"