zoukankan      html  css  js  c++  java
  • LDAP系列(一)完整的 LDAP + phpLDAPadmin安装部署流程

    LDAP 安装部署以及基础使用

    因工作需求需要使用ldap管理用户权限,在踩了一系列坑之后,总结了一些流畅的文档,希望可以帮到和曾经的我一样迷茫的人。


    基础环境:Ubuntu 18.04

    一、安装

    root@cky:~# apt install slapd ldap-utils -y
    
    Administrator password: 123456
    Confirm password: 123456
    

    安装包版本

    root@cky:~/ldap# dpkg -l slapd ldap-utils
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name                                            Version                      Architecture                 Description
    +++-===============================================-============================-============================-===================================================================================================
    ii  ldap-utils                                      2.4.45+dfsg-1ubuntu1.10      amd64                        OpenLDAP utilities
    ii  slapd                                           2.4.45+dfsg-1ubuntu1.10      amd64                        OpenLDAP server (slapd)
    

    二、配置

    配置组织名称,输入/验证在安装期间创建的管理员密码。完成后,选择MDB作为数据库后端,然后在清除slapd时选择No以删除数据库。最后,选择Yes以移动旧数据库,完成安装和配置。

    root@cky:~# dpkg-reconfigure slapd
    
    Omit OpenLDAP server configuration?  No
    DNS domain name: company.com
    Organization name: company
    Administrator password: 123456
    Confirm password: 123456
    Database backend to use: MDB
    Do you want the database to be removed when slapd is purged?  No
    Move old database?  Yes
    

    验证一下

    通过LDAP协议(仅列出dn),这是slapd-config DIT的样子:

    root@cky:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
    dn: cn=config
    
    dn: cn=module{0},cn=config
    
    dn: cn=schema,cn=config
    
    dn: cn={0}core,cn=schema,cn=config
    
    dn: cn={1}cosine,cn=schema,cn=config
    
    dn: cn={2}nis,cn=schema,cn=config
    
    dn: cn={3}inetorgperson,cn=schema,cn=config
    
    dn: olcBackend={0}mdb,cn=config
    
    dn: olcDatabase={-1}frontend,cn=config
    
    dn: olcDatabase={0}config,cn=config
    
    dn: olcDatabase={1}mdb,cn=config
    

    条目说明:

    • cn = config:全局设置
    • cn = module {0},cn = config:动态加载的模块
    • cn = schema,cn = config:包含硬编码的系统级架构
    • cn = {0} core,cn = schema,cn = config:硬编码核心架构
    • cn = {1} cosine,cn = schema,cn = config:余弦模式
    • cn = {2} nis,cn = schema,cn = config:nis模式
    • cn = {3} inetorgperson,cn = schema,cn = config:inetorgperson模式
    • olcDatabase = {-1} frontend,cn = config:前端数据库,其他数据库的默认设置
    • olcDatabase = {0} config,cn = config:slapd配置数据库(cn = config)
    • olcDatabase = {1} mdb,cn = config:您的数据库实例(dc = example,dc = com)

    这是dc = company,dc = com DIT的样子:

    root@cky:~# ldapsearch -x -LLL -H ldap:/// -b dc=company,dc=com dn
    dn: dc=company,dc=com
    
    dn: cn=admin,dc=company,dc=com
    
    

    查询当前用户

    root@cky:~# ldapwhoami -x
    anonymous
    root@cky:~# ldapwhoami -x -D cn=admin,dc=company,dc=com -W
    Enter LDAP Password: 123456
    dn:cn=admin,dc=company,dc=com
    

    填充一波数据库

    创建ldif文件

    root@cky:~/ldap# pwd
    /root/ldap
    root@cky:~/ldap# cat ldap_data.ldif 
    dn: ou=Dev,dc=company,dc=com
    objectClass: organizationalUnit
    ou: Dev
    
    dn: ou=Groups,dc=company,dc=com
    objectClass: organizationalUnit
    ou: Groups
    
    dn: cn=miners,ou=Groups,dc=company,dc=com
    objectClass: posixGroup
    cn: miners
    gidNumber: 5000
    
    dn: uid=zhangsan,ou=Dev,dc=company,dc=com
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    uid: zhangsan
    sn: Zhang
    givenName: San
    cn: zhangsan
    displayName: ZS
    uidNumber: 10001
    gidNumber: 10001
    userPassword: zspwd
    gecos: zhangsan
    loginShell: /bin/bash
    homeDirectory: /mnt/zs
    

    使用以下命令将文件内容添加到LDAP:

    root@cky:~/ldap# ldapadd -x -D cn=admin,dc=company,dc=com -W -f ldap_data.ldif
    Enter LDAP Password: 123456
    adding new entry "ou=Dev,dc=company,dc=com"
    
    adding new entry "ou=Groups,dc=company,dc=com"
    
    adding new entry "cn=miners,ou=Groups,dc=company,dc=com"
    
    adding new entry "uid=zhangsan,ou=Dev,dc=company,dc=com"
    

    咱们来查一下:

    # 查一个
    root@cky:~/ldap# ldapsearch -x -b "uid=zhangsan,ou=Dev,dc=company,dc=com"
    
    root@cky:~/ldap# ldapsearch -x -LLL -b dc=company,dc=com 'uid=zhangsan' ou Dev
    
    # 查多个
    root@cky:~/ldap# ldapsearch -x -LLL -b dc=company,dc=com ou DEV
    
    

    此时我们可以看到,用户已添加成功。

    此时,ldap已安装部署完成。

    三、基础使用方法

    添加用户:

    root@cky:~/ldap# cat add_lisi.ldif 
    dn: uid=lisi,ou=Dev,dc=company,dc=com
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    uid: lisi
    sn: Li
    givenName: Si
    cn: lisi
    displayName: LS
    uidNumber: 10002
    gidNumber: 10002
    userPassword: lspwd
    gecos: lisi
    loginShell: /bin/bash
    homeDirectory: /mnt/ls
    
    root@cky:~/ldap# ldapadd -x -D cn=admin,dc=company,dc=com -W -f add_lisi.ldif 
    Enter LDAP Password: 123456
    adding new entry "uid=lisi,ou=Dev,dc=company,dc=com"
    
    

    查询用户:

    root@cky:~/ldap# ldapsearch -x -LLL -b dc=company,dc=com 'uid=lisi' ou Dev
    dn: uid=lisi,ou=Dev,dc=company,dc=com
    

    修改用户信息:

    root@cky:~/ldap# cat modify_lisi.ldif 
    dn: uid=lisi,ou=Dev,dc=company,dc=com
    changetype: modify
    replace: displayName
    displayName: LiSi 
    
    root@cky:~/ldap# ldapmodify -x -D 'cn=admin,dc=company,dc=com' -W -f modify_lisi.ldif 
    Enter LDAP Password: 
    modifying entry "uid=lisi,ou=Dev,dc=company,dc=com"
    

    删除用户:

    root@cky:~/ldap# ldapdelete -x -D 'cn=admin,dc=company,dc=com' -w 123456 -r "uid=lisi,ou=Dev,dc=company,dc=com"
    root@cky:~/ldap# ldapsearch -x -LLL -b dc=company,dc=com 'uid=lisi' ou Dev
    root@cky:~/ldap# 
    

    更改rootDN密码:

    • 首先,运行 slappasswd 获取所需的新密码的哈希值:
    root@cky:~/ldap# slappasswd
    New password: 654321
    Re-enter new password: 654321
    {SSHA}PkliLbd6Dih/H34i626AA22Eok1vdG76
    
    • 准备一个 changerootpw.ldif 具有以下内容的文件:
    root@cky:~/ldap# cat changerootpw.ldif 
    dn: olcDatabase={1}mdb,cn=config
    changetype: modify
    replace: olcRootPW
    olcRootPW: {SSHA}PkliLbd6Dih/H34i626AA22Eok1vdG76
    
    • 最后,运行 ldapmodify 命令:
    root@cky:~/ldap# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f changerootpw.ldif
    modifying entry "olcDatabase={1}mdb,cn=config"
    

    配置日志

    创建logging.ldif具有以下内容的文件:

    dn: cn=config
    changetype: modify
    replace: olcLogLevel
    olcLogLevel: stats
    

    修改

    root@cky_dev:~/cky/ldap# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logging.ldif
    modifying entry "cn=config"
    
    

    -----------------------------------------------------分割线-----------------------------------------------------

    phpLDAPadmin

    如果是和我一样的初学者,建议搭起来看一下效果,会帮助你加深对ldap的理解。

    一、安装

    安装PHP和Apache Web服务器:

    # 该存储库包含迄今为止的所有发行版本的PHP。
    root@cky:~# add-apt-repository ppa:ondrej/php
    root@cky:~# apt update
    
    root@cky:~# apt install php7.0 php7.0-xml php7.0-ldap php7.0-cgi apache2 libapache2-mod-php7.0 php-mbstring php-common -y
    

    启用php7.0-cgi扩展:

    root@cky_test01:~# a2enmod  php7.0
    root@cky_test01:~# a2enconf php7.0-cgi
    root@cky_test01:~# systemctl reload apache2
    

    安装phpLDAPadmin

    root@cky_test01:~# apt -y install phpldapadmin
    

    查看一下版本

    root@cky:~# dpkg -l phpldapadmin
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name                                            Version                      Architecture                 Description
    +++-===============================================-============================-============================-===================================================================================================
    ii  phpldapadmin                                    1.2.2-6ubuntu1.1             all                          web based interface for administering LDAP servers
    

    就这里,php版本和phpLDAPadmin版本对应的坑就坑了我很久,别的版本我不太清楚,就我上面的版本肯定是没问题的。

    二、配置

    修改phpLDAPadmin配置:

    root@cky:~# vim /etc/phpldapadmin/config.php
    
    286 $servers->setValue('server','name','company LDAP Server');
    
    300 $servers->setValue('server','base',array('dc=company,dc=com'));
    
    326 $servers->setValue('login','bind_id','cn=admin,dc=company,dc=com');
    

    修改/etc/apache2/conf-enabled/phpldapadmin.conf上的访问权限,以允许仅从你信任的子网进行访问:

    # 大概在20行的位置,放行了自己就行
    
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 192.168.1.0/24
    

    重启apache2

    root@cky_test01:~# systemctl restart apache2
    

    防火墙放行

    root@cky:~# ufw allow ldap
    Rules updated
    Rules updated (v6)
    
    # 测一下
    root@cky:~# ldapwhoami -H ldap:// -x
    anonymous
    

    三、访问

    现在,登录访问一下phpldapadmin

    http://xxx.xxx.xxx.xxx/phpldapadmin/
    

    额外赠送一个小知识:在已安装的PHP版本之间切换

  • 相关阅读:
    NSURLRequest的缓存策略
    React-Native安装使用
    iOS开发--XMPPFramework--环境的配置(一)
    iOS9 HTTP 网络访问问题
    数据交换的三种方法
    iOS项目--古典音乐浏览
    iOS学习笔记33
    iOS bug 日志 -frame 和 bounds的区别
    iOS学习笔记32
    iOS项目 画图小程序
  • 原文地址:https://www.cnblogs.com/shu-sheng/p/14448316.html
Copyright © 2011-2022 走看看