OpenLDAP 服务端配置(一): 基本配置


基本服务安装


  1. 安装相关软件及依赖
yum install -y  ntpdate openldap-servers openldap-devel \
      openldap openldap-servers-sql openldap-clients 
  1. 同步系统时间, 并加入定时任务
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
  1. 配置 slapd 服务开机自启动
chkconfig slapd on
  1. 配置防火墙及 Selinux
    需要将iptables关闭或者开放对应的 389及636端口。
service iptables stop
chkconfig iptables off
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  1. 配置 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中。具体方式如下:

  1. 安装 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";
  1. 创建 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 密码即可将根域条目导入。

  1. 使用该工具将已有的用户,密码及用户组添加到 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密码

阅读原文