• 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版本之间切换

  • 相关阅读:
    Mac上的USB存储设备使用痕迹在新版操作系统有所变化
    Beware of the encrypted VM
    A barrier for Mobile Forensics
    Second Space could let suspect play two different roles easily
    Take advantage of Checkra1n to Jailbreak iDevice for App analysis
    Find out "Who" and "Where"
    Where is the clone one and how to extract it?
    Downgrade extraction on phones running Android 7/8/9
    高版本安卓手机的取证未来
    How to extract WeChat chat messages from a smartphone running Android 7.x or above
  • 原文地址:https://www.cnblogs.com/shu-sheng/p/14448316.html
Copyright © 2020-2023  润新知