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域。

image-20221123133416212

/var/kerberos/krb5kdc/kadm5.acl, 指定*/admin@LPTEXAS.TOP用户为管理员用户,拥有全部权限。上述参数只有两列,第一列为用户名,第二列为权限分配。

image-20221123133446152

最后是/etc/krb5.conf文件,其中包含KDC的位置。所有使用的Kerberos的机器上的配置文件都要同步该文件。

image-20221123133454541

初始化数据库,使用命令建立keberbos鉴权数据库,并创建库管理员。

1
kdb5_util create -r LPTEXAS.TOP -s

image-20221123133503673

添加KDC服务器上的超级管理员账号,

1
kadmin.local -q "addprinc root/admin@LPTEXAS.TOP"

最后,启动Kerberos v5服务。

1
2
3
4
systemctl start kadmin
systemctl start krb5kdc
systemctl enable krb5kdc
systemctl enable 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/

image-20221123133614162

​ 在客户端上使用超级管理员账号登录,并查看票据。

1
Kinit root/admin #输入两次密码

image-20221123133647131

案例演示

首先创建用户lptexas,在kadmin中使用命令addprinc lptexas。可以使用listprincs查看已经创建好的用户。

image-20221123133654772

然后创建服务主机,本例中的服务为SSH服务。

1
addprinc -randkey host/192.168.41.90

切换至主机192.168.41.90,并在服务主机保存密钥,在kadmin中使用命令对应上一步创建的服务主机。

1
2
kadmin
ktadd -k /etc/krb5.keytab host/192.168.41.90

验证密钥

1
klist -t -e -k /etc/krb5.keytab

image-20221123133814213

以上一切就绪后,配置SSH,使其支持Kerberos认证。逐一修改下列文件中对应的项,开启相关功能。配置完毕后使用重新加载配置文件。

1
systemctl restart sshd
  • /etc/ssh/ssh_config
  1. GSSAPIAuthentication yes

  2. GSSAPIDelegateCredentials yes

  • /etc/ssh/sshd_config
  1. KerberosAuthentication yes

  2. GSSAPIAuthentication yes

  3. GSSAPICleanupCredentials yes

  4. GSSAPIStrictAcceptorCheck no

  5. GSSAPIKeyExchange yes

登录测试。在192.168.41.89主机,首先使用ssh连接测试,连接成功但需要输入密码,退出登录。使用kinit命令获取lptexas用户的登录凭证,再次使用ssh连接,连接成功,且不需要输入密码。

image-20221123133911042

注:测试前,需要准备好服务主机的账号lptexas,以及注意关闭服务主机的防火墙。