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的管理员。

# 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
#######################################################################

database        bdb
suffix          "dc=test,dc=com"
checkpoint      1024 15
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";

# Default base
$DEFAULT_BASE = "dc=test,dc=com";
.......
保存退出。:-)

3、生成 ldif 文件

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

# ./migrate_base.pl > /tmp/base.ldif

导入数据:
##﹚ 指定你在slapd.conf中设置的管理员密码,也可以使用¦,交互式输入密码
##ゝ 指定数据文件的路径

# 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

六、安装 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 账号以及密码就可以登录成功了。

至此, 可能我们基本可以把 slapd 跑起来了, 但是OpenLDAP做起来感觉还是比较麻烦,也是自己结合网上的资料、教程,实际测试成功后,整理了这篇文章,希望能够帮助到有需要的朋友。

后续还有ldap的具体应用, 比如 wifi, jira,  VPN,  jenkins 等应用案例。

时间: 2024-11-08 01:26:46

OpenLDAP的安装与基本配置的相关文章

mysql的安装和基本配置

一.mysql的安装和基本配置 1 安装cmake #./configure#make &&make install 2 安装mysql# yum install ncurses* bison*   # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/database/mydata -DSYSCONFDIR=/etc -DTMPDIR=/tmp -DWITH_INNOBASE_STORAGE_ENGINE=1 -

DNS2之bind安装、主从配置同步、子域创建、view配置

主DNS配置从服务器: 我们知道,DNS服务器在网络服务中可能出现故障当机等状况,会导致DNS服务瘫痪,显然在实际的网络应用中我们不希望出现这种状况,所有我们就要配置从服务器来在主DNS服务器出现故障时代替他来工作,然而作为价格昂贵的服务器本身你又不希望出现这种极大的浪费,所有从服务器在实际工作中是和主服务器共同分担DNS解析任务的,这样既解决了服务器故障导致的问题,还可以缓解DNS服务器的压力. 那么要配置一个从服务器我们又该怎么做呢? 前提:我们要为本地配置一个从服务器aolens2.从服务

linux 下安装 mysql 并配置 python 开发环境

1.安装 mysql ,安装过程中将提示设置 root 用户的密码,默认可以设置为 rootadmin . $ sudo apt-get install mysql-server 2.安装 mysql 开发工具(不安装时,安装 MySQL-python 提示错误 "mysql_config not found"). $ sudo apt-get install libmysqld-dev 3.安装 python 的 mysql 库 MySQL-python (首先安装 python-d

证书解析(二):windows 2012 r2证书服务安装与高级配置

本着应用隔离的原则,建议把证书服务部署在一台独立的windows server 2012 r2虚拟机之中.证书服务器可以不用考虑高可用,因证书服务宕掉后,除了不能继续颁发证书和不能访问证书吊销信息,并不影响证书的其他验证. 证书服务的安装 证书服务的安装很简单,运行服务器管理器,添加角色与功能,选择"Active Directory证书服务", 在角色服务中选择"证书颁发机构"与"证书颁发机构WEB注册" (不是证书注册web服务)两项,证书颁发

Linux环境下安装JDK并配置环境变量

首先查看是否已经安装了JDK并配置环境变量. [[email protected]_plat opt]# java -version -bash: java: command not found [[email protected]_plat opt]# 说明没有安装JDK或者配置环境变量. 安装JDK: Linux环境JDK安装比较简单,直接解压到指定目录即可. 1.上传安装介质至服务器,我下载的是tar.gz版本的JDK: 2.在上传目录中执行tar命令安装: tar -zxvf jdk-7

mysql的介绍;安装及基本配置;mysql数据库运行必备技能

一.MySQL的介绍 1. 数据库:数据库集中存放位置 1) 常见的数据库类型:关系型(mysql.oracle.SQLserver2008,DB2),树型(windows注册表).非关系型(NoSQL). 2) 关系型数据库对象:数据记录-存->表à存à数据库:表分为数据库,关系表 2. MySQL是开源的关系型数据软件,目前由oracle公司维护,特点是:多线程.多用户.基于C/S架构(客户端/服务器),简单易用.查询速度快,安全可靠. 二.安装及基本配置: 1. 安装 1) 安装依赖ncu

ubuntu-12.04.5-desktop-amd64 安装和基本配置

ubuntu-12.04.5-desktop-amd64安装和基本配置 1.选择中文(简体),安装ubuntu: 2.下面两个勾打上,点击继续: 3.清除整个磁盘,点击继续: 4.点击现在安装: 5.系统自动复制文件: 6.选择时区,哈尔滨就行: 7.选择语言,汉语: 8.设置用户和密码: 9.复制文件: 10.联网边下载边安装: 11.重启: 重启界面: 12.重启之后的系统: 13.修改屏幕分辨率: 具体操作看这篇博文: http://blog.csdn.net/baolibin528/ar

Windows下安装Resin及配置详解与发布应用

关于Resin的好处,网上介绍了一大堆,小编经不住诱惑,决定试用一下.目前Resin的最新版本为:4.0.40,可以从官网直接下载. 1. 将下载下来的Resin包解压开,会看到一大堆的文件,有一些关键的文件,我们需要了解一下. resin-4.0.40 resin安装目录   --conf/resin.properties 配置属性   --conf/resin.xml 配置文件   --conf/licenses/ 许可信息文件   --conf/keys/ openSSL 秘钥   --w

ios下(个人公司非企业级)AdHoc在线安装全环境配置

1,环境 客户端开发:MacOs 10.8.5 服务器开发:Centos6.3 64位 2,软件准备 Apache httpd 2.2.27 OpenSSL 0.9.8za 3,客户端准备 Apple的开发者账号大致分如下三类:个人,公司,企业,这一篇我们主要说下个人.公司的ipa在线安装.个人公司级别的AdHoc有这样一个限制:就是在线发布的ipa包只能安装 在添加到Apple账号的Devices列表中(发布IPA之后再添加的设备需要重新打IPA包)的非越狱设备及越狱设备中,而企业级的开发者账