(V 1.0.1)
目录
2.3.2. 创建 Principals 和 Keytabs
1. Kerberos 简介
“ Kerberos 是一种在 不可信网络 上对 可信任主机 之间的认证协议”, 即 在开放、不安全的网络上,主机之间的通信可能被拦截, Kerberos 协议用于在这样的网络上提供可靠的认证服务。但如果使用的计算机很容易受到攻击, Kerberos 则无法提供任何保证:认证服务器、应用服务器( imap, pop, smtp, telnet, ftp, ssh , AFS, lpr, ... )、客户端必须保持密码的周期性更新,以保证请求服务的用户和服务提供者之间的正确认证。
例如,如果某人获取了一台机器的特许访问权限,可以复制包含密钥的文件,则 Kerberos 的认证策略就失去用途了。侵入者可以复制密钥文件到另一台机器上,设置相同的 DNS 和 IP ,认证服务器会认为它就是真正的客户端。
2. UDH 启用 安全系统
2.1. 安装Kerberos前 准备
在 UDH 环境下安装 Kerberos 需要 注意 :
NameNode 与 DataNode 分开 安装
SNameNode 与 DataNode 分开 安装
NameNode 与 SNameNode 分开 安装
ResouceManager 与 NodeManager 分开 安装
即 上述 各 条中的组件不 能 同时安装在一个节点上 ( NameNode 可 与 ResouceManager 安装于 同一节点) , 否则容易造成启用安全 后 ,服务无法启 动 。
安装 配置好 UDH 后 , 若需要启用 安全 系统,需要经历 以下三 个步骤:安装 kerberos , 配置 UDH 安全, 运行服务 检测 。
2.2. 安装Kerberos
UDH 提供 Kerberos 的 自动安装脚本 : kerberos_install.sh 。该 脚本 在 执行的服务器上安 装 KDC , 即 krb5-server 。
在 脚本路径下执行:
# bash ./ kerberos_install.sh
将 出现以下 提示 信息:
>>Please use uppercase enter default_realm eg:YONYOU.COM: YONYOU.COM
>>Please enter kadmin's passwd:
>>Please confirm the script execute on udh manager-server? [Y/N]:
安装 过程中按提示输入即可。
这里 , 脚本 支持 KDC 两种 安装 方式 :
1 、 UDH Manager 机器上部署
即在 安装 UDH 的 集群 内 的一台机器上执行 kerberos_install.sh 脚本, 并 在 Please confirm the script execute on udh manager-server? [Y/N]: 步骤 选择 Y , 说明将在 安装 UDH 的 集群中部署 kerberos , 部署范围 涉及 整个集群。
2 、 UDH 集群外独立机器上部署
即在 安装 UDH 的 集群外的一台机器上执行 kerberos_install.sh 脚本, 并 在 Please confirm the script execute on udh manager-server? [Y/N]: 步骤 选择 N , 说明将 在 UDH 集群外机器上安装 KDC ,在 UDH 集群内的机器上安装 client, 部署范围 涉及执行 脚本的 服务器 中 /etc/hosts 下 的所有 域内 机器 ( @ yonyou.com )。
2.3. 配置 安全
安装 配置好 Kerberos 后, 在管理菜单里选择“安全”,点击“启用安全系统”。
2.3.1. 启用安全
1 、 指定 Kerberos 的 Realm 域:本例中设置为 YONYOU.COM ;
2 、(可选)修改各服务的 Principal 名称及 Keytab 文件的存储位置,建议保持原值;
2.3.2. 创建Principals和Keytabs
导出用于生成 Principal 及 Keytab 的 CSV 文件,上传到 KDC 所在的服务器。因为 KDC 要生成 Keytab 文件,并分发到各客户端,也就是 Hadoop 集群里的每一台机器上,所以要保证 KDC 可以无密码访问这些客户端。在 UDH 中,我们的策略是将 KDC 部署在集群的主节点( master )上面,这样就可以方便的生成 Principal 并将相应的 Keytab 文件分发送到各从节点。同时,启用了安全认证的集群里每个服务都需要进行安全配置,所以我们统一生成配置文件,并在下面的步骤里重启整个集群。
在 CSV 上传到 KDC ( UDH 主节点)之后,执行以下命令,系统将生成所有的 Principal 及 Keytab 文件,并分发到相应的 Kerberos 客户端上。其中,各客户端上 Keytab 文件存放的路径与步骤 1 中配置服务页面中的 Keytab 文件路径一致。
/var/lib/ambari-server/resources/scripts/kerberos-setup.sh /root/tools/host-principal-keytab-list.c sv /root/.ssh/
其中参数 ’ host-principal-keytab-list.c sv ’ 是我们导出的 CSV 文件,参数 ’ /root/.ssh/ ’ 是 SSH 目录,系统要读取该目录下的密钥。
注意 ,必须先 下载 CSV ,生成 Principal 及 Keytab 文件之后,才可以点击 应用 按钮,否则系统将无法启动!
2.3.3. 应用 安全
点击页面的‘应用’按钮,系统将停止所有服务,并在应用所有服务的安全配置后,重新启动所有服务,集群进入安全系统运行模式。这个过程可能用时较长,通常要十几分钟或更长时间,请耐心等待,不要在部署过程中点击确定(或者是同意)按钮。
2.4. 服务检测
启用 安全后, 在各 服务的 “配置”界面中, 非 log4j .properties 的“自定义配置 文件 ”下 ,都 显示 了该服务 安全 相关的配置项 , 可进行查看 。
2.4.1. 运行服务 检测
各 服务界面右上角 处有“服务 操作 ”按钮 ,点击下拉菜单中的 “运行 服务 检测”可 执行该服务 的 安全验证脚本, 运行 成功意味着该服务在安全模式下 可 正常 运行 。
2.4.2. HTTP Spnego 检测
基本上 需要网页访问的服务都需要进行 HTTP Spnego 验证
1 、各 节点执行 kinit( 使用 具体的主机名和域名替代 {{hostname@REALM}} ):
kinit –k –t /etc/security/keytabs/spnego.service.keytab HTTP/ {{hostname@REALM}}
2 、安装 VNC
yum install tigervnc
yum install tigervnc-server
vncserver :18
3 、 下载 VNC Viewer 并安装 。打开 VNC Viewer ,安装 Firefox ,输入:
yum install firefox
4 、 在 VNC Viewer 中打开 Firefox ,进行如下配置:
在地址栏输入‘ about:config ’,回车;
在过滤器内输入过滤条件‘ network.negotiate-auth.trusted-uris ’;
双击条目,在输入框内输入要访问的主机列表,主机之间以逗号分隔‘ hostname1.yonyou.com, hostname2.yonyou.com, hostname3.yonyou.com, hostname 4.yonyou.com ’
5 、 打开 HDFS 页面,例如 : http:// hostname 1 .yonyou.com: 50070
如果提示需要进行 HTTP 认证,在 dev1 上执行如下命令:
kinit -k -t /etc/security/keytabs/spnego.service.keytab HTTP/ hostname 1.yonyou.com@YONYOU.COM
注意 :测试过程中需要 针对 不同的服务设置 用户 :
如 HDFS 需要:
kinit -k -t /etc/security/keytabs/hdfs.headless.keytab hdfs/hostname1.yonyou.com@YONYOU.COM 或
kinit -k -t /etc/security/keytabs/hdfs.headless.keytab hdfs@YONYOU.COM
3. UDH 禁用 安全系统
UDH 禁用安全系统 比 启用 操作更为 简单, 只 需 在管理菜单里选择“安全”,点击“禁用安全系统”即可。