IT技术互动交流平台

windows AD环境配置apache的kerberos单点登录

来源:路,一直都在博客  发布日期:2012-09-14 09:04:56

i. 环境

          |KDC|-------webserver       
            |             /              
            |           /      
             Workstation 
Hostname:

KDC (windows 2003): sz-tc211.newexample.int

Workstation (windows xp): sz-tc-backup14.newexample.int

Webserver (CentOS 5.5, apache2.2): webserver.newexample.int

 
注:须安装apache的kerberos module: mod_auth_kerb

 

ii. 配置

如何在windows server上安装及配置AD/domain controller和dns server,在这里不做描述,有很多现成的教程。注意要将workstation的dns指向配置好的AD。

这里主要描述如何配置Centos,其他linux发行版类似。

1. 安装包(均可使用yum/rpm安装),这里的kerberos用的是MIT Kerberos。Heimdal配置略有区别,这里没有涉及。

 必选安装包:


     krb5-libs

     krb5-workstation


 可选: 

 

     krb5-devel

     krb5-auth-dialog

 

2. 基本配置

a) 确保kdc,webserver,workstation的时间是一致的,kerberos要求时差不能超过5分钟。

b) 配置webserver的/etc/krb5.conf来使用realm: newexample.int.例如一个最简单的krb5.conf:

 


[logging]

 default = FILE:/var/log/krb5libs.log

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

 admin_server = FILE:/var/log/kadmind.log

 

[libdefaults]

 default_realm = NEWEXAMPLE.INT

 

[realms]

 EXAMPLE.INT = {

  kdc = sz-tc211.newexample.int

  admin_server = sz-tc211.newexample.int

}

 

[domain_realm]

 webserver.newexample.int = NEWEXAMPLE.INT

注意其中的大小写,realm字段用大写,且与AD的dns域名一致。kdc和admin_server字段均指向AD。

3. 验证centos配置是否成功(注意domain要大写):


[root@webserver conf.d]# kinit client2@NEWEXAMPLE.INT
Password for client2@NEWEXAMPLE.INT:


[root@webserver conf.d]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: client2@NEWEXAMPLE.INT
Valid starting Expires Service principal
09/13/12 14:59:34 09/14/12 00:57:10 krbtgt/NEWEXAMPLE.INT@NEWEXAMPLE.INT
renew until 09/14/12 14:59:34
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

 

4. 在AD上为webserver(准确地说是为http service)创建principal

a) 创建一个user,本例中使用dummy这个用户。

b) 将dummy用户映射到http service的principal。


C:\> ktpass -princ HTTP/webserver.newexample.int@newexample.int -mapuser dummy@NEWEXAMPLE.INT -pass Password1 -out c:\temp\mykeytab

 

c) 将mykeytab文件拷贝到webserver下,本例放在了/etc/krb5.keytab,这是kerberos的默认keytab文件,放到任意目录即可,要保证有可读权限,在后面提到的apache配置文件中要指定改keytab的路径。

d) 验证AD发送的tickets是否正确


[root@webserver ~]# kvno HTTP/webserver.newexample.int@NEWEXAMPLE.INT
HTTP/webserver.newexample.int@NEWEXAMPLE.INT: kvno = 4

 


[root@webserver ~]# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: client2@NEWEXAMPLE.INT


Valid starting Expires Service principal
09/13/12 14:59:34 09/14/12 00:57:10 krbtgt/NEWEXAMPLE.INT@NEWEXAMPLE.INT
renew until 09/14/12 14:59:34, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5
09/13/12 15:31:48 09/14/12 00:57:10 HTTP/webserver.newexample.int@NEWEXAMPLE.INT
renew until 09/14/12 14:59:34, Etype (skey, tkt): DES cbc mode with CRC-32, DES cbc mode with RSA-MD5

 


Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached 


将以上两个信息再与keytab中的ticket比较,保证必须完全一样


[root@webserver ~]# klist -e -k -t /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Timestamp Principal
---- ----------------- --------------------------------------------------------
4 01/01/70 08:00:00 HTTP/webserver.newexample.int@NEWEXAMPLE.INT (DES cbc mode with RSA-MD5)

5. 确认mod_auth_kerb安装后,配置apache的配置文件。如果是用rpm安装的,会在/etc/httpd/conf.d/下生成一个auth_kerb.conf文件。


LoadModule auth_kerb_module modules/mod_auth_kerb.so

 

<Directory />

 AuthType Kerberos

 AuthName "Kerberos Login"

 KrbMethodNegotiate On

 KrbMethodK5Passwd Off

 KrbAuthRealms NEWEXAMPLE.INT

 Krb5KeyTab /etc/krb5.keytab

 require valid-user

</Directory>

这里可以不用Directory,也可以用Location。


6. 配置workstation中的IE (其他浏览器一般也支持,需要另作配置)


a) 先用newexmaple.int中的一个用户登录workstation

b) 在Internet选项中启用集成windows验证(默认是开启的)

c) 通过IE访问http://webserver.newexample.int/test.html 注意这里要用dns名称,不能用ip,因为这里要跟kpass中使用的一致。


 

Tag标签: windows ADm环境配置   apache   kerberos  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规