OpenLDAP--安装

说明

如果一件事情做的很牵强,要么就不应该做,要么就是做的方式有问题。之前的博文安装kerberos化的openldap显然属于后者,本次力争使用一种顺其自然的方式重新安装。由于上篇博文一些探索性的记录尚有价值,也就没有直接更换,另起本篇进行记录。
安装环境及规划:
tao0[1-4].opjasee.com,系统为Centos6.3。
tao01.opjasee.com: 本次安装Kerberos
tao02.opjasee.com: 本次安装OpenLDAP
tao0[34].opjasee.com: 本次只作为客户端


安装Kerberos

1. 下载Kerberos,解压并安装,安装时最新版本是krb5-1.11.1

$ wget http://web.mit.edu/kerberos/dist/krb5/1.11/krb5-1.11.1-signed.tar
$ tar -xf  krb5-1.11.1-signed.tar
$ tar -zxf krb5-1.11.1.tar.gz
$ cd krb5-1.11.1
$ mkdir centos6.3
$ cd centos6.3
$ ../src/configure --prefix=/usr/local/kerberos
$ make
$ make install

如果遇到verto.h: No such file or directory问题请参考这里

2. 配置Kerberos,三个配置文件如下

/etc/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 = OPJASEE.COM
    allow_weak_crypto=true
    default_tgs_enctypes = aes256-cts aes128-cts des-cbc-crc des-cbc-md5 des3-hmac-sha1
    default_tkt_enctypes = aes256-cts aes128-cts des-cbc-crc des-cbc-md5 des3-hmac-sha1
    permitted_enctypes = aes256-cts aes128-cts des-cbc-crc des-cbc-md5 des3-hmac-sha1
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true

[realms]
    OPJASEE.COM = {
        kdc = tao01.opjasee.com:88
        admin_server = tao01.opjasee.com:749
        default_domain = opjasee.com
    }
[domain_realm]
    .opjasee.com = OPJASEE.COM
    opjasee.com = OPJASEE.COM

[kdc]
    profile = /usr/local/kerberos/var/krb5kdc/kdc.conf 

[appdefaults]
    pam = {
        debug = false
        ticket_lifetime = 36000
        renew_lifetime = 36000
        forwardable = true
        krb4_convert = false
    }

/usr/local/kerberos/var/krb5kdc/kdc.conf

[kdcdefaults]
    v4_mode = nopreauth
[realms]
    OPJASEE.COM = {
        acl_file = /usr/local/kerberos/var/krb5kdc/kadm5.acl
        dict_file = /usr/share/dict/words
        admin_keytab = /usr/local/kerberos/var/krb5kdc/kadm5.keytab
    }

/usr/local/kerberos/var/krb5kdc/kadm5.acl

*/admin@OPJASEE.COM  *

3. 初始化KDC数据库

$ /usr/local/kerberos/sbin/kdb5_util create -r OPJASEE.COM -s

出现Loading random data的时候另开个终端执行点消耗CPU的命令如for x in $(seq 10000000);do s=$((s+x));done;echo $s可以加快随机数采集。
输入的密码一定不要忘记,这个步骤执行完/usr/local/kerberos/var/krb5kdc目录下会产生四个文件和一个点文件。

4. 添加KDC数据库管理员及生成admin keytab

$ /usr/local/kerberos/sbin/kadmin.local
kadmin.local:  addprinc admin/admin@OPJASEE.COM
kadmin.local:  listprincs
kadmin.local:  ktadd -k /usr/local/kerberos/var/krb5kdc/kadm5.keytab kadmin/admin@OPJASEE.COM kadmin/changepw@OPJASEE.COM

5. 启动服务查看日志

$ /usr/local/kerberos/sbin/krb5kdc
$ /usr/local/kerberos/sbin/kadmind

kadmind.log中出现Seeding random number generator时,这时候kadmin是无法连上的,会报GSS-API (or Kerberos) error while initializing kadmin interface,得等几分钟或执行一些耗CPU的命令加快随机数采集,日志刷新后方能正常连接。

6. Kerberos客户端配置

Centos6.3已经具有kerberos客户端,不需额外安装,只需要分发配置文件

$ for x in  tao0{2,3,4}; do scp /etc/krb5.conf $x:/etc/; done

安装OpenLDAP

1. 安装OpenLDAP

$ yum install db4 db4-utils db4-devel cyrus-sasl*
$ yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap

OpenLDAP默认使用Mozilla NSS,安装后已经生成了一份证书,可使用certutil -d /etc/openldap/certs/ -L -n 'OpenLDAP Server'命令查看。使用如下命令生成RFC格式CA证书并分发到客户机待用。

$ certutil -d /etc/openldap/certs/ -L -a -n 'OpenLDAP Server' -f /etc/openldap/certs/password > /etc/openldap/ldapCA.rfc
$ for x in tao0{1,3,4}.opjasee.com; do scp /etc/openldap/ldapCA.rfc $x:/tmp/; done

附生成自签名证书的命令供参考

$ certutil -d /etc/openldap/certs -S -n 'test cert' -x -t 'u,u,u' -s 'C=XX, ST=Default Province, L=Default City, O=Default Company Ltd, OU=Default Unit, CN=tao02.opjasee.com' -k rsa -v 120 -f /etc/openldap/certs/password

2. 周边配置

生成ldap运行所用principal,获取ldapadmin的TGT待用。

$ kinit admin/admin
$ kadmin
kadmin:  addprinc ldapadmin@OPJASEE.COM
kadmin:  addprinc -randkey ldap/tao02.opjasee.com@OPJASEE.COM
kadmin:  ktadd -k /etc/openldap/ldap.keytab ldap/tao02.opjasee.com@OPJASEE.COM
$ chown ldap:ldap /etc/openldap/ldap.keytab
$ kinit ldapadmin

设置库配置

$ cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

修改/etc/rsyslog.conf,将slapd运行日志单独指定

$ echo 'local4.* /var/log/slapd.log' >> /etc/rsyslog.conf
$ service rsyslog restart

3. 启动OpenLDAP

修改/etc/init.d/slapd在对应位置加入一行

# OPTIONS, SLAPD_OPTIONS and KTB5_KTNAME are not defined
KRB5_KTNAME=/etc/openldap/ldap.keytab

修改/etc/sysconfig/ldap,开启ldaps

SLAPD_LDAPS=yes

使用以下命令启动slapd服务并观察/var/log/slapd.log日志

$ service slapd start 

4. 配置OpenLDAP

OpenLDAP从2.3版本以后默认采用动态配置引擎slapd-config,其数据存储位置即目录/etc/openldap/slapd.d。尽管该系统的数据文件是透明格式的,还是建议使用ldapmodify等命令来修改而不是直接编辑。
建立setup.ldif文件,内容如下

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=opjasee,dc=com

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: uid=ldapadmin,ou=people,dc=opjasee,dc=com

dn: cn=config
changetype: modify
add: olcAuthzRegexp
olcAuthzRegexp: uid=([^,]*),cn=GSSAPI,cn=auth uid=$1,ou=people,dc=opjasee,dc=com

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to dn.base="" by * read
olcAccess: {1}to * by dn="uid=ldapadmin,ou=people,dc=opjasee,dc=com" write by * read

使用ldapmodify -Y EXTERNAL -H ldapi:/// -f setup.ldif命令导入更新配置。此后只有ldapadmin@OPJASEE.COM具有管理员权限。
此时在tao02.opjasee.com上执行ldapsearch -H ldaps://tao02.opjasee.com应该能正常返回结果。

5. 客户端安装及测试

可以使用yum install openldap-clients安装openldap客户端,修改/etc/openldap/lapd.conf

BASE    dc=opjasee,dc=com
URI     ldaps://tao02.opjasee.com

导入之前生成的CA证书

$ certutil -d /etc/openldap/certs/ -A -a -n 'OpenLDAP Server' -t 'CT' -f /etc/openldap/certs/password -i /tmp/ldapCA.rfc

此时执行ldapsearch应该能正常返回,说明LDAP及TLS正常。tao02本身也应该安装客户端,导入证书步骤就不必了。

tao01.opjasee.com上建立文件test.ldif并导入和查看。

$ cat test.ldif
dn: dc=opjasee,dc=com
objectclass: organization
objectclass: dcObject
objectclass: top
o: myCompany
dc: opjasee
description: root entry

dn: ou=people,dc=opjasee,dc=com
objectclass: organizationalUnit
ou: people
description: Users

dn: uid=test,ou=people,dc=opjasee,dc=com
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: shadowAccount
cn: test account
sn: test
uid: test
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/test
loginShell: /bin/bash
$ kinit ldapadmin
$ ldapadd -f test.ldif 
$ ldapsearch

参考文档

OpenLDAP Software 2.4 Administrator's Guide
使用网络安全服务 (NSS) 工具
How do I use TLS/SSL with Mozilla NSS
open ldap 的配置

Loading Disqus comments...
Table of Contents