Kerberos是一个流行的网络认证协议,它通过使用秘密密钥加密技术,为客户端/服务器应用程序提供了强大的安全认证服务。对于管理多个VPS或VM实例的站长来说,Kerberos可以帮助实现集中化的单点登录(SSO),极大地提升安全性和管理效率。
本文将深入浅出地讲解Kerberos的基本原理,并提供在Linux VPS(作为客户端)上配置Kerberos以实现SSH集中认证的实操步骤。
1. Kerberos 工作原理简介
Kerberos的核心在于消除在不安全网络中传输密码的需要。它依赖于一个信任中心——KDC (Key Distribution Center)。KDC包含两个服务:
- AS (Authentication Server): 验证用户身份,并发放 TGT (Ticket-Granting Ticket)。
- TGS (Ticket-Granting Server): 使用 TGT 换取特定服务票据 (Service Ticket)。
认证流程简化:
- 用户(Principal)输入密码向 KDC 申请 TGT。
- 用户使用 TGT 向 KDC 申请访问特定服务(如SSH)的 Service Ticket。
- 用户将 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 票据进行认证,实现无密码的集中化安全登录。
汤不热吧