MIT Kerberos 安装与配置

1.         安装Kerberos

在生产环境中安装设置Kerberos时,最好将多个备份KDC (Slave KDC)与主KDC (Master KDC)一起安装使用,以确保Kerberized服务的持续可用性。 每个KDC都包含Kerberos数据库的副本。 主KDC包含Realm数据库的可写副本,它以固定间隔复制数据到备份KDC。 所的有数据库更改(例如密码更改)都在主KDC上进行。 当主KDC不可用时,备份KDC提供Kerberos票证授予服务,但备份KDC不提供数据库管理。                         

许多GNU / BSD发行版都有工具来方便地安装Kerberos运行环境,但也可以直接从源代码编译和运行Kerberos。为了便于维护和管理,建议使用自己喜欢的工具来安装MIT Kerberos。 以下是不同的常见系统的软件包名称:

1541907160666381.png

请参加MIT 官方文档,如何安装和编译  MIT Kerberos ,链接如下:https://web.mit.edu/kerberos/krb5-1.12/doc/build/doing_build.html#do-build。

2.         KDC配置文件

安装Kerberos之后,就需要修改配置文件krb5.conf和kdc.conf,以反映Realm的正确配置信息(例如 域映射即Realm Mapping和Kerberos服务器名称)。

配置中的大多数属性都具有适用于大多数Realm的默认值。如果这些配置文件的位置与默认位置不同,需将KRB5_CONFIG和KRB5_KDC_PROFILE环境变量分别指向krb5.conf和kdc.conf正确的位置,例如: 

export KRB5_CONFIG=/yourdir/krb5.conf
export KRB5_KDC_PROFILE=/yourdir/kdc.conf

 

Krb5.conf

在该配置文件中,必须在[libdefaults]中指定default_realm,并且必须在[realms]部分中为每个域包含kdc属性, 要与每个Realm中的kadmin服务器通信,必须在[realms]部分中设置admin_server标记。

示例krb5.conf文件内容如下:

[libdefaults]
    default_realm = ATHENA.MIT.EDU
 
[realms]
    ATHENA.MIT.EDU = {
        kdc = kerberos.mit.edu
        kdc = kerberos-1.mit.edu
        admin_server = kerberos.mit.edu
    }

 

Kdc.conf

kdc.conf文件可用于控制KDC和kadmind的监听端口,以及特定Realm的默认值,数据库类型以及日志记录。

示例kdc.conf文件内容如下:

[kdcdefaults]
    kdc_ports = 88,750
 
[realms]
    ATHENA.MIT.EDU = {
        kadmind_port = 749
        max_life = 12h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        master_key_type = aes256-cts
        supported_enctypes = aes256-cts:normal aes128-cts:normal
        # If the default location does not suit your setup,
        # explicitly configure the following values:
        #    database_name = /var/krb5kdc/principal
        #    key_stash_file = /var/krb5kdc/.k5.ATHENA.MIT.EDU
        #    acl_file = /var/krb5kdc/kadm5.acl
    }
 
[logging]
    # By default, the KDC and kadmind will log output using
    # syslog.  You can instead send log output to files like this:
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmin.log
    default = FILE:/var/log/krb5lib.log

用相应的Kerberos Realm和KDC 服务器的名称替换上述例子中的ATHENA.MIT.EDU和kerberos.mit.edu设置。

3.         创建KDC数据库

可以在KDC服务器上使用kdb5_util命令来创建Kerberos数据库和可选的stash 文件。Stash文件是KDC服务器的Master Key的本地存储文件,它以加密形式驻留在KDC的本地磁盘上。 Stash文件用于在启动kadmind和krb5kdc守护进程之前自动向KDC提供身份验证。如果选择不安装Stash文件,KDC将在每次启动时提示用户输入Master Key, KDC将无法自动启动。

kdb5_util将提示用户输入Kerberos数据库的主密码, 此密码可以是任何字符串。以下是如何使用kdb5_util命令在KDC上创建Kerberos数据库和stash文件的示例。 请根据实际情况,替换ATHENA.MIT.EDU为合适的Kerberos Realm的名称: 

shell% kdb5_util create -r ATHENA.MIT.EDU -s
 
Initializing database '/usr/local/var/krb5kdc/principal' for realm 'ATHENA.MIT.EDU',
master key name 'K/M@ATHENA.MIT.EDU'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:  <= Type the master password.
Re-enter KDC database master key to verify:  <= Type it again.
shell%

 

这将在LOCALSTATEDIR / krb5kdc(或在kdc.conf中指定的位置)创建如下文件: 

  • 两个Kerberos数据库文件,principal和principal.ok

  • Kerberos管理数据库文件principal.kadm5

  • 管理数据库锁文件,principal.kadm5.lock

  • Stash文件,在此示例中为.k5.ATHENA.MIT.EDU。 如果不需要Stash文件,请运行上面的命令而不使用-s选项。

4.         ACL文件

KDC管理员需要创建一个访问控制列表(ACL)文件,并将至少一个管理员的Kerberos Principal放入其中, kadmind守护程序使用此文件来控制哪些Principal可以查看并对Kerberos数据库文件进行权限修改。 ACL文件名由kdc.conf中的acl_file变量确定; 默认值为LOCALSTATEDIR下的 / krb5kdc / kadm5.acl文件。可以参见链接 https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/kadm5_acl.html#kadm5-acl-5 了解关于Kerberos ACL 的详细信息。

5.         将管理员添加到Kerberos数据库

需要将管理员 Principal(即允许管理Kerberos数据库的Principal)添加到Kerberos数据库中。 首先必须至少添加一个Principal,以允许通过网络在Kerberos管理守护程序kadmind和kadmin程序之间进行通信,可以在KDC上使用kadmin.local程序。 kadmin.local可以在KDC主机上运行,它必须具有对本地文件系统上的Kerberos数据库的读写访问权限。

创建的管理员Principal应该被添加到ACL文件的管理主体。在以下示例中,将创建管理员 Principal admin / admin:

shell% kadmin.local
 
kadmin.local: addprinc admin/admin@ATHENA.MIT.EDU
 
WARNING: no policy specified for "admin/admin@ATHENA.MIT.EDU";
assigning "default".
Enter password for principal admin/admin@ATHENA.MIT.EDU:  <= Enter a password.
Re-enter password for principal admin/admin@ATHENA.MIT.EDU:  <= Type it again.
Principal "admin/admin@ATHENA.MIT.EDU" created.
kadmin.local:

 

6.         Kerebero 进程的启动

可以在KDC服务器上启动Kerberos KDC(krb5kdc)和管理守护程序。 如下命令:

shell% krb5kdc
shell% kadmind

 

每个服务器守护程序将在后台启动并运行。

注意

如果希望守护进程在系统启动时自动启动,可以将它们添加到KDC的/ etc / rc或/ etc / inittab文件中。

可以通过在krb5.conf中定义的日志记录位置检查其启动消息来验证它们是否已正确启动 。例如:

shell% tail /var/log/krb5kdc.log
Dec 02 12:35:47 beeblebrox krb5kdc[3187](info): commencing operation
shell% tail /var/log/kadmin.log
Dec 02 12:35:52 beeblebrox kadmind[3189](info): starting

 

后台程序在启动时遇到的任何错误也将列在日志记录输出中。

也可以检查kinit是否成功来验证已经成功创建的 Principal(将管理员添加到Kerberos数据库), 例如:

shell% kinit admin/admin@ATHENA.MIT.EDU

 7. KDC 客户端的配置

上述各节主要介绍了Kerberos 服务器端的主要配置和操作,下面简单介绍Kerberos 客户端的配置。主要的配置文件是/etc/krb5.conf, 此文件主要由Kerberos库用于配置需要访问KDC的任何kerberized客户端。示例如下:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
[libdefaults]
 default_keytab_name = /etc/krb5.keytab
 dns_lookup_realm = false
 dns_lookup_kdc= false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 default_realm = EXAMPLE.COM
  default_ccache_name = KEYRING:persistent:%{uid}
 default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
 default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
[realms]
EXAMPLE.COM = {
  kdc = kerberos.example.com
  admin_server = kerberos.example.com
 }
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

如果krb5.conf文件配置是正确的,可以尝试用Kinit启动对KDC的身份验证。

在尝试kinit之前,首先应该检查如下两项设置:

  • 时钟同步(两台机器之间的时钟偏差)

  • DNS和反向DNS

如果配置了DNS和时钟同步后,使用kinit启动Kerberos身份验证,如下:

# kinit -p frank # Initiate a ticket negotiation for principal frank@FOOBAR.COM
Password for frank@FOOBAR.COM

MIT Kerberos 安装与配置

发表评论

邮箱地址不会被公开。 必填项已用*标注

19 + = 二十 六

滚动到顶部