Kerberos 与 88 端口
88 是 Kerberos 认证服务的端口(RFC 4120),域环境中由域控承担 KDC 角色,负责签发与校验票据:客户端先用账号凭据换取票据授予票据,再凭它申请访问具体服务的票据。整套认证依赖时间:KDC 与客户端的时间偏差超过默认允许范围(通常 5 分钟)就会认证失败,因此时间同步是 Kerberos 的隐含前提。它也是口令喷洒与票据类攻击的观测重点,KDC 不应暴露到公网。
基本信息
| 服务 | Kerberos KDC(krb5kdc、Windows 域控) |
|---|---|
| 协议 | TCP 与 UDP 88(小票据常用 UDP) |
| 相关端口 | 464 用于口令修改,749 为 MIT kadmin |
| 时间要求 | 默认允许偏差约 5 分钟 |
| 客户端定位 | DNS 的 SRV 记录指向 KDC |
| 安全等级 | 仅域内可达 |
典型使用场景
- 域内登录与资源访问:登录域账号、访问文件共享与数据库的认证基础
- 企业单点登录:内部系统通过 Kerberos 票据识别用户身份而不传递口令
- 服务身份认证:数据库、Web 服务用服务主体名向 KDC 申请票据
- 跨域信任:林或域之间通过信任关系互发票据
- 安全排查:核对票据签发与请求来源是否正常
客户端认证与票据查看
客户端认证与票据查看
kinit ops@EXAMPLE.COM # 申请初始票据,成功即返回提示
klist # 查看当前票据与到期时间
klist -e # 查看票据使用的加密类型
kvno host/db01.example.com@EXAMPLE.COM # 核对服务主体名的版本号
ss -lntup | grep ':88 ' # 在 KDC 侧确认监听范围常见错误与定位
| 现象 | 含义 | 处置方向 |
|---|---|---|
| 时间偏差错误 | 客户端与 KDC 时间差超限 | 先修时间同步,再重试认证 |
| 预认证失败 | 账号或口令不正确 | 核对凭据,注意失败过多可能触发锁定 |
| 找不到 KDC | DNS 解析不到 SRV 记录或 88 被拦 | 检查 DNS 指向与防火墙策略 |
| 加密类型不支持 | 客户端与服务端支持的算法不匹配 | 核对域策略中的加密类型配置 |
| 票据过期 | 长时间操作后票据到期 | 重新申请票据,必要时调整票据有效期 |
服务端与网络侧检查要点
服务端与网络侧检查要点
ss -lntup | grep -E ':88 |:464 ' # KDC 是否同时监听认证与改密端口
dig +short SRV _kerberos._tcp.example.com # 客户端靠这条 SRV 找到 KDC,缺失会导致域登录失败
dig +short SRV _kerberos._udp.example.com
# Linux 客户端配置核对
# /etc/krb5.conf 中的 realm 与 KDC 地址必须与实际一致KDC 不应暴露公网,同时对 88 端口的失败尝试要有监控:Kerberos 的部分实现缺少口令尝试锁定机制,容易成为口令喷洒的目标。
时间同步是前提条件:域内主机时间漂移会先表现为跑票失败,再引发一系列登录与应用异常;排查这类问题前先确认时间是否一致,能省下大量无关方向的检查。
DNS 是另一半:客户端不是靠固定配置找 KDC,而是通过 SRV 记录定位;域名解析错误或被改到错误服务器时,88 端口连通也可能认证失败,排查时把 DNS 与端口一起验证。