OpenLDAP如何安装配置

74次阅读
没有评论

共计 8081 个字符,预计需要花费 21 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 OpenLDAP 如何安装配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、OpenLDAP 简介

  OpenLDAP 是轻型目录访问协议(Lightweight Directory Access Protocol,  LDAP)的自由和开源实现,在其 OpenLDAP 许可证下发行,并已经被包含在众多流行的 Linux 发行版中。

  使用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。

  通常,在实际工作环境中,都会通过 LDAP 来构建一个统一的账号管理、身份验证平台,实现 SSO 单点登录机制。

二、写在前面

  LDAP 这个东西,是公司准备实现统一用户身份认证所了解到的,之前完全没有概念,网上搜索了一些基础,理论知识,简直蒙圈了,实在是太抽象了。后来一想,理论的知识先大概有个了解,先动手让 ldap 跑起来再说其他,在动手做的时候,如果遇到问题在回头过去查阅资料,说不定慢慢就会理解了。

  第一次搭建 OpenLDAP 的时候,查阅了很多论坛、博客的帖子,发现好多都是讲的不够完善,或者是点到即止,在安装和配置遇到问题的时候,总要浪费很大一部分时间来游走于各大搜索引擎去寻根问药,相当痛苦,下面就是结合网友以及自己尝试摸索的过程,总结成文,希望能够帮助到有需要的朋友。

配置环境:

服务器操作系统:CentOS 6.5 x86_64 ,  RHEL/Suse 应该都类似

OpenLDAP 版本:OpenLDAP 2.4

其实如果不是对 LDAP 各种参数要求都十分严格的情况下,比较建议采用 yum 的方式安装。因为相关依赖环境,功能都十分全面,对于初学者,强烈建议第一次使用 yum 来安装。

准备环境:

确保 SELinux 关闭:

# getenforce
1、临时关闭
# setenforce 0
2、永久关闭
# vi /etc/selinux/config
将 SELINUX=enforcing  改为  SELINUX=disabled
重启机器即可 

设定 iptables 防火墙规则:

# vim /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT -s 192.168.1.0/16
-A INPUT -m state --state NEW -m tcp -p tcp --dport 636 -j ACCEPT -s 192.168.1.0/16
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
重新加载后如下: 
# iptables -L
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- 192.168.1.0/16 anywhere state NEW tcp dpt:ldap
ACCEPT tcp -- 192.168.1.0/16 anywhere state NEW tcp dpt:ldaps

同步系统时间:

# ntpdate time.nist.gov

三、安装 OpenLDAP 服务

1、yum 安装所需软件

# yum install -y openldap-*
# yum install -y compat-openldap #  这个包和主从配置有很大关系 

2、安装完成后,准备配置文件

# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

OpenLDAP 相关配置文件:

/etc/openldap/slapd.conf  主配置文件,管理员 dn,密码,日志配置,权限等设置

3、创建 LDAP 管理员密码

LDAP 可以支持明文密码,但是我们强烈建议使用加密密码。通过 slappasswd 命令创建加密密码,返回一串密文,先复制保存一下,下一步需要在 LDAP 配置文件中使用。

ps. 这里我输入的密码是:ldap

# slappasswd 
New password: 
Re-enter new password: 
{SSHA}5EkFHScR0hN0r3oRhd0aP4tyJ0ByopCd

4、进入 /etc/openldap 目录下,编辑 slapd.conf 配置文件。

主要修改的地儿,suffix, rootdn, rootpw,rootdn 其实就是 openldap 的管理员。

优化:

checkpoint 2048  10  # 设置把内存中的数据写回数据文件的操作,此处的设置表示每达到 2048K 或者 10 分钟执行一次 checkpoint, 即写入数据文件的操作。

cachesize 1000 # 设置 LDAP 可以缓存的记录数  

# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.ori
# vi /etc/openldap/slapd.conf
# enable server status monitoring (cn=monitor)
database monitor
access to *
 by dn.exact= gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth  read
 by dn.exact= cn=Manager,dc=test,dc=com  read
 by * none

####################################################################### # database definitions #######################################################################
rootdn  cn=Manager,dc=test,dc=com # Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. # rootpw secret # rootpw {crypt}ijFYNcSNctBYg rootpw {SSHA}5EkFHScR0hN0r3oRhd0aP4tyJ0ByopCd ....... 保存退出。

当然,也可以如下设置明文密码:

5、BerkeleyDB 配置。拷贝 DB_CONFIG 文件到指定目录,否则后续会报错:warning – no DB_CONFIG file found in directory /var/lib/ldap

PS: OpenLDAP 默认使用的是伯克利数据库作为后台数据存储介质,在 OpenLDAP-Servers 包中已经包含了,直接把配置文件复制到相关目录即可。

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

6、删除 /etc/openldap/slapd.d 目录下所有的文件,否则后续在使用 ldapadd 命令的时候会报错

PS: 默认情况下,/etc/openldap/slapd.d 目录下有一些默认的配置文件,必须删除,然后重新建议,这一步很重要

这是因为 2.4 和 2.3 配置文件兼容性问题导致,参考:http://www.openldap.org/doc/admin24/appendix-common-errors.html

# rm -rf /etc/openldap/slapd.d/*

7、配置相应目录权限

# chown -R ldap:ldap /var/lib/ldap/
# chown -R ldap:ldap /etc/openldap/

8、启动 LDAP 的 slapd 服务,并设置开机启动

# chkconfig slapd on
# service slapd start

9、重新生成   slapd.d 下的配置文件

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
然后重新赋予配置文件的权限:# chown -R ldap:ldap /etc/openldap/slapd.d

10、重新启动 LDAP 的 slapd 服务

# service slapd restart

使用 netstat -tulpn 查看服务是否正常启动

11、开启 SSL

# vim /etc/sysconfig/ldap
SLAPD_LDAPS=yes

我们可以看到,OpenLDAP 监听端口:

默认监听端口:389(明文数据传输)

加密监听端口:636(加密数据传输)

四、给 OpenLDAP 添加日志功能,添加如下内容

1、编辑 /etc/openldap/slapd.conf

# vim /etc/openldap/slapd.conf
loglevel 296

2、编辑 /etc/rsyslog.conf

# vim /etc/rsyslog.conf
local4.* /var/log/ldap.log

3、重启服务

# service rsyslog restart
# service slapd restart

五、迁移用户数据到 OpenLDAP

系统用户通常保存在 /etc/passwd, /etc/shadow 文件内,所以我们需要迁移用户数据到 openldap 数据库。但是 LDAP 只能识别特定格式的文件,即后缀为 ldif 的文件(也是文本文件),所以不能直接使用 /etc/passwd, /etc/shadow 直接导入。最简单的方法是使用 padl 提供的迁移工具包,是一系列 perl 编写的脚本,migrationtools 工具,之前的 openldap 包中已经包含了这些脚本,但是在 redhat6.5 中已经没有了,要单独下载。

1、安装配置 migrationtools

# yum install -y migrationtools

2、切换到 migrationtool 目录下,进行基本配置

# cd /usr/share/migrationtools/
编辑 migrate_common.ph
# vi migrate_common.ph
# Default DNS domain
$DEFAULT_MAIL_DOMAIN =  test.com 

....... 保存退出。:-)

3、生成 ldif 文件

a、在目录 MigrationTools 里面使用 migrate_base.pl 脚本生成基本的数据结构

# ./migrate_base.pl   /tmp/base.ldif
导入数据:## -w  指定你在 slapd.conf 中设置的管理员密码,也可以使用  -W,交互式输入密码
## -f  指定数据文件的路径
##  我们之前设定的密码: ldap
# ldapadd -x -D  cn=Manager,dc=test,dc=com  -w ldap -f /tmp/base.ldif
查询已经导入数据库的数据:# ldapsearch -h -H ldap://192.168.1.35 -b  dc=test,dc=com

b、在目录 MigrationTools 里面使用 migrate_passwd.pl 和 migrate_group.pl 脚本将 /etc/passwd, /etc/group 文件中的用户转化为 ldap 可以识别的数据结构 ldif 格式的文件

# ./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif
# ./migrate_group.pl /etc/group /tmp/group.ldif
导入数据:# ldapadd -x -D  cn=Manager,dc=test,dc=com  -w ldap -f /tmp/passwd.ldif
# ldapadd -x -D  cn=Manager,dc=test,dc=com  -w ldap -f /tmp/group.ldif

c、在实际生产环境中,并不会把 /etc/passwd 和 /etc/group 中的用户全部用 ldap 管理起来,我们只需要让实际用户被 ldap 管理即可,所以生产中按照如下规则操作:

删除 ldap 数据库中的所有数据:

# ldapdelete -x -D  cn=Manager,dc=test,dc=com  -w ldap -r  dc=test,dc=com

建立测试用户 ldapuser01, ldapuser02,把这两个用户导入 ldap 数据库中

# useradd ldapuser01
# useradd ldapuser02
# passwd ldapuser01
# passwd ldapuser02
我们只把需要的用户导入  ldap  数据库中
# grep ldap* /etc/passwd   /tmp/passwd
# grep ldap* /etc/group   /tmp/group
# ./migrate_base.pl   /tmp/base.ldif 
# ./migrate_passwd.pl /tmp/passwd   /tmp/passwd.ldif
# ./migrate_group.pl /tmp/group   /tmp/group.ldif
# ldapadd -x -D  cn=Manager,dc=test,dc=com  -w ldap -f /tmp/base.ldif
# ldapadd -x -D  cn=Manager,dc=test,dc=com  -w ldap -f /tmp/passwd.ldif
# ldapadd -x -D  cn=Manager,dc=test,dc=com  -w ldap -f /tmp/group.ldif

至此,我们就把用户导入到 OpenLDAP 数据库中了。

六、安装 phpLDAPadmin

安装 EPEL 仓库

# rpm -ivh http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rp

安装 phpLDAPadmin

# yum install -y phpldapadmin

修改 phpldapadmin 配置文件(该文件会自动创建),添加访问权限

# vim /etc/httpd/conf.d/phpldapadmin.conf
在这行后面添加
Allow from ::1
Allow from 192.168.1 // 这里修改为你自己的 ip 段 

修改 php 配置文件,禁止自动登录和 php 登录配置

# vim /etc/phpldapadmin/config.php
#(line 398)
//$servers- setValue( login , attr , uid 
#(line 530)
$servers- newServer( ldap_pla 
$servers- setValue( server , name , LDAP Server 
$servers- setValue( server , host , 127.0.0.1 
$servers- setValue(server , port ,389);
$servers- setValue( server , base ,array( dc=test,dc=com 
$servers- setValue( login , auth_type , session 
$servers- setValue( login , bind_id , dc=test,dc=com 
$servers- setValue( login , bind_pass , ldap 
$servers- setValue(server , tls ,false);

配置完成后,启动 apache

# chkconfig httpd on
# service httpd start

然后通过浏览器进行访问:http://192.168.1.35/ldapadmin/ (这个 ip 换成你自己的实际 ip)

这里需要注意的是:Login DN:  一定要是完整的 DN,而不是 RDN。

密码就是我们前面 slappasswd 命令设置的密码,也就是 ldap 管理员 rootdn(Manager)的密码,然后就登录成功了。

七、安装 LAM(和 phpLDAPadmin 功能相似的 GUI 工具,可选)

下载 ldap-account-manager 包,我这里下载的是较老的版本 4.6,(最新版应该 6.0 了 )。

 如果没有 lamp 环境
# yum install -y httpd php php-ldap php-gd

# unzip ldap-account-manager-4.6.RC1.zip # mv ldap-account-manager-4.6.RC1 /var/www/html/lam # chown -R apache:apache /var/www/html/lam 顺便编辑之前的  /etc/phpldapadmin/conf.php  中增加一行 # vim /etc/httpd/conf.d/phpldapadmin.conf Alias /lam /var/www/html/lam

配置

# cd /var/www/html/lam/config
# cp config.cfg_sample config.cfg
# cp lam.conf_sample lam.conf
# vim lam.conf
serverURL: ldap://192.168.1.35:389
admins: cn=Manager,dc=test,dc=com
treesuffix: dc=test,dc=org
其他  dc=my-domain  全部更换为: dc=yourdomain

重启 httpd 服务

# service httpd restart

然后通过浏览器访问即可,http://192.168.1.35/lam,更改为你自己的 ip

然后通过 Manager 账号以及密码就可以登录成功了。

以上是“OpenLDAP 如何安装配置”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计8081字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)