kerberos简介

维护网络内的系统安全性和完整性至关重要,它涵盖了网络基础架构中的每个用户,应用程序,服务和服务器。 它需要了解网络上正在运行的所有内容以及这些服务的使用方式。 维护此安全性的核心是维护对这些应用程序和服务的访问并强制执行该访问。

Kerberos是一种比普通的基于密码的认证更加安全的认证协议。使用Kerberos,即使在其他计算机上访问服务时也永远不会通过网络发送密码。

Kerberos提供了一种机制,允许用户和机器向网络标识自己,并接收对管理员配置的区域和服务的定义的、受限的访问权限。Kerberos通过认证实体的身份对其进行认证证,并且Kerberos还保护此认证数据,使其不会被外人访问、使用或篡改。

关于KERBEROS

Kerberos使用对称密钥加密技术对用户进行网络服务认证,这意味着永远不会实际通过网络发送密码。

因此,当用户使用Kerberos对网络服务进行认证时,试图通过监视网络流量来收集密码的未授权用户将受到有效阻止。

Kerberos工作原理的基础

大多数常规网络服务使用基于密码的认证方案,其中用户提供密码以访问给定的网络服务器。 但是,许多服务的认证信息的传输是未加密的。 为了确保这种方案的安全,外部人员必须无法访问网络,并且网络上的所有计算机和用户都必须是受信任的和可信任的。

使用简单的基于密码的认证,不能假定连接到Internet的网络是安全的。 任何能够访问网络的攻击者都可以使用简单的数据包分析器或数据包嗅探器来拦截用户名和密码,从而破坏用户帐户,从而损害整个安全基础结构的完整性。

Kerberos消除了整个网络中未加密密码的传输,并消除了攻击者嗅探网络的潜在威胁。

Kerberos并没有像简单的密码验证那样分别对每个用户认证每个网络服务,而是使用对称加密和受信任的第三方(密钥分发中心或KDC)来验证用户对一组网络服务的身份。 该KDC和任何从KDC管理的计算机构成一个领域。

当用户向KDC进行认证时,KDC将特定于该会话的一组凭证(票证)发送回用户计算机,并且任何支持Kerberos的服务都会在用户计算机上查找该票证,而不是要求用户使用密码进行认证。

如图“ Kerberos认证”所示,每个用户都使用唯一的身份(称为主体)向KDC标识。 当支持Kerberos的网络上的用户登录其工作站时,其主体将作为对认证服务器请求的票证授予票证(或TGT)的一部分发送到KDC。 该请求可以由登录程序发送,以便对用户透明,也可以在用户登录后由用户通过kinit程序手动发送。

然后,KDC在其数据库中检查主体。 如果找到了主体,则KDC将创建一个TGT,使用用户的密钥对其进行加密,然后将TGT发送给该用户。

在这里插入图片描述

然后,客户端上的login或kinit程序使用用户密钥解密TGT,该密钥是根据用户密码计算得出的。 用户密钥仅在客户端计算机上使用,并且不会通过网络传输。 KDC发送的票证(或凭证)存储在本地存储中,即凭证高速缓存(ccache),可以通过支持Kerberos的服务进行检查。 红帽企业版Linux 7支持以下类型的凭证高速缓存:

  • KEYRING; 持久性KEYRING ccache类型是Red Hat Enterprise Linux 7的默认设置
  • 文件
  • 目录
  • 内存

认证后,服务器可以检查已识别的主体及其密钥的未加密列表,而无需检查kinit。 这保存在密钥表中。

TGT设置为在特定时间段(通常为10到24小时)后过期,并存储在客户端计算机的凭证高速缓存中。 设置了到期时间,以使攻击者仅在短时间内使用了受到破坏的TGT。 发出TGT后,用户不必再次输入密码,直到TGT到期或注销并再次登录为止。

每当用户需要访问网络服务时,客户端软件就会使用TGT向票证授予服务器(TGS)请求针对该特定服务的新票证。 然后使用服务票透明地认证用户对该服务的身份。

关于Kerberos主体名称

主体不仅标识用户或服务,还标识实体所属的领域。 主体名称包含两部分,标识符和领域:

identifier@REALM

对于用户,标识符只是Kerberos用户名。 对于服务,标识符是服务名和运行它的计算机的主机名的组合:

service/FQDN@REALM

服务名称是区分大小写的字符串,特定于服务类型,例如host,ldap,http和DNS。 并非所有服务都有明显的主体标识符。 例如,sshd守护程序使用host服务主体。

host主体通常存储在 /etc/krb5.keytab中。

Kerberos请求票证时,它将始终将域名别名(DNS CNAME记录)解析为相应的DNS地址(A或AAAA记录)。 创建服务或host主体时,将使用地址记录中的主机名。

例如:

www.example.com CNAME web-01.example.com
web-01.example.com A 192.0.2.145

服务尝试使用其CNAME别名连接到主机:

$ ssh www.example.com

Kerberos服务器请求一个票证以获取解析的主机名web-01.example.com@EXAMPLE.COM,因此host主体必须为host/web-01.example.com@EXAMPLE.COM。

关于Domain-to-Realm映射

当客户端尝试访问在特定服务器上运行的服务时,它知道服务的名称(host)和服务器的名称(foo.example.com),但是因为可以在网络上部署多个领域 ,它必须猜测服务所在的Kerberos领域的名称。

默认情况下,领域名称采用全部大写字母的服务器DNS域名。

foo.example.org → EXAMPLE.ORG
foo.example.com → EXAMPLE.COM
foo.hq.example.com → HQ.EXAMPLE.COM

在某些配置中,这就足够了,但是在其他配置中,派生的领域名称将是不存在的领域的名称。 在这些情况下,必须在客户端系统的 /etc/krb5.conf 文件的domain_realm部分中指定从服务器的DNS域名到其领域名称的映射。 例如:

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

该配置指定两个映射。 第一个映射指定example.com DNS域中的任何系统都属于EXAMPLE.COM领域。 第二个参数指定域中也包含名称完全为example.com的系统。 域和特定主机之间的区别以是否存在初始句号为特征。 也可以使用“ _kerberos TXT”记录将映射直接存储在DNS中,例如:

$ORIGIN example.com
_kerberos TXT “EXAMPLE.COM”

环境要求

Kerberos依赖于能够解析计算机名称。 因此,它需要有效的域名服务(DNS)。 必须正确配置网络上的DNS条目和主机,这在 /usr/share/doc/ krb5-server-version-number 的Kerberos文档中有所介绍。

接受Kerberos身份验证的应用程序需要时间同步。 您可以使用诸如ntpd之类的服务在网络上的计算机之间设置近似时钟同步。 有关ntpd服务的信息,请参见 /usr/share/doc/ntp-version-number/html/index.html或ntpd(8)手册页中的文档。

运行Red Hat Enterprise Linux 7的Kerberos客户端支持使用KDC进行自动时间调整,并且没有严格的时间要求。 使用Red Hat Enterprise Linux 7部署IdM客户端时,这可以更好地容忍时钟差异。

部署Kerberos的注意事项

尽管Kerberos消除了常见且严重的安全威胁,但是由于多种原因,很难实施:

  • Kerberos假定每个用户都是受信任的,但在不受信任的网络上使用的是不受信任的主机。 其主要目的是防止未加密的密码通过该网络传输。 但是,如果除适当用户之外的任何人都可以访问颁发用于认证证的票证的一台主机,即KDC,则整个Kerberos身份验证系统都将受到威胁。
  • 对于使用Kerberos的应用程序,必须修改其源代码以对Kerberos库进行适当的调用。以这种方式修改的应用程序被认为是Kerberos感知的。对于某些应用程序,由于应用程序的大小或其设计,这可能是非常有问题的。对于其他不兼容的应用程序,必须更改服务器和客户端的通信方式。同样,这可能需要大量编程。默认情况下不支持Kerberos的封闭源代码应用程序通常是问题最严重的。
  • 要使用Kerberos保护网络,必须使用所有客户端和服务器应用程序的Kerberos感知版本,这些应用程序在未加密的情况下传输密码,或者根本不使用该客户端和服务器应用程序。
  • 将用户密码从标准UNIX密码数据库(例如**/etc/passwd/etc/shadow**)迁移到Kerberos密码数据库可能很麻烦。 没有自动机制可以执行此任务。 迁移方法可能会有所不同,具体取决于Kerberos部署的特定方式。 因此,建议您使用身份管理功能。 它具有用于迁移的专用工具和方法。

Kerberos的其他资源

Kerberos可以实现为一项复杂的服务,在部署方式上具有很大的灵活性。 表“外部Kerberos文档”和表“重要的Kerberos手册页”列出了一些最重要或最有用的资源,以获取有关使用Kerberos的更多信息。

外部Kerberos文档

文档位置
Kerberos V5安装指南(使用PostScript和HTML)/usr/share/doc/krb5-server-version-
number
Kerberos V5系统管理员指南(使用PostScript和HTML)/usr/share/doc/krb5-server-version-
number
Kerberos V5 UNIX用户指南(使用PostScript和HTML)usr/share/doc/krb5-
workstation-version-number

可以通过运行man command_name来打开任何手册页文件。

重要的Kerberos手册页

手册页描述
客户端应用程序
kerberosKerberos系统的简介,描述了凭证的工作方式
并提供了有关获取和销毁Kerberos票证的建议。
手册页的底部引用了许多相关的手册页。
kinit描述如何使用此命令获取和缓存票证授予票证。
kdestroy描述如何使用此命令销毁Kerberos凭证。
klist描述如何使用此命令列出缓存的Kerberos凭证
管理应用程序
kadmin介绍如何使用此命令来管理Kerberos V5数据库。
kdb5_util描述如何使用此命令在Kerberos V5数据库上创建
和执行低级管理功能
服务器应用
krb5kdc描述Kerberos V5 KDC的可用命令行选项。
kadmind描述Kerberos V5管理服务器的可用命令行选项。
配置文件
krb5.conf描述Kerberos V5库的配置文件中可用的格式和选项。
kdc.conf描述Kerberos V5 AS和KDC的配置文件中可用的格式和选项。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值