共计 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 行业资讯频道!