安装kerberos前,要确保主机名可以被解析。
主机名 内网IP 角色
master 192.168.1.15 master KDC
2.2 Configuring a Kerberos Server
2.2.1 确保环境可用
确保所有的clients与servers之间的时间同步以及DNS正确解析
2.2.2 选择一个主机来运行KDC,并在该主机上安装krb-5libs,krb5-server,已经krb5-workstation:
yum install krb5-server krb5-libs krb5-auth-dialog1
KDC的主机必须非常自身安全,一般该主机只运行KDC程序。本文中我们选择vmw201作为运行KDC的主机。
在安装完上述的软件之后,会在KDC主机上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf,它们分别反映了realm name 以及 domain-to-realm mappings。
2.2.3 配置kdc.conf
默认放在 /var/kerberos/krb5kdc/kdc.conf。或者通过覆盖KRB5_KDC_PROFILE环境变量修改配置文件位置。
配置示例:
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
BAID.COM = {
#master_key_type = aes256-cts
max_life = 24h --添加
max_renewable_life = 7d --添加
default_principal_flags = +renewable --添加
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
}
说明:
HADOOP.COM:是设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
max_renewable_life = 7d 涉及到是否能进行ticket的renwe必须配置。
master_key_type:和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,更多参考2.2.9关于AES-256加密:。推荐不使用。
acl_file:标注了admin的用户权限。文件格式是
Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
admin_keytab:KDC进行校验的keytab。后文会提及如何创建。
supported_enctypes:支持的校验方式。注意把aes256-cts去掉。
2.2.4 配置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 = BAID.COM --修改之处
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
# default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
# EXAMPLE.COM = {
# kdc = kerberos.example.com
# admin_server = kerberos.example.com
# }
BAID.COM = {--修改之处
kdc = master --修改之处
admin_server = master --修改之处
}
[domain_realm]
.BAID.com = BAID.COM --修改之处
BAID.com = BAID.COM --修改之处
说明:
[logging]:表示server端的日志的打印位置
[libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
default_realm = HADOOP.COM 默认的realm,必须跟要配置的realm的名称一致。
udp_preference_limit = 1 禁止使用udp可以防止一个Hadoop中的错误
oticket_lifetime表明凭证生效的时限,一般为24小时。
orenew_lifetime表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,
对安全认证的服务的后续访问则会失败。
[realms]:列举使用的realm。
kdc:代表要kdc的位置。格式是 机器:端口
admin_server:代表admin的位置。格式是机器:端口
default_domain:代表默认的域名
[appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置。
2.2.5 创建/初始化Kerberos database
初始化并启动:完成上面两个配置文件后,就可以进行初始化并启动了。
1
|
[root @vmw201 ~]# /usr/sbin/kdb5_util create -s -r BAID.COM
|
其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。
# 保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可
在此过程中,我们会输入database的管理密\码。这里设置的密\码一定要记住,如果忘记了,就无法管理Kerberos server。
Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:
[root@master ~]# /usr/sbin/kdb5_util create -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'BAID.COM',
master key name 'K/M@BAID.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
[root@master ~]# ll /var/kerberos/krb5kdc/
total 24
-rw------- 1 root root 22 Jan 30 00:59 kadm5.acl
-rw------- 1 root root 532 Apr 1 13:51 kdc.conf
-rw------- 1 root root 8192 Apr 1 13:52 principal
-rw------- 1 root root 8192 Apr 1 13:52 principal.kadm5
-rw------- 1 root root 0 Apr 1 13:52 principal.kadm5.lock
-rw------- 1 root root 0 Apr 1 13:52 principal.ok
2.2.6 添加database administrator
我们需要为Kerberos database添加administrative principals (即能够管理database的principals) —— 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。
在maste KDC上执行:
?
1
|
[root @vmw201 /]# /usr/sbin/kadmin.local -q "addprinc admin/admin"
|
可以直接运行在master KDC上,而不需要首先通过Kerberos的认证,实际上它只需要对本
地文件的读写权限。
2.2.7 为database administrator设置ACL权限
在KDC上我们需要编辑acl文件来设置权限,该acl文件的默认路径是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberos的kadmind daemon会使用该文件来管理对Kerberos database的访问权限。对于那些可能会对pincipal产生影响的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。
我们现在为administrator设置权限:将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为
代表名称匹配*/admin@BAID.COM 都认为是admin,权限是 *。代表全部权限。
2.2.8 在master KDC启动Kerberos daemons
手动启动:
[root@master ~]# service krb5kdc start
Redirecting to /bin/systemctl start krb5kdc.service
[root@master ~]# service krb5kdc status
Redirecting to /bin/systemctl status krb5kdc.service
● krb5kdc.service - Kerberos 5 KDC
Loaded: loaded (/usr/lib/systemd/system/krb5kdc.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-01 13:59:06 CST; 2s ago
Process: 19356 ExecStart=/usr/sbin/krb5kdc -P /var/run/krb5kdc.pid $KRB5KDC_ARGS (code=exited, status=0/SUCCESS)
Main PID: 19359 (krb5kdc)
Tasks: 1
CGroup: /system.slice/krb5kdc.service
└─19359 /usr/sbin/krb5kdc -P /var/run/krb5kdc.pid
Apr 01 13:59:06 master systemd[1]: Starting Kerberos 5 KDC...
Apr 01 13:59:06 master systemd[1]: Started Kerberos 5 KDC.
[root@master ~]# tail -f /var/log/krb5kdc.log
otp: Loaded
Apr 01 13:59:06 master krb5kdc[19356](info): setting up network...
krb5kdc: setsockopt(9,IPV6_V6ONLY,1) worked
krb5kdc: setsockopt(11,IPV6_V6ONLY,1) worked
Apr 01 13:59:06 master krb5kdc[19356](info): set up 4 sockets
Apr 01 13:59:06 master krb5kdc[19359](info): commencing operation
^C
[root@master ~]# cat /var/log/kadmind.log
[root@master ~]# service kadmin start
Redirecting to /bin/systemctl start kadmin.service
[root@master ~]# cat /var/log/kadmind.log
Apr 01 13:59:51 master kadmind[19395](info): setting up network...
kadmind: setsockopt(9,IPV6_V6ONLY,1) worked
kadmind: setsockopt(11,IPV6_V6ONLY,1) worked
kadmind: setsockopt(13,IPV6_V6ONLY,1) worked
Apr 01 13:59:51 master kadmind[19395](info): set up 6 sockets
Apr 01 13:59:52 master kadmind[19400](info): Seeding random number generator
Apr 01 13:59:52 master kadmind[19400](info): starting
设置开机自动启动:
[root@master ~]# chkconfig krb5kdc on
Note: Forwarding request to 'systemctl enable krb5kdc.service'.
Created symlink from /etc/systemd/system/multi-user.target.wants/krb5kdc.service to /usr/lib/systemd/system/krb5kdc.service.
[root@master ~]# chkconfig kadmin on
Note: Forwarding request to 'systemctl enable kadmin.service'.
Created symlink from /etc/systemd/system/multi-user.target.wants/kadmin.service to /usr/lib/systemd/system/kadmin.service.
现在KDC已经在工作了。这两个daemons将会在后台运行,可以查看它们的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。
可以通过命令kinit来检查这两个daemons是否正常工作。
2.2.9关于AES-256加密
对于使用 centos5. 6及以上的系统,默认使用 AES-256 来加密的。这就需要集群中的所有节点上安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。
https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载的文件是一个 zip 包,解开后,将里面的两个文件放到下面的目录中:$JAVA_HOME/jre/lib/security
2.3 Configuring Kerberos Clients
2.3.1 Installing Kerberos Client(CentOS7可以省略此步骤)
在另外两台主机(vmw202,vmw203)上安装kerberos客户端。 本次安装只安装了一台服务器
1
|
yum install krb5-workstation krb5-libs krb5-auth-dialog
|
2.3.2 配置krb5.conf
配置这些主机上的/etc/krb5.conf,这个文件的内容与KDC中的文件保持一致即可。
3. kerberos的日常操作与常见问题
3.1 管理员操作
3.1.1 登录
登录到管理员账户: 如果在本机上,可以通过kadmin.local直接登录。其它机器的,先使用kinit进行验证。
[root@master Downloads]# kadmin.local
Authenticating as principal confluence/admin@BAIDU.COM with password.
kadmin.local:
客户机使用kinit admin/admin 验证后再使用
kadmin登录
3.1.2增删改查账户
在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。
[root@master Downloads]# kadmin.local
Authenticating as principal confluence/admin@BAIDU.COM with password.
kadmin.local: addprinc test
WARNING: no policy specified for test@BAIDU.COM; defaulting to no policy
Enter password for principal "test@BAIDU.COM":
Re-enter password for principal "test@BAIDU.COM":
Principal "test@BAIDU.COM" created.
kadmin.local: delprinc test
Are you sure you want to delete the principal "test@BAIDU.COM"? (yes/no): yes
Principal "test@BAIDU.COM" deleted.
Make sure that you have removed this principal from all ACLs before reusing.
kadmin.local: listprincs
K/M@BAIDU.COM
kadmin/admin@BAIDU.COM
kadmin/changepw@BAIDU.COM
kadmin/master@BAIDU.COM
kdcadmin/admin@BAIDU.COM
kiprop/master@BAIDU.COM
krbtgt/BAIDU.COM@BAIDU.COM
3.2.3 认证用户
1
|
kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1
|
3.2.4 删除当前的认证的缓存
相关Kerberos命令
kadmin -p 'kdcadmin/admin' -w '<kdc password>' -s '<kdc server>' -q 'addprinc -randkey trafodion'
ktadd -k /opt/trafodion.keytab trafodion
kinit -kt /opt/trafodion.keytab trafodion
klist
3.3 常见问题
3.3.1 查看ticket是否是renewable
通过klist命令来查看
如果Valid starting的值与renew until的值相同,则表示该principal的ticket 不是 renwable。
3.3.2 ticket无法更新
如果过了Expires,可以通过命令kinit –R来更新ticket
但如果ticket无法更新
1 2
|
[root @master ~]$ kinit -R
kinit: Ticket expired while renewing credentials
|
这是因为krbtgt/BAIDU.COM@BAIDU.COM的[renewlife]被设置成了0,这一点可以通过[kadmin.local => getprinc krbtgt/ BAIDU.COM @ BAIDU.COM]看出来。
将krbtgt/BAIDU.COM@BAIDU.COM的[renewlife]修改为7days即可,方法
1
|
kadmin.local: modprinc -maxrenewlife 1week krbtgt/BAIDU.COM @BAIDU .COM
|
相关推荐
2. **配置Kerberos配置文件** - 配置`/etc/krb5.conf`文件,特别需要注意的是`default_realm`字段,这通常被理解为域名称(例如`TEST.COM`)。确保使用大写字母,并且在配置`kdc`和`admin_server`时使用相同的主机...
以下是对标题“Hadoop2.0+Kerberos配置”和描述“Hadoop的安全认证机制,在hadoop的集群中实现对服务器与服务器之间的安全保障”中涉及知识点的详细说明: 1. Hadoop2.0安全机制:Hadoop2.0版本对安全性进行了增强...
这应该是为什么 Hadoop 要使用 Kerberos 的最直接的原因。 在配置 Kerberos 之前,需要安装和部署 Kerberos 服务。安装和部署 Kerberos 服务的过程请参考相关博客文章。 在 Kerberos 中,为 Namenode 和 Datanode ...
解决此问题的方法有两种:一是将服务端与客户端的配置放在同一个配置文件中;二是仅在 Zookeeper 的配置目录 `zkconf` 下添加服务端配置,而将 Zookeeper 客户端的配置文件添加到 Kafka 的服务器端配置文件中。 ###...
配置OpenLDAP使用Kerberos验证 Kerberos是一种基于共享密钥的安全机制,由MIT发明,现在已经被标准化,最新是版本5,简称krb5。Kerberos特别适合局域网络,Windows2k及以上系统的安全机制即基于Kerberos。 在配置...
3. **修改Kerberos配置文件**: - Kerberos的配置文件通常位于`C:\ProgramData\MIT\Kerberos5\`目录下,文件名为`krb5.ini`。 - 修改该文件以适应您的环境需求,比如指定Kerberos服务器的位置、域名以及其他特定于...
### Linux下Kerberos的安装与配置 #### Kerberos简介 Kerberos是一种网络认证协议,由麻省理工学院(MIT)开发,主要用于提供安全的身份验证机制。它不同于常见的密码认证方式,通过一种称为票据(Ticket)的方式...
#### 二、AD域控制器下的Kerberos配置 **1. 创建域控制器** 本文以Windows Server 2008为例创建域控制器。具体步骤如下: - **启动dcpromo工具**:点击“开始”菜单,输入“dcpromo”命令。 - **创建活动目录**:...
使用 Tableau 连接 Kerberos 认证的 Impala 需要安装 Kerberos 客户端,配置 Kerberos,测试 Kerberos 登录,配置 Hive ODBC,使用 Tableau 连接 Hive,配置 Impala ODBC,使用 Tableau 连接 Impala。通过这篇文章,...
kafka 配置 kerberos,设置 ACL权限, java 客户端连接。
一、 Kerberos 环境搭建与配置实验目的 * 掌握用 Windows 系统实施 Kerberos 的方法 * 深刻理解 Kerberos 协议 二、 Kerberos 协议原理 * Kerberos 协议是一种基于 ticket 的身份验证协议 * Kerberos 协议的参与...
**Kerberos协议详解** ...通过Java实现的Kerberos可以帮助开发者构建安全的网络应用,但同时也需要对Kerberos协议有深入理解,以确保正确配置和使用。这包括对KDC的管理、JAAS策略文件的编写以及安全最佳实践的遵循。
Kerberos+Hadoop 搭建是一个复杂的过程,需要进行环境准备、Kerberos 配置、HDFS 配置、YARN 配置和 Hive 配置等多个步骤。但是,通过这篇文章,读者可以了解 Kerberos+Hadoop 搭建的整个过程,并掌握相关的知识点。
3. **配置与管理**:Windows上的Kerberos配置涉及注册域控制器,设置KDC服务,以及调整策略以满足组织的安全需求。 **三、kfw-3-2-2-final 文件** 文件名 "kfw-3-2-2-final" 可能是指Kerberos for Windows的一个...
总结来说,CDH环境中Kerberos入门与实战涉及对Kerberos协议基础的理解,体系结构和工作机制的深入认识,以及Kerberos在CDH环境中的配置、安装和应用。掌握这些知识点对于确保Hadoop集群的安全性和高效运行至关重要。
**kerberos的使用和安装包** Kerberos是一种网络认证协议,主要设计用于提供安全的网络服务。它基于密钥分发中心(KDC)的概念,确保用户与服务器之间的通信是安全的,防止中间人攻击和其他形式的身份欺诈。在本...
2. 与Kerberos相关的配置还涉及到服务名称、密钥表文件位置和Kerberos配置文件路径,这些分别对应配置项http-server.authentication.krb5.service-name、http-server.authentication.krb5.keytab和...
这是自主做的实验 是参考网上资料及学院老师引导做出来的实验 但是网上是不会这么详细的资料的 像这样的配置实验室没有这么具体的实现步骤的 但是由于是我们的课程设计报告 我们话费了很多时间来实现过程的验证 现在...
这通常涉及到创建一个`LoginContext`对象,加载Kerberos配置,并执行登录过程。 - 使用`FlinkKafkaConsumer`类来创建消费者实例,传入Kafka的topic名称、消费者的配置(包含Kerberos相关配置)以及序列化器。 - 在...