关于AES-256加密:
对于使用 Centos5.6 及以上的系统,默认使用 AES-256 来加密的。这就需要集群中的所有节点上安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。
下载的文件是一个 zip 包,解开后,将里面的两个文件放到下面的目录中:$JAVA_HOME/jre/lib/security
3. 创建/var/kerberos/krb5kdc/kadm5.acl
内容为:*/admin@EXAMPLE.COM *
代表名称匹配/admin@EXAMPLE COM 都认为是admin,权限是 * 代表全部权限。
在KDC上我们需要编辑acl文件来设置权限,该acl文件的默认路径是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。
Kerberos的kadmind daemon会使用该文件来管理对Kerberos database的访问权限。对于那些可能会对pincipal产生影响的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。
4. 创建Kerberos数据库
此步可能用时较长,创建完成会在/var/kerberos/krb5kdc/下面生成一系列文件。并且会提示输入数据库管理员的密码。
其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个realm name —— 当krb5.conf中定义了多个realm时才是必要的。
如果需要重建数据库,将/var/kerberos/krb5kdc目录下的principal相关的文件删除即可.
当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:
kadm5.acl kdc.conf principal principal.kadm5 principal.kadm5.lock principal.ok5. 添加database administrator
为Kerberos database添加administrative principals (即能够管理database的principals) —— 至少要添加1个principal来使得Kerberos的管理进程kadmind能够在网络上与程序kadmin进行通讯。
创建管理员并输入密码admin。kadmin.local可以直接运行在KDC上,而无需通过Kerberos认证。
为用户设置密码:
[root@cdh-node-1 /]# kadmin.local -q "addprinc admin/admin" Authenticating as principal root/admin@EXAMPLE.COM with password. WARNING: no policy specified for admin/admin@EXAMPLE.COM; defaulting to no policy Enter password for principal "admin/admin@EXAMPLE.COM": Re-enter password for principal "admin/admin@EXAMPLE.COM": Principal "admin/admin@EXAMPLE.COM" created.6. 设置kerberos服务为开机启动,关闭防火墙
chkconfig krb5kdc on chkconfig kadmin on chkconfig iptables off7. 启动krb5kdc和kadmind进程
/usr/sbin/kadmind /usr/sbin/krb5kdc或
service krb5kdc start service kadmin start service krb5kdc status现在KDC已经在工作了。这两个daemons将会在后台运行,可以查看它们的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。
8. 检查Kerberos正常运行
kinit admin/admin9. 集群中的其他主机安装Kerberos Client
yum install krb5-workstation krb5-libs krb5-auth-dialog配置这些主机上的/etc/krb5.conf,这个文件的内容与KDC中的文件保持一致即可。
10. 在cm节点安装ldap客户端
yum install openldap-clients 5. Kerberos使用常用命令:
kinit admin/admin@EXAMPLE.COM # 初始化证书 klist # 查看当前证书 kadmin.local -q "list_principals" # 列出Kerberos中的所有认证用户 kadmin.local -q "addprinc user1" # 添加认证用户,需要输入密码 kinit user1 # 使用该用户登录,获取身份认证,需要输入密码 klist # 查看当前用户的认证信息ticket kinit –R # 更新ticket kdestroy # 销毁当前的ticket kadmin.local -q "delprinc user1" # 删除认证用户 5.1 管理员使用1. 登录
登录到管理员账户,如果在本机上,可以通过kadmin.local直接登录:
其它机器的,先使用kinit进行验证:
[root@cdh-server-1 /]# kinit admin/admin Password for admin/admin@EXAMPLE.COM: [root@cdh-server-1 /]# kadmin Authenticating as principal admin/admin@EXAMPLE.COM with password. Password for admin/admin@EXAMPLE.COM: kadmin:2. 增删改查账户
在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。
3. 生成keytab:使用xst命令或者ktadd命令
[root@cdh-node-1 /]# kadmin:xst -k /xxx/xxx/kerberos.keytab hdfs/hadoop1 5.2 用户使用