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 server指向配置好的AD。
这里主要描述如何配置Centos,其他linux发行版类似。
1. 安装包(均可使用yum/rpm安装),这里的kerberos用的是。配置略有区别,这里没有涉及。
必选安装包:
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比较,保证kvno,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访问 注意这里要用dns名称,不能用ip,因为这里要跟kpass中使用的一致。
iii. 参考
阅读(5003) | 评论(0) | 转发(0) |