2019最新 Kerberos 联调环境 Linux 安装配置
2019最新 Kerberos 联调环境 Linux 安装配置
Prerequisite
操作系统: CentOS 7
JDK版本:1.8.0_131
Step 1. Install Kerberos
PS:登录到终端的用户是 ROOT.
1.1 安装Kerberos服务
yum install -y krb5-server krb5-workstation
1.2 更新主机名
这一步可以参考网上的操作,我不啰嗦了,你们的主机名自己设置,我用的是duanduan。
1.3 配置Kerberos
服务器hostname需提前配置好以便下列kerberos配置文件使用,参考下图
配置格式:
${IP_ADDRESS} xxx.iteye.com xxx
1.3.1 查看主机IP
查看命令: ifconfig
记住上图红框中的ip,接下来更新到hosts文件
1.3.2 更新hosts文件
查看命令: vi /etc/hosts
为了测试,我用的是 192.168.126.144 duanduan.iteye.com duanduan
需要自己添加一行 ,如上图。
1.3.3 更新客户端文件
查看命令:vi /etc/krb5.conf
该文件的修改处如下图所示:
查看命令:vi /var/kerberos/krb5kdc/kdc.conf
该文件的修改处如下图所示:
查看命令:vi /etc/krb.realms(不存在则创建该文件)
该文件的新增内容如下图所示
新增的内容如下:
duanduan.iteye.com ITEYE.COM
.iteye.com ITEYE.COM
1.4 创建KDC数据库
执行命令创建kerberos数据库, 按照提示输入密码
/usr/sbin/kdb5_util create -s
如下图:
输入的密码要记住,后续有用!
创建完成会在/var/kerberos/krb5kdc/下面生成一系列文件,若重建数据库则需先删
除/var/kerberos/krb5kdc下面principal相关文件
1.5 配置权限
给数据库管理员添加ACL权限,修改kadm5.acl文件,*代表全部权限
#vi /var/kerberos/krb5kdc/kadm5.acl
编辑文件,更新为ITEYE,如下图:
1.6 添加Kerberos管理员
根据提示输入管理员密码
# kadmin.local
kadmin.local: addprinc admin/admin
如下图所示:
完成密码输入后,输入exit 退出命令行。
输入的密码要记住,后续有用!
1.7 查看Kerberos服务状态,设置开机自启动
service krb5kdc status -- 查看状态(下同)
service kadmin status
service krb5kdc start/stop/restart -- 启动/停止/重启(下同)
service kadmin start/stop/restart
chkconfig krb5kdc on -- 设置开机自启(下同)
chkconfig kadmin on
如果中途有重启过linux操作系统,需要重启Kerberos的服务。参考上图重启命令。
1.8 配置JCE
CentOS6.5及以上系统默认使用AES-256加密,因此需要所有节点安装并配置JCE,
JCE下载路径:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
参考下图,使用下载或文章后面的在线安装包中的jar包
替换/usr/lib/jvm/${JAVA_VERSION_PATH}/jre/lib/security下jar包
(注:需使用root用户替换,其他用户可能没权限操作)
Step 2. Configure a Service Principal for an Oracle Database Server
2.1 Principal格式及说明
kservice/kinstance@REALM
Kservice 只的是ORACLE 的 SID,不懂SID的可以网上搜一下。
示例:
oracle/[email protected]
2.2 添加Principal
参考下图
输入exit 退出命令行。
Step 3. Extract a Service Key Table from Kerberos
3.1 提取Service Key Table
root用户执行命令:
先执行 命令 kadmin.local
kadmin.local: ktadd -k /tmp/keytab orcl/duanduan.iteye.com
kadmin.local: exit
输入exit 退出命令行。
切换 oracle用户执行命令:
-- cd ${ORACLE_HOME}/bin ,需根据${ORACLE_HOME}实际路径执行下列命令
cd /u01/app/oracle/product/11.2.0/dbhome_1/bin
oklist -k -t /tmp/keytab
注意执行 oklist -k -t /tmp/keytab 命令,发现这个文件的权限如下
-rw------- 1 root root 634 4月 11 16:59 keytab
需要将keytab 的访问权限开放给oracle。否则会执行失败。
用ROOT 用户 执行开放权限的命令 chmod 777 /tmp/keytab 。
再切换oracle用户执行命令,执行结果如下:
3.2 移动Service Key Table
# mv /tmp/keytab /etc/v5srvtab
3.3 检查Service Key Table权限
查看/etc/v5srvtab权限,确保oracle用户拥有该文件读权限
若无读权限,可使用下列命令授予权限
# chmod 777 /etc/v5srvtab
Step 4. Configure Kerberos Authentication
4.1 配置sqlnet.ora
编辑${ORACLE_HOME}/network/admin/sqlnet.ora配置, 参考下图:
若该配置文件存在,直接编辑;若该配置文件不存在,复制${ORACLE_HOME}/network/admin/samples/sqlnet.ora到${ORACLE_HOME}/network/admin/目录下,然后再编辑。
SQLNET.KERBEROS5_REALMS = /etc/krb.realms
SQLNET.KERBEROS5_CC_NAME = /tmp/krb5cc_0
SQLNET.AUTHENTICATION_SERVICES= (BEQ, TCPS, KERBEROS5)
TRACE_LEVEL_CLIENT = SUPPORT
TRACE_LEVEL_SERVER = SUPPORT
SQLNET.KERBEROS5_CONF = /etc/krb5.conf
SQLNET.KERBEROS5_CONF_MIT=TRUE
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE = orcl
ADR_BASE = /u01/app/oracle
新增的文件
4.2 配置init.ora
编辑${ORACLE_HOME}/dbs/init.ora, 添加下列配置
OS_AUTHENT_PREFIX=""
新增的内容如下:
Step 5. Create a Kerberos User
创建kerberos用户,根据提示输入密码
kadmin.local: addprinc krbuser
kadmin.local: exit
完成密码输入后,输入exit 退出命令行。
输入的密码要记住,后续有用!
Step 6. Create an Externally Authenticated Oracle User
切换oralce用户
# su - oracle
# sqlplus /nolog
SQL> CONNECT / AS SYSDBA;
SQL> CREATE USER "[email protected]" IDENTIFIED EXTERNALLY;
SQL> GRANT CREATE SESSION TO "[email protected]";
执行结果
Step 7. Get an Initial Ticket for the Kerberos/Oracle User
切换到${ORACLE_HOME}/bin目录, 执行下列命令初始化ticket
okinit krbuser
完成密码输入后,输入exit 退出命令行。
输入的密码要记住,后续有用!
测试数据库连接,如能连接,说明已安装成功
sqlplus /@orcl
连接成功后的效果图
如果连接不上,从这3个方面入手解决
1.查看Oracle 的 ora 监听文件的host是否改成 duanduan,跟着主机名一样就行。
2.用kist 命令 检查是否过期。如果过期用 kinit krbuser 重新注册。密码用之前保存设置的。[root@duanduan ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
2019-04-11T18:25:27 2019-04-12T02:25:12 krbtgt/[email protected]
[root@duanduan ~]# kinit krbuser
Password for [email protected]:
[root@duanduan ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
2019-04-12T15:13:53 2019-04-13T15:13:53 krbtgt/[email protected]
3.检查 /tmp/krb5cc_0 的文件权限是否有问题,建议执行如下命令:
[root@duanduan ~]# chmod 777 /tmp/krb5cc_0
[root@duanduan ~]# ll /tmp/krb5cc_0
-rwxrwxrwx 1 root root 685 4月 12 15:14 /tmp/krb5cc_0
Resources
官网:
https://web.mit.edu/kerberos/krb5-1.16/doc/index.html
相关说明文章:
https://docs.oracle.com/cd/E56344_01/html/E53971/kintro-1.html#scrolltoc
http://linux.vbird.org/linux_enterprise/kerberos.php
安装配置参考文章:
https://docs.oracle.com/cd/E11882_01/network.112/e40393/asokerb.htm#ASOAG060
https://blog.csdn.net/Post_Yuan/article/details/54406148
http://www.ateam-oracle.com/configuring-your-oracle-database-for-kerberos-authentication/
https://yq.aliyun.com/articles/624363?spm=a2c4e.11154873.tagmain.6.77abc71cxnqftk
常见错误原因列表及解决办法:
https://docs.oracle.com/cd/E19253-01/816-4557/trouble-6/index.html