【大数据安全】Kerberos集群安装配置

Kerberos是一种计算机网络认证协议,它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份。它也指由麻省理工实现此协议,并发布的一套免费软件。它的设计主要针对客户-服务器模型,并提供了一系列交互认证——用户和服务器都能验证对方的身份。Kerberos协议可以保护网络实体免受窃听和重复攻击。

Kerberos协议基于对称密码学,并需要一个值得信赖的第三方。Kerberos协议的扩展可以为认证的某些阶段提供公钥密码学支持。

2. 环境说明:

CDH版本:5.11.2

Linux版本:Centos 7

Docker版本:Docker version 18.06.0-ce

JDK版本:1.8

操作用户:root

机器部署:

# IP 主机名 Server Client
1   192.168.101.232   cdh-server-1   N/A   N/A  
2   192.168.101.233   cdh-node-1   Kerberos server   Kerberos client  
3   192.168.101.234   cdh-node-2   N/A   Kerberos client  
4   192.168.101.235   cdh-node-3   N/A   Kerberos client  

各节点之间可以通过ssh免密码登录
Kerberos服务器和客户之间的时间同步

3. Kerberos 安装

cdh-node-1作为Kerberos主节点安装服务:

yum install krb5-libs krb5-server krb5-workstation

通过命令查看安装列表rpm -qa|grep krb5:

[root@cdh-node-1 /]# rpm -qa | grep krb5 krb5-workstation-1.15.1-19.el7.x86_64 krb5-devel-1.15.1-19.el7.x86_64 krb5-server-1.15.1-19.el7.x86_64 krb5-libs-1.15.1-19.el7.x86_64 [root@cdh-node-1 /]# 4. 配置

kdc服务器包含三个配置文件:

# 集群上所有节点都有这个文件而且内容同步 /etc/krb5.conf # 主服务器上的kdc配置 /var/kerberos/krb5kdc/kdc.conf # 能够不直接访问 KDC 控制台而从 Kerberos 数据库添加和删除主体,需要添加配置 /var/kerberos/krb5kdc/kadm5.acl

1. 首先配置/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 = EXAMPLE.COM #此处需要进行配置,把默认的EXAMPLE.COM修改为自己要定义的值 dns_lookup_kdc = false dns_lookup_realm = false ticket_lifetime = 86400 renew_lifetime = 604800 forwardable = true default_tgs_enctypes = rc4-hmac default_tkt_enctypes = rc4-hmac permitted_enctypes = rc4-hmac udp_preference_limit = 1 kdc_timeout = 3000 [realms] EXAMPLE.COM = { kdc = cdh-node-1 #此处配置的为主机名 admin_server = cdh-node-1 #同上 }

配置项说明:
更多参数设置请参考:官方文档。

以下是几个核心参数的说明:

[logging]:日志输出设置 (可选)

[libdefaults]:连接的默认配置

default_realm:Kerberos应用程序的默认领域,所有的principal都将带有这个领域标志

ticket_lifetime: 表明凭证生效的时限,一般为24小时

renew_lifetime: 表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败

clockskew:时钟偏差是不完全符合主机系统时钟的票据时戳的容差,超过此容差将不接受此票据。通常,将时钟扭斜设置为 300 秒(5 分钟)。这意味着从服务器的角度看,票证的时间戳与它的偏差可以是在前后 5 分钟内

udp_preference_limit= 1:禁止使用 udp 可以防止一个 Hadoop 中的错误

default_ccache_name:credential缓存名,默认值为

[realms]:列举使用的 realm

kdc:代表要 kdc 的位置。格式是 机器:端口

admin_server:代表 admin 的位置。格式是 机器:端口

default_domain:代表默认的域名

[domain_realm]:域名到realm的关系 (可选)

2.配置/var/kerberos/krb5kdc/kdc.conf文件

此处为EXAMPLE.COM与/etc/krb5.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 = 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 }

配置项说明:

- `kdcdefaults`:kdc相关配置,这里只设置了端口信息 - `realms`:realms的配置 - `EXAMPLE.COM`:设定的realms领域 - `master_key_type`:和 supported_enctypes 默认使用 aes256-cts。JAVA 使用 aes256-cts 验证方式需要安装 JCE包(推荐不使用) - `acl_file`:标注了 admin 的用户权限,文件格式是:Kerberos_principal permissions [target_principal] [restrictions] - `supported_enctypes`:支持的校验方式 - `admin_keytab`:KDC 进行校验的 keytab

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxgdw.html