暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

全文搞定:Kerberos概述、源码编译、安装、配置详解

大数据从业者 2022-02-10
1965

概述

众所周知,互联网很不安全,互联网上使用的许多协议都不提供任何安全性保证。因此,通过网络发送未加密密码的应用程序极易受到攻击。这种不安全问题,不是防火墙能够解决的。

为解决这类网络安全问题,Kerberos协议应运而生。Kerberos是一种网络身份验证协议,通过使用强大的密钥加密技术,为客户端/服务端通信提供强大的身份验证功能,客户端与服务端可以基于不安全的网络建立连接,相互进行身份验证。甚至,可以对通信内容进行加密,以确保数据的隐私和完整性。

麻省理工学院提供Kerberos协议的开源实现-MIT Kerberos,任何希望使用它的人都可以自己查看代码,并确保代码是可信的,也可以直接应用于商业产品中。总之,Kerberos是网络安全问题的解决方案。它通过网络提供身份验证和强大的加密工具,以帮助企业保护内部信息系统。可以说,Kerberos对信息/技术体系结构来说是无价的。

Yum安装

Kerberos服务端节点

[root@felixzh1 home]# yum install -ykrb5-server krb5-libs krb5-workstation

Kerberos客户端节点

[root@felixzh2 ~]# yum install -ykrb5-devel krb5-workstation

配置文件-krb5.conf

适用于客户端和服务端上使用Kerboros的所有应用程序。

默认安装位置/etc/krb5.conf,可以使用环境变量KRB5_CONFIG指定。

通常包含如下节点(也可以包含kdc.conf中的节点,但不推荐这么玩):

说明:

节点参数太多,这里就不一一介绍,详细可以查阅官网:

https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_files/krb5_conf.html#sections

默认安装,krb5.conf文件内容如下:

官网示例如下:

[libdefaults]


default_realm = ATHENA.MIT.EDU


dns_lookup_kdc = true


dns_lookup_realm = false





[realms]


ATHENA.MIT.EDU = {


kdc = kerberos.mit.edu


kdc = kerberos-1.mit.edu


kdc = kerberos-2.mit.edu


admin_server = kerberos.mit.edu


primary_kdc = kerberos.mit.edu


}


EXAMPLE.COM = {


kdc = kerberos.example.com


kdc = kerberos-1.example.com


admin_server = kerberos.example.com


}





[domain_realm]


mit.edu = ATHENA.MIT.EDU





[capaths]


ATHENA.MIT.EDU = {


EXAMPLE.COM = .


}


EXAMPLE.COM = {


ATHENA.MIT.EDU = .


}

配置文件-kdc.conf 

kdc.conf对krb5.conf进行补充,通常仅适用于kdc特定进程(krb5kdc、kadmind、kdb5_util)。此时,krb5.conf和kdc.conf将被合并到一个单独的配置文件中使用。

注意:修改kdc.conf文件,需要重启kdc特定进程,才能生效。

默认安装位置/var/kerberos/krb5kdc/kdc.conf,可以使用环境变量KRB5_KDC_PROFILE指定。

通常包含如下节点:

https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_files/kdc_conf.html#sections

默认安装,kdc.conf文件内容如下:

官网示例如下:

[kdcdefaults]


kdc_listen = 88


kdc_tcp_listen = 88


[realms]


ATHENA.MIT.EDU = {


kadmind_port = 749


max_life = 12h 0m 0s


max_renewable_life = 7d 0h 0m 0s


master_key_type = aes256-cts-hmac-sha1-96


supported_enctypes = aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal


database_module = openldap_ldapconf


}





[logging]


kdc = FILE:/usr/local/var/krb5kdc/kdc.log


admin_server = FILE:/usr/local/var/krb5kdc/kadmin.log





[dbdefaults]


ldap_kerberos_container_dn = cn=krbcontainer,dc=mit,dc=edu





[dbmodules]


openldap_ldapconf = {


db_library = kldap


disable_last_success = true


ldap_kdc_dn = "cn=krbadmin,dc=mit,dc=edu"


# this object needs to have read rights on


# the realm container and principal subtrees


ldap_kadmind_dn = "cn=krbadmin,dc=mit,dc=edu"


# this object needs to have read and write rights on


# the realm container and principal subtrees


ldap_service_password_file = /etc/kerberos/service.keyfile


ldap_servers = ldaps://kerberos.mit.edu


ldap_conns_per_server = 5


}

配置文件-kadm5.acl

Kerberos kadmind进程利用ACL文件(即kadm5.acl)进行Kerberos数据库的权限管理。对于影响principals的操作,kadm5.acl可以精确控制到每个principals。默认安装位置/var/kerberos/krb5kdc/kadm5.acl,可以使用kdc.conf中realms节点中的acl_file参数指定。

注意:修改kadm5.acl文件,需要重启kadmind进程,才能生效。

语法:

principal  permissions [target_principal  [restrictions]]

注意:以行为单位设置,优先级由上到下,越来越低。

principal permissions为必选项,[target_principal  [restrictions] ]为可选项

其中,permissions详细参数项如下:

https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_files/kadm5_acl.html#syntax

默认安装,kadm5.acl文件内容如下:

官网示例如下:

*/admin@ATHENA.MIT.EDU    *                               # line 1
joeadmin@ATHENA.MIT.EDU ADMCIL # line 2
joeadmin/*@ATHENA.MIT.EDU i */root@ATHENA.MIT.EDU # line 3
*/root@ATHENA.MIT.EDU ci *1@ATHENA.MIT.EDU # line 4
*/root@ATHENA.MIT.EDU l * # line 5
sms@ATHENA.MIT.EDU x * -maxlife 9h -postdateable # line 6

Realm配置决策

在安装Kerberos V5之前,有必要考虑以下问题:

  • 确认Kerberos realm的名称(或者需要多个realm时每个realm的名称)。

  • 确认如何将hostnames分配给Kerberos realms。

  • KDC(default port:88)进程和kadmind(default port:749)进程是否使用默认端口。

  • 确认需要多少replica KDCs以及如何部署。

  • 确认主KDC和副本KDC的主机名。

  • 将数据库从主KDC传播到副本KDC的频率。

https://web.mit.edu/kerberos/krb5-latest/doc/admin/realm_config.html#realm-configuration-decisions

 

源码编译

当前最新版本为1.19.2。

[root@felixzh1 home]# yum install byaccflex bison
[root@felixzh1 home]# wget http://web.mit.edu/kerberos/dist/krb5/1.19/krb5-1.19.2.tar.gz


[root@felixzh1 home]# cd krb5-1.19.2/src/
[root@felixzh1 src]# ./configure
[root@felixzh1 src]# make -j 8
[root@felixzh1 src]# make install


文章转载自大数据从业者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论