OpenLDAP 服务端配置(一): 基本配置
基本服务安装
- 安装相关软件及依赖
yum install -y ntpdate openldap-servers openldap-devel \
openldap openldap-servers-sql openldap-clients
- 同步系统时间, 并加入定时任务
ntpdate 0.cn.pool.ntp.org echo '0 2 * * * /usr/sbin/ntpdate 0.cn.pool.ntp.org && /sbin/hwclock -w > /dev/null 2>&1' >> /var/spool/cron/root
- 配置 slapd 服务开机自启动
chkconfig slapd on
- 配置防火墙及 Selinux
需要将iptables关闭或者开放对应的 389及636端口。
service iptables stop chkconfig iptables off setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- 配置 slapd.conf 文件
- 拷贝默认配置文件并修改权限
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf chown -R ldap: /etc/openldap/* chown -R ldap: /var/lib/ldap/*
- 生成配置文件中 rootpw 项的密码(注意:密码改为自己想设的密码)
[root@localhost openldap]# slappasswd -s 123456qwerty
{SSHA}AKJA2xxw9SIs126ks2Eb7Gb/dQxAwV14
- 修改配置文件 /etc/openldap/slapd.conf 并按如下说明修改相应的配置项
# 指定OpenLDAP默认数据库引擎为 BerkeleyDB database bdb # 指定OpenLDAP的服务域名(DN) suffix "dc=domain,dc=com" # 指定OpenLDAP的服务管理员信息 rootdn "cn=admin,dc=domain,dc=com" # 指定OpenLDAP的服务管理员密码, 前面用命令生成 rootpw {SSHA}AKJA2xxw9SIs126ks2Eb7Gb/dQxAwV14
- 配置完成后生成数据库
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/ chown -R ldap: /etc/openldap/* chown -R ldap: /var/lib/ldap/* service slapd restart
需要注意的是, 在 slaptest 命令生成的文件为 root用户所有 , 需要用 chown 命令修改其属主(正常是ldap), 然后再重启 slapd 服务
用户添加及整合
可以借助开源工具 migrationtools 将已有的 用户、密码以及用户组添加到openldap中。具体方式如下:
- 安装 migrationtools 工具
先安装工具
yum install -y migrationtools
根据实际域名,修改 /usr/share/migrationtools/migrate_common.ph 配置文件中的如下字段
# Default DNS domain $DEFAULT_MAIL_DOMAIN = "domain.com"; # Default base $DEFAULT_BASE = "dc=domain,dc=com";
- 创建 OpenLDAP 的根域条目
使用工具 migrate_base.pl 生成根域条目并导入到OpenLDAP中:
/usr/share/migrationtools/migrate_base.pl > base.ldif ldapadd -x -W -D 'cn=admin, dc=domain, dc=com' -f base.ldif
输入前面设置的 admin 密码即可将根域条目导入。
- 使用该工具将已有的用户,密码及用户组添加到 ldap 中, 假定我们添加pass文件中的后5行记录
tail -n 5 /etc/group > group.list tail -n 5 /etc/passwd > user.list /usr/share/migrationtools/migrate_passwd.pl user.list > user.ldif /usr/share/migrationtools/migrate_group.pl group.list > group.ldif ldapadd -x -W -D 'cn=admin, dc=domain, dc=com' -f group.ldif ldapadd -x -W -D 'cn=admin, dc=domain, dc=com' -f user.ldif
加密传输设置
默认情况下, OpenLDAP 服务端与客户端之间使用明文进行验证、查询等操作。 由于互联网上数据传输存在不安全的因素, 所以需要配置OpenLDAP来支持加密传输数据。
1. 自建 CA证书
自己创建 CA 证书的基本步骤如下:
- 安装 openssl 软件
yum install -y openssl openssl-devel
- CA中心生成自身的密钥
cd /etc/pki/CA/ (umask 077 ; openssl genrsa -out private/cakey.pem 2048 )
为了保证密钥安全, 需要将其权限设置为 700, 所以用 umask 077 修改mask值
- CA 签发自身公钥
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 36500
-days 36500 设置证书的有效期时长, 这里设置100年, 证书到期会导致服务不可用,所以时间尽量的长一些。
其中以下字段需要根据实际情况填写:
Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:Shanghai Locality Name (eg, city) [Default City]:Shanghai Organization Name (eg, company) [Default Company Ltd]:domain.com Organizational Unit Name (eg, section) []:Tech Common Name (eg, your name or your server's hostname) []:ldap.domain.com Email Address []:ldap@domain.com
- 创建数据库文件及证书序列文件
touch serial index.txt echo '01' > serial
以上操作都是在路径 /etc/pki/CA 下进行
2. 生成 OpenLDAP 证书
- 创建 OpenLDAP key 存放路径
mkdir -p /etc/openldap/cacerts
cd /etc/openldap/cacerts
并在该路径下生成以下密钥
- OpenLDAP 服务端密钥生成
umask 077; openssl genrsa -out ldapkey.pem 1024
- OpenLDAP 服务端向CA申请签署请求
openssl req -new -key ldapkey.pem -out ldap.csr -days 36500
根据前面 CA 签发自身密钥的输入信息,填入下面的字段
Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:Shanghai Locality Name (eg, city) [Default City]:Shanghai Organization Name (eg, company) [Default Company Ltd]:domain.com Organizational Unit Name (eg, section) []:Tech Common Name (eg, your name or your server's hostname) []:ldap.domain.com Email Address []:ldap@domain.com
除 Common Name 、 Email Address 外,其他值必须和CA前面的信息保持一致, 否则无法得到验证。
- CA核实并签发证书
openssl ca -in ldap.csr -out ldapcert.pem -days 36500
- 复制 cacert.pem 到该目录
cp /etc/pki/CA/cacert.pem /etc/openldap/cacerts/
3. OpenLDAP TLS/SASL 部署
- 修改证书及目录权限
chown -R ldap: /etc/openldap/cacerts/ chmod -R 400 /etc/openldap/cacerts/*
- 修改 OpenLDAP 配置文件, 添加证书配置
修改配置文件 /etc/openldap/slapd.conf 中的下列配置项
TLSCACertificateFile /etc/openldap/cacerts/cacert.pem TLSCertificateFile /etc/openldap/cacerts/ldapcert.pem TLSCertificateKeyFile /etc/openldap/cacerts/ldapkey.pem TLSVerifyClient never
- 开启 OpenLDAP SSL功能
修改配置文件 /etc/sysconfig/ldap 中的下列配置项
SLAPD_LDAPS=yes
- 加载slapd数据库文件
rm -rf /etc/openldap/slapd.d/* slaptest -u slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/ # 生成配置文件 chown -R ldap:ldap /etc/openldap/slapd.d/ service slapd restart
4. 验证配置
- 确认当前套接字是否通过CA 验证
openssl s_client -connect localhost:636 -showcerts -state \ -CAfile /etc/openldap/ssl/cacert.pem ldapsearch -x -H ldaps://192.192.152.2: -b dc=domain,dc=com \ -D "cn=admin,dc=domain,dc=com" -W # 根据提示输入admin密码
阅读原文