对于简单安装的上线的hadoop集群,我们可以认为有如下安全隐患
可以人为的添加一个客户端节点,并以此假冒的客户端来获取集群数据,对于假冒的客户端节点,成功加入集群,就能够伪装成datanode 让得到namenode指派的任务和数据.创建hdfs账户,就可以得到hadoop文件系统的最高权限
Kerberos主要用来做网络通讯中的身份认证,帮助我们高效,安全的识别访问者
Kerberos Server的安装
- 在hadoop1上安装服务端
yum install -y krb5-libs krb5-server krb5-workstation
- 配置文件位置
- 文件位置
/etc/krb5.conf
vim /etc/krb5.conf
- 名词解释
- realm 域:表示一个公司或者一个组织,逻辑上授权认证范围
- logging块配置日志相关
- libdefaults块配置默认的设置,包括ticket的声明周期
- realms 是域的配置,可以配置多个realm
- domain_realm是kerberos内的域和主机名的域的对应关系 即hadoop1.sofency.top hadoop2.sofency.top等均是SOFENCY.TOP这个realm
- 配置/var/kerberos/krb5kdc/kdc.conf 按照如下进行修改
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_rearellm = false
ticket_lifetime = 24h # 票据有效期
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
default_realm = SOFENCY.TOP #默认的域名后缀 即指的是下面[realms]下的值
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
SOFENCY.TOP = {
kdc = hadoop1.sofency.top
admin_server = hadoop1.sofency.top
}
[domain_realm]
.sofency.top = SOFENCY.TOP
sofency.top = SOFENCY.TOP
[kdcdefaults]
kdc_ports = 88 #端口号
kdc_tcp_ports = 88
[realms]
SOFENCY.TOP = {
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
}
- 名词解释
- acl_file: kerberos acl的一些配置对应的文件
- kerberos admin账户的keytab本地路径
- keytab 登陆凭证 有了这个相当于直接有了ticket,可以免密直接登录某个账户,所以这个文件很重要
- 初始化kerberos数据库
kdb5_util create -s -r SOFENCY.TOP
注意SOFENCY.TOP是自己设定的realm
然后根据命令要求设置数据库master的密码,要求输入两次,一定要记住
初始化完成后进入 /var/kerberos/krb5kdc下会生成如下几个文件 - kerberos的常规操作
- 进入kerberos数据库
kadmin.local
- 展示用户
listprincs - 创建SOFENCY.TOP域内的管理员 */admin@SOFENCY.TOP的用户拥有所有的权限
具体在/var/kerberos/krb5kdc/kadm5.acl
进行设置addprinc root/admin@SOFENCY.TOP
- 重启kerberos 并且设置开启自启
systemctl restart krb5kdc
systemctl restart kadmin
chkconfig krb5kdc on
chkconfig kadmin on
Kerberos客户端的安装
- 在hadoop2,hadoop3上安装客户端
yum install -y krb5-libs krb5-workstation
- 将服务端/etc/krb5.conf的内容复制到客户端
- 测试登录admin (注意test/admin@SOFENCY.TOP是在服务端创建的)
执行kinit test/admin@SOFENCY.TOP
输入密码
然后klist查看当前账户的信息