Kerberos协议
案例说明
在Centos7虚拟机中搭建Kerberos v5服务,模拟在某一局域网A, 所有主机的网关为192.168.41.2/24, Realm为LPTEXAS.TOP;Kerberos数据库、AS和TGS服务器都在192.168.41.89/24主机上。局域网A中,另一台主机192.168.41.90/24上的SSH服务器对应的Principle为host/192.168.41.90@LPTEXAS.TOP。最终实现,用户lptexas使用SSH无须输入密码远程登录局域网A中的主机192.168.41.90/24 。
Kerberos v5
服务搭建
Kerberos——192.168.41.89
首先,安装服务器相关程序
1 | yum install -y krb5-server krb5-workstation pam_krb5 |
安装完毕后,修改kerberos服务器的配置文件。首先是/var/kerberos/krb5kdc/kdc.conf,该文件中需要注意配置EXAMPLE.COM 这是设定的kerberos域,表示KDC所管辖的范围。本例中使用LPTEXAS.TOP作为kerberos域。
/var/kerberos/krb5kdc/kadm5.acl, 指定*/admin@LPTEXAS.TOP用户为管理员用户,拥有全部权限。上述参数只有两列,第一列为用户名,第二列为权限分配。
最后是/etc/krb5.conf文件,其中包含KDC的位置。所有使用的Kerberos的机器上的配置文件都要同步该文件。
初始化数据库,使用命令建立keberbos鉴权数据库,并创建库管理员。
1 | kdb5_util create -r LPTEXAS.TOP -s |
添加KDC服务器上的超级管理员账号,
1 | kadmin.local -q "addprinc root/admin@LPTEXAS.TOP" |
最后,启动Kerberos v5服务。
1 | systemctl start kadmin |
客户端——192.168.41.90
安装客户端
1 | yum install -y krb5-lib krb5-workstation |
将服务器中的/etc/krb5.conf拷贝到客户端的/etc/,可以使用命令。
1 | scp /etc/krb5.conf root@192.168.41.90:/etc/ |
在客户端上使用超级管理员账号登录,并查看票据。
1 | Kinit root/admin #输入两次密码 |
案例演示
首先创建用户lptexas,在kadmin中使用命令addprinc lptexas。可以使用listprincs查看已经创建好的用户。
然后创建服务主机,本例中的服务为SSH服务。
1 | addprinc -randkey host/192.168.41.90 |
切换至主机192.168.41.90,并在服务主机保存密钥,在kadmin中使用命令对应上一步创建的服务主机。
1 | kadmin |
验证密钥
1 | klist -t -e -k /etc/krb5.keytab |
以上一切就绪后,配置SSH,使其支持Kerberos认证。逐一修改下列文件中对应的项,开启相关功能。配置完毕后使用重新加载配置文件。
1 | systemctl restart sshd |
- /etc/ssh/ssh_config
GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes
- /etc/ssh/sshd_config
KerberosAuthentication yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
GSSAPIStrictAcceptorCheck no
GSSAPIKeyExchange yes
登录测试。在192.168.41.89主机,首先使用ssh连接测试,连接成功但需要输入密码,退出登录。使用kinit命令获取lptexas用户的登录凭证,再次使用ssh连接,连接成功,且不需要输入密码。
注:测试前,需要准备好服务主机的账号lptexas,以及注意关闭服务主机的防火墙。