插件窝 干货文章 linux kerberos怎样进行认证

linux kerberos怎样进行认证

EXAMPLE bash krb Kerberos    来源:    2025-05-14

Linux Kerberos 认证详解

Kerberos 是一种网络认证协议,通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。下面是在 Linux 环境下配置和使用 Kerberos 认证的完整指南。

1. 基本概念

  • KDC (Key Distribution Center): 包含 AS (Authentication Server) 和 TGS (Ticket Granting Server)
  • Principal: 用户或服务的唯一标识符,格式为 primary/instance@REALM
  • Keytab: 包含服务 principal 和加密密钥的文件
  • Ticket: 客户端用于证明身份的凭据

2. 安装 Kerberos

在 KDC 服务器上安装:

# Debian/Ubuntu
sudo apt-get install krb5-kdc krb5-admin-server

# RHEL/CentOS
sudo yum install krb5-server krb5-libs krb5-workstation

在客户端上安装:

# Debian/Ubuntu
sudo apt-get install krb5-user libpam-krb5 libkrb5-dev

# RHEL/CentOS
sudo yum install krb5-workstation pam_krb5

3. 配置 KDC 服务器

初始化 KDC 数据库:

sudo kdb5_util create -s

编辑配置文件 /etc/krb5.conf:

[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

编辑 /etc/krb5kdc/kadm5.acl:

*/admin@EXAMPLE.COM *

启动服务:

sudo systemctl start krb5-kdc krb5-admin-server
sudo systemctl enable krb5-kdc krb5-admin-server

4. 创建和管理 Principal

创建管理员 principal:

sudo kadmin.local
addprinc admin/admin

创建用户 principal:

kadmin -p admin/admin
addprinc username

创建服务 principal (如 SSH):

addprinc -randkey host/server.example.com
ktadd -k /etc/krb5.keytab host/server.example.com

5. 客户端配置

获取初始 ticket:

kinit username

查看 ticket:

klist

销毁 ticket:

kdestroy

6. 配置 SSH 使用 Kerberos

编辑 /etc/ssh/sshd_config:

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

重启 SSH 服务:

sudo systemctl restart sshd

客户端使用 Kerberos 认证 SSH:

ssh -o GSSAPIAuthentication=yes server.example.com

7. 常见问题排查

检查 KDC 是否正常工作:

telnet kdc.example.com 88

检查 keytab 文件:

klist -k /etc/krb5.keytab

检查 Kerberos 库版本:

krb5-config --version

调试 Kerberos 认证:

KRB5_TRACE=/dev/stdout kinit username

8. 高级配置

跨域信任:

kadmin.local
addprinc -requires_preauth krbtgt/OTHERREALM.COM@EXAMPLE.COM

自动续订 ticket:

kinit -R

使用 keytab 自动认证:

kinit -kt /path/to/keytab principal

通过以上步骤,您可以在 Linux 环境中成功配置和使用 Kerberos 认证系统。Kerberos 提供了强大的安全认证机制,特别适合企业级环境使用。