搭建ldap分别通过web和lam管理,ldap+apache
LDAP安装:
# yum install -y openldap openldap-clientsopenldap-servers
# ls /etc/openldap/
slapd.conf 主配置文件
lapd.conf Client配置文件
看是否已经有定义好的架构,关于描述linux系统用户和系统的组的对象类和属性类
# cat /etc/openldap/schema/nis.schema
MUST( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) #字段值不能为空
MAY( userPassword $ loginShell $ gecos $ description ) ) #字段值可以为空
加密rootdn密码
# slappasswd -h {MD5}
New password:
Re-enter new password:
{MD5}ICy5YqxZB1uWSwcVLSNLcA==
# vim /etc/openldap/slapd.conf
include /etc/openldap/schema/nis.schema #包含定义好的架构
allow bind_v2 #定义版本,向下兼容
pidfile /var/run/openldap/slapd.pid #服务启动后的pid文件
... ...
database bdb #b伯克利 db数据库
suffix "dc=hn,dc=ny,dc=com"
rootdn "cn=admin,dc=hn,dc=ny,dc=com" #管理dn (ldap管理员账号 cn(common name),不要写OU,管理所有的OU)
# Cleartext passwords, especially for therootdn, should
# be avoided. See slappasswd(8) andslapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
rootpw {MD5}ICy5YqxZB1uWSwcVLSNLcA== #管理dn密码
# The database directory MUST exist priorto running slapd AND
# should only be accessible by the slapdand slap tools.
# Mode 700 recommended.
directory /var/lib/ldap #真正数据库的位置,700权限,所有者及组为ldap
# Indices to maintain for this database #优化ldap的索引
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
**************************************************
access toattrs=shadowLastChange,userPassword by self write by * auth
access to * by * read
**************************************************
#access 行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的shadow 信息来反映密码的变化。希望身份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow 属性的惟一用处就是管理密码的过期问题。
启动LDAP服务
# ls /etc/openldap/
cacerts DB_CONFIG.example ldap.conf schemaslapd.conf
# cp /etc/openldap/DB_CONFIG.example/var/lib/ldap/DB_CONFIG
# chown ldap /var/lib/ldap/DB_CONFIG
# service ldap start
Checking configuration files for slapd:config file testing succeeded [ OK ]
Starting slapd: [ OK ]
ldap库模板定义生成ldap目录结构的变量/usr/share/openldap/migration/ 中执行迁移。这些Perl 脚本的配置信息包含在migrate_common.ph文件的开头。对于我们的目的来说,只需要修改命名前缀的变量来使用条目的识别名就足够了
[root@localhost migration]# vimmigrate_common.ph
$DEFAULT_MAIL_DOMAIN = "hn.ny.com";
$DEFAULT_BASE = "dc=hn,dc=ny,dc=com";
[root@localhost migration]#./migrate_base.pl > /tmp/uplooking.ldif #perl脚本调用migrate_common.ph生成可以导入ldap的ldif文件
[root@localhost migration]# vim /tmp/ny.ldif
dn: dc=hn,dc=ny,dc=com
dc: hn
objectClass: top
objectClass: domain
dn: ou=People,dc=hn,dc=ny,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=hn,dc=ny,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
建立测试用户
[root@localhost ~]# for i in {1..5} ; douseradd ldap$i ; echo "123456" | passwd --stdin ldap$i ; done
[root@localhost ~]# grep -E ^ldap[1-5]+/etc/passwd > /tmp/users.txt
[root@localhost ~]# grep -E ^ldap[1-5]+/etc/group > /tmp/groups.txt 生成用户和组ldif文件
[root@localhost ~]# cd/usr/share/openldap/migration/
[root@localhost migration]#./migrate_passwd.pl /tmp/users.txt > /tmp/users.ldif
[root@localhost migration]#./migrate_group.pl /tmp/groups.txt > /tmp/groups.ldif
[root@localhost migration]# ldapadd -x -D"cn=admin,dc=hn,dc=ny,dc=com" -w 123456 -f ny.ldif
[root@localhost migration]# ldapadd -x -D"cn=admin,dc=hn,dc=ny,dc=com" -w 123456 -f groups.ldif
[root@localhost migration]# ldapadd -x -D"cn=admin,dc=hn,dc=ny,dc=com" -w 123456 -f users.ldif
注:ny.ldif必须最先导入。
-x 简单验证
-D 指定身份
-W 提示输入口令
[root@localhost migration]# netstat -tunpl| grep slapd
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 17873/slapd
tcp 0 0 :::389 :::* LISTEN 17873/slapd
在服务器上使用ldapsearch命令查询ldap数据库中的信息,检查ldif文件是否已经导入成功:
[root@localhost ~]# ldapsearch -x -w 123456-h 127.0.0.1 -D "cn=admin,dc=hn,dc=ny,dc=com" -b "dc=hn,dc=ny,dc=com"
#system-config-authentication
更改密码
如何改变自己的密码 ldappasswd 使用你自己的DN
# ldappasswd -xD "uid=ldap1,ou=People,dc=hn,dc=ny,dc=com"-WS #如果没有指定-S,会创建一个新的密码
ldapwhoami测试登录
# ldapwhoami -xD "uid=ldap1,ou=People,dc=hn,dc=ny,dc=com"–W
WEB管理LDAP
# yum install httpd phpphp-ldap
# vim /etc/httpd/conf.d/php.conf
# tar zxvfphpldapadmin-1.2.0.4.tgz
# mv phpldapadmin-1.2.0.4/var/www/html/ldap
# service httpd start
# firefox http://localhost/ldap
LAM
# yum install httpd phpphp-ldap
# rpm -ivh ldap-account-manager-2.6.0-0.fedora.1.noarch.rpm
全局配置文件:(语言)
# cd/var/www/html/lam/config
[root@localhostconfig]# cp config.cfg_sample config.cfg
对应服务器配置文件:
[root@localhostconfig]# cp lam.conf_sample ldapserver1.conf
[root@localhostconfig]# vim ldapserver.conf
admins: cn=admin,dc=hn,dc=ny,dc=com
passwd:{MD5}4QrcOUm6Wau+VuBX8g+IPg==
treesuffix: dc=hn,dc=ny,dc=com
注意:
vim ldapuser1.conf 将全部my-domain替换ny.
[root@localhostconfig]# chown -R apache.apache *
# firefox http://localhost/lam
Apache+ldap
1.配置apache验证功能。验证页面如何连接ldap来验证
2.让ldap存apache相关帐号,apache通过一个自有模块来支持连接ldap(mod_authz_ldap)
[root@localhost ~]# yuminstall mod_authz_ldap
# vim/etc/httpd/conf.d/authz_ldap.conf
LoadModuleauthz_ldap_module modules/mod_authz_ldap.so
<IfModule mod_authz_ldap.c>
<Directory "/var/www/html/"> #设置在IfModule里面,如果模块生效,执行下面
AuthzLDAPMethod ldap
AuthzLDAPServer 192.168.0.116
AuthzLDAPUserBase ou=People,dc=hn,dc=ny,dc=com
AuthzLDAPUserKey uid
AuthzLDAPUserScope base
AuthType basic
AuthName "ldap test"
require valid-user
</Directory>
</IfModule>
# service httpd restart
测试:
客户端访问web server,提示需要身份验证,输入ldap服务器的帐号密码,验证通过后可以看到web内容
例如账号:ldap1 密码:上面自己设置的
可以到 百度云盘下载 账号 pankuo1@sina.cn密码pk492940446