欢迎光临
我们一直在努力

深入浅出讲解kerberos

Kerberos是一个流行的网络认证协议,它通过使用秘密密钥加密技术,为客户端/服务器应用程序提供了强大的安全认证服务。对于管理多个VPS或VM实例的站长来说,Kerberos可以帮助实现集中化的单点登录(SSO),极大地提升安全性和管理效率。

本文将深入浅出地讲解Kerberos的基本原理,并提供在Linux VPS(作为客户端)上配置Kerberos以实现SSH集中认证的实操步骤。

1. Kerberos 工作原理简介

Kerberos的核心在于消除在不安全网络中传输密码的需要。它依赖于一个信任中心——KDC (Key Distribution Center)。KDC包含两个服务:

  1. AS (Authentication Server): 验证用户身份,并发放 TGT (Ticket-Granting Ticket)。
  2. TGS (Ticket-Granting Server): 使用 TGT 换取特定服务票据 (Service Ticket)。

认证流程简化:

  1. 用户(Principal)输入密码向 KDC 申请 TGT。
  2. 用户使用 TGT 向 KDC 申请访问特定服务(如SSH)的 Service Ticket。
  3. 用户将 Service Ticket 提交给目标服务器,完成认证。

2. 环境准备 (VPS 客户端配置)

假设您已经拥有一个运行中的Kerberos KDC(例如MIT Kerberos或FreeIPA)。本文的重点是配置您的新Linux VPS/VM作为客户端。

2.1 安装 Kerberos 客户端工具

根据您的Linux发行版选择对应的命令安装必要的工具包。

对于基于 Debian/Ubuntu 的系统 (例如 Ubuntu VPS):

sudo apt update
sudo apt install krb5-user -y

对于基于 RHEL/CentOS 的系统 (例如 CentOS/Rocky Linux VPS):

sudo yum install krb5-workstation -y

2.2 配置 krb5.conf

Kerberos的主要配置文件是 /etc/krb5.conf。您需要根据您的KDC环境修改此文件,确保客户端知道如何找到认证中心(KDC)。

假设您的Kerberos Realm是 EXAMPLE.COM,KDC的地址是 kdc.example.com

sudo vi /etc/krb5.conf

配置示例内容如下:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 EXAMPLE.COM = {
  kdc = kdc.example.com
  admin_server = kdc.example.com
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM

注意: 请将 EXAMPLE.COM 替换为您的实际 Kerberos 域名,并将 kdc.example.com 替换为 KDC 服务器的实际地址。

3. 测试 Kerberos 认证

配置完成后,使用 kinit 命令来验证您的客户端是否可以成功获取TGT。假设您的 Kerberos 用户名是 vps_admin

kinit vps_admin@EXAMPLE.COM

系统会提示您输入该用户的Kerberos密码。如果成功,您不会收到任何输出。

您可以使用 klist 命令查看当前获取到的票据信息:

klist

输出示例:

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: vps_admin@EXAMPLE.COM

Valid starting       Expires              Service principal
11/15/2023 10:00:00  11/16/2023 10:00:00  krbtgt/EXAMPLE.COM@EXAMPLE.COM

如果看到有效的 krbtgt 票据,说明Kerberos客户端配置成功。

4. 启用 SSH Kerberos 认证

最后一步是将SSH服务配置为接受Kerberos票据进行认证。这将允许您在获取TGT后,无需输入密码即可SSH登录。

4.1 修改 SSH 服务器配置

打开SSH配置文件 /etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

找到或添加以下几行,确保它们被启用(通常默认是被注释掉的):

# 启用 Kerberos 认证
KerberosAuthentication yes

# 允许 Kerberos 票据转发 (可选,但推荐用于 SSO)
KerberosTicketCleanup yes

4.2 重启 SSH 服务

保存并退出配置文件后,重启SSH服务使更改生效。

对于 Systemd 系统:

sudo systemctl restart sshd

现在,当您从一台已经获得 Kerberos TGT 的机器连接到此 VPS 时,SSH 将自动使用 Kerberos 票据进行认证,实现无密码的集中化安全登录。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 深入浅出讲解kerberos
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址