Kerberos配置_第1页
Kerberos配置_第2页
Kerberos配置_第3页
Kerberos配置_第4页
Kerberos配置_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1?前言假设你的Openldap已经配置好并成功运行,本文只是介绍如何使Openldap使用Kerberos来验证用户身份。本配置在FC5上通过,在使用rhe时,很可能会有不同的情况。2?名词解释2.1 ?Kerberos基于共享密钥的安全机制,由MIT发明,现在已经被标准化,最新是版本5,简称krb5。Kerberos特别适合局域网络,Windows2k及以上系统的安全机制即基于kerberos。Kerberos有多个实现版本,本文使用的一个它的实现叫做mit?-kerberos。2.2 ?SASL简单认证和安全层(SimpleAuthenticationandSecurityLayer)。

2、也是一套RFC定义的标准。它的核心思想是把用户认证和安全传输从应用程序中隔离出来。像SMTP协议在定义之初都没有考虑到用户认证等问题,现在SMTP可以配置使用SASL来完成这方面的工作。Openldap同样如此。SASL支持多种认证方法,比如?ANONYMOUS:需认证。?PLAIN:明文密码方式(cleartextpassword)?DIGEST-MD5:HTTPDigest兼容的安全机制,基于MD5可以提供数据的安全传输层。这个是方便性和安全性结合得最好的一种方式。也是默认的方式。?GSSAP:IGenericSecurityServicesApplicationProgramInterf

3、aceGssapi本身是一套API,由IETF标准化。其最主要也是着名的实现是基于Kerberos的。所以一般说到gssapi都暗指kerberos实现。?EXTERNAL认证已经在环境中实现了,比如SSL/TLS,IPSec.2.3 ?CyrusSASLCyrus-SASL是SASL协议最常用的一个实现。其他实现还有GNUSAS等。3?环境准备3.1 ?环境3.2 ?安装软件包Kerberosserver:Krb5-serverSasl-gssapi:Cyrus-sasl-gssapiKerberosclient:Krb5-client如果依赖于别的包,也一并安装4?配置Kerberosse

4、rver配置文件包括下面3个文件1.?/etc/krb5.conf2.?/var/kerberos/krb5kdc/kdc.conf3.?/var/kerberos/krb5kdc/kadm5.acl4.1 ?配置/etc/krb5.conf这个配置文件设置整个kerberos环境的,所以不但server,而且client也会使用它。loggingdefault=FILE:/var/log/krb5libs.logkdc=FILE:/var/log/krb5kdc.logadmin_server=FILE:/var/log/kadmind.loglibdefaultsdefault_realm

5、=EXAMPLE.COMdefault_tgs_enctypes=des3-hmac-sha1des-cbc-crcdes-cbc-md5default_tkt_enctypes=des3-hmac-sha1des-cbc-crcdes-cbc-md5permitted_enctypes=des3-hmac-sha1des-cbc-crcdes-cbc-md5dns_lookup_realm=falsedns_lookup_kdc=falseticket_lifetime=24hforwardable=yesrealmsEXAMPLE.COM=?kdc=?admin_server=?defau

6、lt_domain=domain_realm=EXAMPLE.COM=EXAMPLE.COMkdcprofile=/var/kerberos/krb5kdc/kdc.confappdefaultspam=?debug=false?ticket_lifetime=36000?renew_lifetime=36000?forwardable=true?krb4_convert=false4.2 ?配置/var/kerberos/krb5kdc/kdc.conf这个配置文件是专门为kdc定义的参数kdcdefaultsv4_mode=nopreauthrealmsEXAMPLE.COM=?#mast

7、er_key_type=des3-hmac-sha1?acl_file=/var/kerberos/krb5kdc/kadm5.acl?dict_file=/usr/share/dict/words?admin_keytab=/var/kerberos/krb5kdc/kadm5.keytab?supported_enctypes=des3-hmac-sha1:normalarcfour-hmac:normaldes-hmac-sha1:normaldes-cbc-md5:normaldes-cbc-crc:normaldes-cbc-crc:v4des-cbc-crc:afs34.3 ?配置

8、/var/kerberos/krb5kdc/kadm5.acl此文件是Accesscontrol配置。下面是一个最简单但系统可以工作的配置。根据实际情况设置你自己的访问控制*/adminEXAMPLE.COM?*4.4 ?创建realm>kdb5_utilcreate-rEXAMPLE.COM-skerbers数据库文件都放在/var/kerberos/krb5kdc/下面。启动krb5kdc和kadmin两个service>servicekrb5kdcstart>servicekadminstart4.5 ?创建Principal在Kerberos安全机制里,一个princ

9、ipal就是realm里的一个对象,一个principal总是和一个密钥(secretkey)成对出现的。这个principal的对应物可以是service,可以是host,也可以是user,对于Kerberos来说,都没有区别。Kdc(Keydistributecenter)知道所有principal的secretkey,但每个principal对应的对象只知道自己的那个secretkey。这也是“共享密钥“的由来。作为例子,下面我们将会创建3个principal,类型分别是service,host,user。4.5.1 ?创建principalforuser>Kadmin.local

10、-q"addprincldapadminEXAMPLE.COM系统会提示输入密码(password)。请注意密码本身并不是key。这里只是为了人类使用的方便而使用密码。真正的key是算法作用在密码上产生的一串byte序列。4.5.2 ?创建principalforldapservice>kadmin.local-q"addprinc-randkey注意这次系统不会提示输入密码,因为我们使用了-randkey指定了一个随机密码。因为ldapserver是程序,它不会介意使用真正的key。4.5.3 ?创建principalforhost>kadmin.local-

11、q"addprinc-randkey同样,我们为一个主机生成了一个principal。基于同样的理由,我们使用了-randkey参数。4.6 ?获得key创建了principal之后,我们需要把key从kdc里取出来(kdc知道所有principal的key),交给对应的对象。在kerberos世界里,这个key一般存放在以keytab作为扩展名的文件里。4.6.1 ?取得ldapservice的key>kadmin.local-q"ktadd-k/tmp/ldapsrv.keytab-k指定把key存放在一个本地文件中4.6.2 ?取得host的key>kad

12、min.local-q"ktadd-k4.6.3 ?如果你高兴的话,你甚至也可以取得user的key>kadmin.local-q"ktadd-k/tmp/user_ldapadmin.keytabldapadmin但是我不建议你这样做,因为一旦这样做以后,你先前设置的密码就失效了。以后只能使用此过身份验证。keytab文件来通4.7 ?测试那么下面的步骤演示了kerberos验证用户身份。>kinitldapadmin系统会提示输入密码,如果一切正常,那么会安静的返回。实际上,你已经通过了kerberos的身份验证,且获得了一个ServiceTGT(Ticke

13、t-GrantingTicket).ServiceTGT的意义是,在一段时间内,你都可以用此TGT去请求某些service,比如ldapservice,而不需要再次通过kerberos的认证。>klist这条命令会查看系统当前的ticket>kdestory这条命令会destroy掉系统当前cache的所有ticket>kinitkldapadmint/tmp/user_ldapadmin.keytab这里演示了你确实可以直接使用user的key,而不是口令来通过kerberos的验证。如果你在前面导出了userldapadmin的key,可以验证一下。同时如果你运行kini

14、tldapadmin,那么即使输入了正确的password,系统仍然提示密码错误。5?配置Ldap使用kerberosLdap是如何使用kerberos的呢?这个过程是这样的。Ldap使用SASL的GSSAPI做身份验证。而SASL-GSSAPI的实现正好是Kerberos。首先要配置ldapserver,然后配置Kerberos5.1 ?配置ldapserver>vi/etc/openldap/slapd.conf添加一行rootdn?"uid=ldapadmin,cn=gssapi,cn=auth"注释掉下面两行,如果有的话#rootdn?"cn=Man

15、ager,dc=example,dc=com"#rootpw?SSHA7XF8TnEH8Hlv+0XU2Tiqk9bTR32Ixtbx5.2 ?配置kerberos环境>scp/etc#这里使用scp,你也可以通过其他方便的方式。>scp/tmp>ktutil>rkt/tmp/ldapsrv.keytab#读取key到内存中>wkt/etc/krb5.keytab#写key到系统的默认keytab文件,一般是?/etc/krb5.keytab然后重启ldapserver>serviceldaprestart5.3 ?测试>klistklist

16、:Nocredentialscachefound(ticketcacheFILE:/tmp/krb5cc_0)Kerberos4ticketcache:/tmp/tkt0klist:Youhavenoticketscached>ldapsearch?-h#注意不要用-x参数SASL/GSSAPIauthenticationstartedldap_sasl_interactive_bind_s:Localerror(-2)?additionalinfo:SASL(-1):genericfailure:GSSAPIError:UnspecifiedGSSfailure.?Minorcodem

17、ayprovidemoreinformation(Nocredentialscachefound)>kinitldapadmin#用户ldapadmin通过kerberos的验证>klist查看ticket,注意下面两行?Defaultprincipal:ldapadminEXAMPLE.COM?Validstarting?Expires?Serviceprincipal?01/03/0813:59:39?01/04/0813:59:39?krbtgt/EXAMPLE.COMEXAMPLE.COM>ldapsearch-hSomethingprintedout.Yougoti

18、t!>klist注意,现在多了一条访问ldapservice的ticket。?validstarting?Expires?Serviceprincipal?01/03/0813:59:39?01/04/0813:59:39?krbtgt/EXAMPLE.COMEXAMPLE.COM?01/03/0814:02:12?01/04/085.4 ?配置ldapclientserver的能力。一般这种配置是为了使用ldap作为系统的身份认证机制,和PAM吉合起来使用。这方面的配置我也不太了解,也没法深入介绍。我这里只是演示如何使用hostprincipal。和上面一样,首先把krb5.conf和keytab文件拷贝到本地。>scp/etc>scp/tmp初始化hostprincipal,取得tgt>kinit-k-t/tmp/host_client.keytab>klist测试>ldapsearch-h6?调试Kerbers和LDAP都是比较复杂的系统。一般出现问题后都要现把问题定位到ldap或kerberos。下面是一些查看log信息的机制。查看kdc的log>tail-100f/var/log/krb5kdc.log查看某个prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论