Tiwb

我的业余生活博客.

搭建LDAP验证服务器

完成了基础的虚拟机环境后,就可以开始用虚拟机安装各种服务了,几乎所有的服务都依赖登录,要是每个服务都自己配置用户那维护就太不方便了。

LDAP可以提供统一的验证方案,目前很多软件都有对LDAP支持。以前我都是直接使用windows server的LDAP服务的,这次准备用linux搭个LDAP服务。

我们以后用ldap来表示运行验证服务的服务器,它可以被安装在任何一台虚拟机上,然后给一个ldap的cname。

安装OpenLDAP

首先先要安装ldap的服务:

$ yum install openldap-servers openldap-clients
$ systemctl enable slapd
$ systemctl start slapd

配置OpenLDAP

LDAP不建议我们直接修改配置文件,所以还要掌握下最基本的LDAP的命令行操作。首先先查询下所有的配置:

$ ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn

查看下hdb数据库配置:

$ ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=hdb

下面修改hdb数据库的配置,首先新建一个文件hdb_config.ldif

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com
-
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com
-
add: olcRootPW
olcRootPW: secret
-
add: olcAccess
olcAccess: to attrs=userPassword
  by self write
  by anonymous auth
  by dn.base="cn=Manager,dc=ly,dc=com" write
  by * none
-
add: olcAccess
olcAccess: to *
  by self write
  by dn.base="cn=Manager,dc=ly,dc=com" write
  by * read

然后更新配置:

$ ldapmodify -Q -H ldapi:/// -f hdb_config.ldif

添加数据

新建文件data.ldif

# Organization for Example Corporation
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: Example Corporation
description: The Example Corporation

# Organizational Role for Directory Manager
dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

导入数据:

$ ldapadd -f data.ldif -x -D "cn=Manager,dc=example,dc=com" -w secret

导入schema

$ ldapadd -H ldapi:// -f /etc/openldap/schema/cosine.ldif
$ ldapadd -H ldapi:// -f /etc/openldap/schema/inetorgperson.ldif
$ ldapadd -H ldapi:// -f /etc/openldap/schema/nis.ldif

安装LDAP图形化管理工具

用命令行管理ldap实在有点痛苦,尤其是现在OpenLDAP自己的配置都是用LDAP来配置的,所以下面先安装LDAP Account Manager。 这是一个基于web的管理工具。

先安装apache,如果之前没有装过:

$ yum install httpd php php-ldap
$ systemctl enable httpd

安装lam:

$ wget http://prdownloads.sourceforge.net/lam/ldap-account-manager-5.2.tar.bz2
$ tar -xvf ldap-account-manager-5.2.tar.bz2
$ cd ldap-account-manager-4.2.1
$ ./configure --with-httpd-user=apache \
              --with-httpd-group=apache
$ make install
$ cd /usr/local/lam/config
$ cp config.cfg.sample config.cfg
$ cp windows_samba4.conf.sample lam.conf
$ chown apache:apache config.cfg lam.conf

创建一个httpd的配置:/etc/httpd/conf.d/lam.conf

Alias /lam /usr/local/lam
<Directory /usr/local/lam>
  AllowOverride none
  Require all granted
</Directory>

然后启动服务:

$ systemctl restart httpd

打开浏览器,访问http://ldap.tiwb.net/lam就可以看到LAM的登录界面了,登录前要先在右上角的LAM configuration里配置ldap服务器。

配置TLS

首先先生成证书,注意common name必须和ldap服务器的名字一样。

$ cd /etc/pki/CA
$ . /etc/pki/tls/misc/CA -newca
$ openssl req -new -nodes -keyout newreq.pem -out newreq.pem
$ . /etc/pki/tls/misc/CA -sign
$ mv newcert.pem /etc/pki/tls/certs/ldap.tiwb.net.pem
$ mv newreq.pem /etc/pki/tls/private/ldap.tiwb.net.key

然后ldap设置cn=config

olcTLSCACertificateFile: /etc/pki/CA/cacert.pem
olcTLSCertificateFile: /etc/pki/tls/certs/ldap.tiwb.net.pem
olcTLSCertificateKeyFile: /etc/pki/tls/private/ldap.tiwb.net.key

修改配置文件:/etc/openldap/ldap.conf,增加:

LS_CACERT /etc/pki/CA/cacert.pem

修改apache配置文件:/etc/httpd/conf.d/authz_ldap.conf, 增加:

LDAPTrustedGlobalCert CA_BASE64 /etc/pki/CA/cacert.pem

参考:Directory Servers