- 配置KDC主服务器
- 安装需要的包
#yum install krb5-serverkrb5-libs krb5-workstationpam_krb5 -y
- 修改主机名,如果有DNS服务器,不需要配置
#vim /etc/hosts
10.22.225.212 gamekerberos.opi.com kerberos1 10.30.33.60 gamekerberos2.opi.com kerberos2 |
- Master服务器配置
#vim /etc/krb5.conf
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/data/krb5kdc.log admin_server = FILE:/var/log/kadmind.log
[libdefaults] default_realm = GAME.OPI.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = yes
[realms] GAME.OPI.COM = { kdc = gamekerberos.opi.com:88 kdc = gamekerberos2.opi.com:88 admin_server = gamekerberos.opi.com:749 default_domain = opi.com }
[domain_realm] .opi.com = GAME.OPI.COM opi.com = GAME.OPI.COM
[appdefaults] pam = { debug = false ticket_lifetime = 24h renew_lifetime = 24h forwardable = true krb4_convert = false } |
#vim /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults] v4_mode = none #kdc_tcp_ports = 88
[realms] GAME.OPI.COM = { master_key_type = des3-hmac-sha1 acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab #max_life = 7d max_renewable_life = 7d supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3 } |
- 创建kerberos数据库,会让你输入
#kdb5_util create -r GAME.OPI.COM –s
将在/var/kerberos/krb5kdc/下生成很多文件
文件解释,kadmin.acl为kadmin允许用户列表,kdc.conf为加密方式
- 定义策略,kadmin.local本地登录
#kadmin.local
#kadmin.local: add_policy -maxlife 360days -minlife 3days -minlength 8 -minclasses 3-history 3 default
#密码有效期90天;最少使用3天;密码最小长度为8个字符,这些字符必须来自5个可用类型中3个不同的类型:小写字母、大写字母、数字、标点符号和其他;不能修改为最近3次的密码。
- master服务器上,添加admin用户
#kadmin.local: addprinc
查看指定帐户信息
#kadmin.local: getprincadmin/admin
查看所有帐户信息
#kadmin.local: listprincs
- 通配符实现授予所有权限,修改域名
#vim /var/kerberos/krb5kdc/kadm5.acl
*/admin@GAME.OPI.COM * admin/admin@GAME.OPI.COM * |
- 创建包含密钥的keytab文件,用于远程管理KDC
#kadmin.local: ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/changepw
- 启动KDC服务和Kadmin服务
#service krb5kdc start
#service kadmin restart
- 使用kinit命令,测试admin账户是否生成成功
#kinit admin/admin
- 配置KDC从服务器
- 安装需要的包
#yum install krb5-server krb5-libs krb5-workstation pam_krb5 -y
- 将master服务器上的几个文件拷贝到slave服务器上
#scp /etc/krb5.conf kerberos2:/etc/
#cd /var/kerberos/krb5kdc/
#scp kdc.conf kadm5.acl .k5.GAME.OPI.COM kerberos2:/var/kerberos/krb5kdc/
- 创建host keytab 文件
在master服务器上
kadmin: addprinc -randkey host/gamekerberos.opi.com
#添加principal
kadmin:ktadd–k /etc/krb5.keytab host/gamekerberos.opi.com
#生成keytab文件
在slave服务器上
kadmin: addprinc -randkey host/gamekerberos2.opi.com
#添加principal
kadmin:ktadd–k /etc/krb5.keytab host/gamekerberos2.opi.com
#生成keytab文件
- 再slave服务器上创建数据库同步的配置文件,如多个slave,添加多个
#vim /var/kerberos/krb5kdc/kpropd.acl
host/gamekerberos.opi.com@GAME.OPI.COM host/gamekerberos2.opi.com@GAME.OPI.COM |
- 在slave上启动kpropd服务
#kpropd –S
查看端口号和进程,如果有就说明kpropd服务器已经启动
#netstat -nalp|grep 754
#ps aux|grep kpropd
至此,slave上的KDC服务还不能启动,因为无KDC的database数据
- 将master服务器上的相关数据同步到slave上
#kdb5_util dump /var/kerberos/krb5kdc/slave_data
#kprop -f /var/kerberos/krb5kdc/slave_data gamekerberos2.opi.com
成功后,会出现以下信息:
Database propagation to gamekerberos2.opi.com: SUCCEEDED
- slave上/var/kerberos/krb5kdc/会多出一些文件
from_master principal principal.ok pricipal.kadm5 principal.kadmin5.lock |
- 测试主从是否生效
- 从第三台服务器,使用kinit 获取ticket,正常情况下会从master上获取
- 关闭master上的KDC服务
- 再次从第三台服务器上,使用kinit 获取ticket,如果成功,说明生效
- 也可以观察KDC的日志,主从都tail
#tail -f/var/log/krb5kdc.log
- 当有多台slave时,定时更新脚本可以这样:
#!/bin/sh kdclist = "gamekerberos2.opi.comgamekerberos3.opi.com " kdb5_util dump /var/kerberos/krb5kdc/slave_date for kdc in $kdclist do kprop -f /var/kerberos/krb5kdc/slave_data $kdc done |
- 修改防火墙策略开启tcp 88、749、754和646端口
#88 kerberos #749 admin_server #754 kpropd #646 kpasswd |
#vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 88 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 749 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 754 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport646 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 749 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 754 -j ACCEPT |
#service iptables restart