对于简单安装的上线的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
名词解释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
- realm 域:表示一个公司或者一个组织,逻辑上授权认证范围
- logging块配置日志相关
- libdefaults块配置默认的设置,包括ticket的声明周期
- realms 是域的配置,可以配置多个realm
- domain_realm是kerberos内的域和主机名的域的对应关系 即hadoop1.sofency.top hadoop2.sofency.top等均是SOFENCY.TOP这个realm
- 配置/var/kerberos/krb5kdc/kdc.conf 按照如下进行修改
名词解释[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数据库
-
重启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查看当前账户的信息