马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

Centos 7 集成安装Apache+PHP+Kerberos+LDAP+phpLDAPadmin

[复制链接]
查看2316 | 回复1 | 2019-10-24 09:49:54 | 显示全部楼层 |阅读模式

一、安装Apache

1.1、安装Apache

Apache程序是目前拥有很高市场占据率的Web服务程序之一,其跨平台和安全性广泛被承认且拥有快速、可靠、简单的API扩展。 它的名字取自美国印第安人土著语,寓意着拥有高超的作战战略和无穷的耐烦,在红帽RHEL5、6、7体系中不停作为着默认的Web服务程序而利用,并且也不停是红帽RHCSA和红帽RHCE的测验重点内容。Apache服务程序可以运行在Linux体系、Unix体系甚至是Windows体系中,支持基于IP、域名及端标语的虚拟主机功能、支持多种HTTP认证方式、集成有代理服务器模块、安全Socket层(SSL)、能够实时监视服务状态与定制日志消息,并有着各类丰富的模块支持。

Centos7 在安装摆设过程中,如果选择了web服务器,是会自动安装Apache的,如果没有选择安装web服务器模式,则需要手动安装。

查看Apache软件源

  1. yum list | grep httpd
复制代码

过程如下:

[root@duke ldap]# yum list | grep httpd
httpd.x86_64 2.4.6-80.el7.centos.1 @updates
httpd-tools.x86_64 2.4.6-80.el7.centos.1 @updates
httpd-devel.x86_64 2.4.6-80.el7.centos.1 updates
httpd-manual.noarch 2.4.6-80.el7.centos.1 updates
keycloak-httpd-client-install.noarch 0.6-3.el7 base
libmicrohttpd.i686 0.9.33-2.el7 base
libmicrohttpd.x86_64 0.9.33-2.el7 base
libmicrohttpd-devel.i686 0.9.33-2.el7 base
libmicrohttpd-devel.x86_64 0.9.33-2.el7 base
libmicrohttpd-doc.noarch 0.9.33-2.el7 base
python2-keycloak-httpd-client-install.noarch

安装Apache

  1. yum install httpd -y
复制代码

过程如下:

  1. [root@duke ldap]# yum install httpd -y
  2. 已加载插件:fastestmirror, langpacks
  3. Loading mirror speeds from cached hostfile
  4. base | 3.6 kB 00:00:00
  5. extras | 3.4 kB 00:00:00
  6. updates | 3.4 kB 00:00:00
  7. updates/7/x86_64/primary_db | 6.0 MB 00:00:00
  8. 软件包 httpd-2.4.6-80.el7.centos.1.x86_64 已安装并且是最新版本
  9. 无须任那边置处罚
复制代码

启动Apache

  1. systemctl start httpd
复制代码

开启启动Apache

  1. systemctl enable httpd
复制代码

过程如下:

[root@duke ldap]# systemctl start httpd
[root@duke ldap]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

1.2、Apache安装目次信息

阐明
目次
服务目次 /etc/httpd
主配置文件 /etc/httpd/conf/httpd.conf
网站数据目次 /var/www/html
访问日志 /var/log/httpd/access_log
错误日志 /var/log/httpd/error_log

1.3、配置Apache

在httpd服务程序主配置文件中最为常用的参数包罗有:

参数
阐明
ServerRoot 服务目次
ServerAdmin 管理员邮箱
User 运行服务的用户
Group 运行服务的用户组
ServerName 网站服务器的域名
DocumentRoot 网站数据目次
Listen 监听的IP地点与端标语
DirectoryIndex 默认的索引页页面
ErrorLog 错误日志文件
CustomLog 访问日志文件
Timeout 网页超时时间,默以为300秒.
Include 需要加载的其他文件

1.3.1、将“全局服务器名称”设置为“禁止语法警告”

1.3.2、调解防火墙以允许Web流量

  1. 打开HTTP和HTTPS端口80和443

    1. firewall-cmd --permanent --zone=public --add-service=http
    2. firewall-cmd --permanent --zone=public --add-service=https
    复制代码

    过程如下:

    [root@duke ldap]# ufirewall-cmd --permanent --zone=public --add-service=http
    FirewallD is not running
    [root@duke ldap]# ufirewall-cmd --permanent --zone=public --add-service=https
    FirewallD is not running

  2. 关闭防火墙(选择利用)

    1. systemctl disable firewall
    2. systemctl stop firewall
    复制代码
  3. 暂时关闭selinux(选择利用)
    1. setenforce 0
    复制代码
  4. 访问Apache
    开放防火墙后就可以实验登岸Apache服务器
    1. 登岸 http://192.168.0.2/
    复制代码
    界面如下:
    095005xk0kz1ii8zk6sb56.png

1.4、Apache下令

重载配置

  1. systemctl reload httpd
复制代码

启动下令

  1. /etc/init.d/httpd start
  2. systemctl start httpd
复制代码

停止下令

  1. /etc/init.d/httpd stop
  2. systemctl stop httpd
复制代码

重启下令

  1. /etc/init.d/httpd restart
  2. systemctl restart httpd
复制代码

查看版本

  1. httpd -v
复制代码

二、安装PHP开辟环境

2.1、安装PHP

  1. yum -y install php php-peer
复制代码

过程如下:

root@yita-211:/# yum -y install php php-peer
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 php-5.4.16-45.el7.x86_64 已安装并且是最新版本
没有可用软件包 php-peer。
无须任那边置处罚

2.2、配置PHP

2.2.1、配置index.html

修改Apache在哀求目次时提供文件的方式。Apache将首先从探求一个名为index.html文件改为探求index.php文件。

  1. vim /etc/httpd/conf/httpd.conf
复制代码

过程如下:

  1. <IfModule dir_module>
  2. DirectoryIndex index.html index.php index.html.var
  3. </IfModule>
复制代码

修改为

  1. <IfModule dir_module>
  2. DirectoryIndex index.php index.html index.html.var
  3. </IfModule>
复制代码

重启Apache

[root@duke ~]# systemctl restart httpd

2.3、安装PHP加强模块

2.3.1、查看PHP功能加强列表

  1. yum search php- | less
复制代码

过程如下:

[root@duke ~]# yum search php- | less
Loading mirror speeds from cached hostfile
============================== N/S matched: php- ===============================
emacs-php-mode.noarch : Major GNU Emacs mode for editing PHP code
php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-cli.x86_64 : Command-line interface for PHP
php-common.x86_64 : Common files for PHP
php-dba.x86_64 : A database abstraction layer module for PHP applications
php-devel.x86_64 : Files needed for building PHP extensions
php-embedded.x86_64 : PHP library for embedding in applications
php-enchant.x86_64 : Enchant spelling extension for PHP applications
php-fpm.x86_64 : PHP FastCGI Process Manager
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php-intl.x86_64 : Internationalization extension for PHP applications
php-ldap.x86_64 : A module for PHP applications that use LDAP
php-mbstring.x86_64 : A module for PHP applications which need multi-byte string
: handling
php-mysql.x86_64 : A module for PHP applications that use MySQL databases
php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php-odbc.x86_64 : A module for PHP applications that use ODBC databases
php-pdo.x86_64 : A database access abstraction module for PHP applications
php-pear.noarch : PHP Extension and Application Repository framework
php-pecl-memcache.x86_64 : Extension to work with the Memcached caching daemon
php-pgsql.x86_64 : A PostgreSQL database module for PHP
php-process.x86_64 : Modules for PHP script using system process interfaces
php-pspell.x86_64 : A module for PHP applications for using pspell interfaces
php-recode.x86_64 : A module for PHP applications for using the recode library
php-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices
php-soap.x86_64 : A module for PHP applications that use the SOAP protocol
php-xml.x86_64 : A module for PHP applications which use XML
php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol

2.3.2、安装加强功能

经过筛选,选择安装php-ldap、php-mbstring

  1. yum install php-ldap php-mbstring
复制代码

过程如下:

[root@duke ~]# yum install php-ldap php-mbstring
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 php-ldap-5.4.16-45.el7.x86_64 已安装并且是最新版本
软件包 php-mbstring-5.4.16-45.el7.x86_64 已安装并且是最新版本
无须任那边置处罚

2.3.3、编辑PHP配置

编辑PHP主配置文件,配置时间区域,下令如下

  1. vim /etc/php.ini
复制代码

php配置文件利用";" 注释,在全文搜索 date.timezone字符串,举行如下修改,并将“;”号去掉即可,过程如下:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone = ""

修改为

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Shanghai"

保存,并重启httpd服务

  1. service httpd restart
复制代码

2.4、测试PHP服务

2.4.1、添加测试文件

/var/www/html下新建一个info.php文件,用于测试PHP是否配置成功
过程如下:

  1. [root@duke ~]# vi /var/www/html/info.php
  2. <h2>PHP test page:
  3. <html>
  4. <body>
  5. <div style="width: 65%; font-size: 30px; font-weight: bold; text-align: center;">
  6. <?php
  7. print Date("Y/m/d");
  8. ?>
  9. </div>
  10. </body>
  11. </html>
  12. <?php
  13. phpinfo();
  14. ?>
复制代码

2.4.2、测试服务状态

在欣赏器中输入服务器IP即可,如下图:

095006f07nt93d3urnbugr.png

三、安装Kerberos

3.1、清算环境

0.1 停止服务

  1. service krb5kdc stop
  2. service kadmin stop
复制代码

0.2 卸载程序

  1. yum remove -y krb5-devel, krb5-workstation, krb5-server, krb5-server-ldap
复制代码

yum install krb5-server-ldap -y

3.2、 安装kerberos

  1. yum install krb5-server-ldap -y
复制代码

通过安装krb5-server-ldap可以把其他依靠的软件包安装完成

过程如下:

  1. [root@duke yum.repos.d]# yum install krb5-server-ldap -y
  2. 已加载插件:fastestmirror, langpacks
  3. Loading mirror speeds from cached hostfile
  4. 正在办理依靠关系
  5. --> 正在检查事件
  6. ---> 软件包 krb5-server-ldap.x86_64.0.1.15.1-19.el7 将被 安装
  7. --> 正在处置处罚依靠关系 libkadm5(x86-64) = 1.15.1-19.el7,它被软件包 krb5-server-ldap-1.15.1-19.el7.x86_64 需要
  8. --> 正在处置处罚依靠关系 krb5-server(x86-64) = 1.15.1-19.el7,它被软件包 krb5-server-ldap-1.15.1-19.el7.x86_64 需要
  9. --> 正在处置处罚依靠关系 krb5-libs(x86-64) = 1.15.1-19.el7,它被软件包 krb5-server-ldap-1.15.1-19.el7.x86_64 需要
  10. --> 正在检查事件
  11. ---> 软件包 krb5-libs.x86_64.0.1.15.1-8.el7 将被 升级
  12. --> 正在处置处罚依靠关系 krb5-libs(x86-64) = 1.15.1-8.el7,它被软件包 krb5-devel-1.15.1-8.el7.x86_64 需要
  13. --> 正在处置处罚依靠关系 krb5-libs(x86-64) = 1.15.1-8.el7,它被软件包 krb5-workstation-1.15.1-8.el7.x86_64 需要
  14. ---> 软件包 krb5-libs.x86_64.0.1.15.1-19.el7 将被 更新
  15. ---> 软件包 krb5-server.x86_64.0.1.15.1-19.el7 将被 安装
  16. ---> 软件包 libkadm5.x86_64.0.1.15.1-8.el7 将被 升级
  17. ---> 软件包 libkadm5.x86_64.0.1.15.1-19.el7 将被 更新
  18. --> 正在检查事件
  19. ---> 软件包 krb5-devel.x86_64.0.1.15.1-8.el7 将被 升级
  20. ---> 软件包 krb5-devel.x86_64.0.1.15.1-19.el7 将被 更新
  21. ---> 软件包 krb5-workstation.x86_64.0.1.15.1-8.el7 将被 升级
  22. ---> 软件包 krb5-workstation.x86_64.0.1.15.1-19.el7 将被 更新
  23. --> 办理依靠关系完成
  24. 依靠关系办理
  25. ==================================================================================================================================================================================================================
  26. Package 架构 版本 源 巨细
  27. ==================================================================================================================================================================================================================
  28. 正在安装:
  29. krb5-server-ldap x86_64 1.15.1-19.el7 updates 191 k
  30. 为依靠而安装:
  31. krb5-server x86_64 1.15.1-19.el7 updates 1.0 M
  32. 为依靠而更新:
  33. krb5-devel x86_64 1.15.1-19.el7 updates 269 k
  34. krb5-libs x86_64 1.15.1-19.el7 updates 747 k
  35. krb5-workstation x86_64 1.15.1-19.el7 updates 814 k
  36. libkadm5 x86_64 1.15.1-19.el7 updates 175 k
  37. 事件概要
  38. ==================================================================================================================================================================================================================
  39. 安装 1 软件包 (+1 依靠软件包)
  40. 升级 ( 4 依靠软件包)
  41. 总下载量:3.2 M
  42. Downloading packages:
  43. Delta RPMs reduced 2.0 M of updates to 728 k (63% saved)
  44. (1/6): krb5-devel-1.15.1-8.el7_1.15.1-19.el7.x86_64.drpm | 153 kB 00:00:00
  45. (2/6): krb5-libs-1.15.1-8.el7_1.15.1-19.el7.x86_64.drpm | 214 kB 00:00:00
  46. (3/6): krb5-workstation-1.15.1-8.el7_1.15.1-19.el7.x86_64.drpm | 236 kB 00:00:00
  47. (4/6): libkadm5-1.15.1-8.el7_1.15.1-19.el7.x86_64.drpm | 126 kB 00:00:00
  48. (5/6): krb5-server-ldap-1.15.1-19.el7.x86_64.rpm | 191 kB 00:00:00
  49. (6/6): krb5-server-1.15.1-19.el7.x86_64.rpm | 1.0 MB 00:00:00
  50. Finishing delta rebuilds of 2 package(s) (989 k)
  51. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  52. 总计 1.8 MB/s | 1.9 MB 00:00:01
  53. Running transaction check
  54. Running transaction test
  55. Transaction test succeeded
  56. Running transaction
  57. 正在更新 : krb5-libs-1.15.1-19.el7.x86_64 1/10
  58. 正在更新 : libkadm5-1.15.1-19.el7.x86_64 2/10
  59. 正在安装 : krb5-server-1.15.1-19.el7.x86_64 3/10
  60. 正在安装 : krb5-server-ldap-1.15.1-19.el7.x86_64 4/10
  61. 正在更新 : krb5-devel-1.15.1-19.el7.x86_64 5/10
  62. 正在更新 : krb5-workstation-1.15.1-19.el7.x86_64 6/10
  63. 清算 : krb5-workstation-1.15.1-8.el7.x86_64 7/10
  64. 清算 : krb5-devel-1.15.1-8.el7.x86_64 8/10
  65. 清算 : libkadm5-1.15.1-8.el7.x86_64 9/10
  66. 清算 : krb5-libs-1.15.1-8.el7.x86_64 10/10
  67. 验证中 : krb5-devel-1.15.1-19.el7.x86_64 1/10
  68. 验证中 : krb5-server-1.15.1-19.el7.x86_64 2/10
  69. 验证中 : krb5-workstation-1.15.1-19.el7.x86_64 3/10
  70. 验证中 : libkadm5-1.15.1-19.el7.x86_64 4/10
  71. 验证中 : krb5-libs-1.15.1-19.el7.x86_64 5/10
  72. 验证中 : krb5-server-ldap-1.15.1-19.el7.x86_64 6/10
  73. 验证中 : krb5-devel-1.15.1-8.el7.x86_64 7/10
  74. 验证中 : krb5-workstation-1.15.1-8.el7.x86_64 8/10
  75. 验证中 : krb5-libs-1.15.1-8.el7.x86_64 9/10
  76. 验证中 : libkadm5-1.15.1-8.el7.x86_64 10/10
  77. 已安装:
  78. krb5-server-ldap.x86_64 0:1.15.1-19.el7
  79. 作为依靠被安装:
  80. krb5-server.x86_64 0:1.15.1-19.el7
  81. 作为依靠被升级:
  82. krb5-devel.x86_64 0:1.15.1-19.el7 krb5-libs.x86_64 0:1.15.1-19.el7 krb5-workstation.x86_64 0:1.15.1-19.el7 libkadm5.x86_64 0:1.15.1-19.el7
  83. 完毕!
复制代码

【注意】:安装好kerberos后不要急于配置,先安装配置LDAP后在配置kerberos会比力好

3.3、安装cyrus-sasl

执行下令:

  1. yum install cyrus-sasl-gssapi cyrus-sasl-plain cyrus-sasl cyrus-sasl-scram cyrus-sasl-lib cyrus-sasl-md5
复制代码

【注意】:不要安装cyrus-sasl-ldap,否则ldap启动会堕落

执行过程:

  1. [root@duke yum.repos.d]# yum install cyrus-sasl-gssapi cyrus-sasl-plain cyrus-sasl cyrus-sasl-scram cyrus-sasl-lib cyrus-sasl-md5
  2. 已加载插件:fastestmirror, langpacks
  3. Loading mirror speeds from cached hostfile
  4. 正在办理依靠关系
  5. --> 正在检查事件
  6. ---> 软件包 cyrus-sasl.x86_64.0.2.1.26-21.el7 将被 升级
  7. ---> 软件包 cyrus-sasl.x86_64.0.2.1.26-23.el7 将被 更新
  8. ---> 软件包 cyrus-sasl-gssapi.x86_64.0.2.1.26-21.el7 将被 升级
  9. ---> 软件包 cyrus-sasl-gssapi.x86_64.0.2.1.26-23.el7 将被 更新
  10. ---> 软件包 cyrus-sasl-lib.x86_64.0.2.1.26-21.el7 将被 升级
  11. ---> 软件包 cyrus-sasl-lib.x86_64.0.2.1.26-23.el7 将被 更新
  12. ---> 软件包 cyrus-sasl-md5.x86_64.0.2.1.26-21.el7 将被 升级
  13. ---> 软件包 cyrus-sasl-md5.x86_64.0.2.1.26-23.el7 将被 更新
  14. ---> 软件包 cyrus-sasl-plain.x86_64.0.2.1.26-21.el7 将被 升级
  15. ---> 软件包 cyrus-sasl-plain.x86_64.0.2.1.26-23.el7 将被 更新
  16. ---> 软件包 cyrus-sasl-scram.x86_64.0.2.1.26-21.el7 将被 升级
  17. ---> 软件包 cyrus-sasl-scram.x86_64.0.2.1.26-23.el7 将被 更新
  18. --> 办理依靠关系完成
  19. 依靠关系办理
  20. ==================================================================================================================================================================================================================
  21. Package 架构 版本 源 巨细
  22. ==================================================================================================================================================================================================================
  23. 正在更新:
  24. cyrus-sasl x86_64 2.1.26-23.el7 base 88 k
  25. cyrus-sasl-gssapi x86_64 2.1.26-23.el7 base 41 k
  26. cyrus-sasl-lib x86_64 2.1.26-23.el7 base 155 k
  27. cyrus-sasl-md5 x86_64 2.1.26-23.el7 base 57 k
  28. cyrus-sasl-plain x86_64 2.1.26-23.el7 base 39 k
  29. cyrus-sasl-scram x86_64 2.1.26-23.el7 base 43 k
  30. 事件概要
  31. ==================================================================================================================================================================================================================
  32. 升级 6 软件包
  33. 总下载量:423 k
  34. Is this ok [y/d/N]: y
  35. Downloading packages:
  36. No Presto metadata available for base
  37. (1/6): cyrus-sasl-2.1.26-23.el7.x86_64.rpm | 88 kB 00:00:00
  38. (2/6): cyrus-sasl-gssapi-2.1.26-23.el7.x86_64.rpm | 41 kB 00:00:00
  39. (3/6): cyrus-sasl-md5-2.1.26-23.el7.x86_64.rpm | 57 kB 00:00:00
  40. (4/6): cyrus-sasl-lib-2.1.26-23.el7.x86_64.rpm | 155 kB 00:00:00
  41. (5/6): cyrus-sasl-plain-2.1.26-23.el7.x86_64.rpm | 39 kB 00:00:00
  42. (6/6): cyrus-sasl-scram-2.1.26-23.el7.x86_64.rpm | 43 kB 00:00:00
  43. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  44. 总计 1.5 MB/s | 423 kB 00:00:00
  45. Running transaction check
  46. Running transaction test
  47. Transaction test succeeded
  48. Running transaction
  49. 正在更新 : cyrus-sasl-lib-2.1.26-23.el7.x86_64 1/12
  50. 正在更新 : cyrus-sasl-md5-2.1.26-23.el7.x86_64 2/12
  51. 正在更新 : cyrus-sasl-plain-2.1.26-23.el7.x86_64 3/12
  52. 正在更新 : cyrus-sasl-2.1.26-23.el7.x86_64 4/12
  53. 正在更新 : cyrus-sasl-gssapi-2.1.26-23.el7.x86_64 5/12
  54. 正在更新 : cyrus-sasl-scram-2.1.26-23.el7.x86_64 6/12
  55. 清算 : cyrus-sasl-scram-2.1.26-21.el7.x86_64 7/12
  56. 清算 : cyrus-sasl-gssapi-2.1.26-21.el7.x86_64 8/12
  57. 清算 : cyrus-sasl-2.1.26-21.el7.x86_64 9/12
  58. 清算 : cyrus-sasl-plain-2.1.26-21.el7.x86_64 10/12
  59. 清算 : cyrus-sasl-md5-2.1.26-21.el7.x86_64 11/12
  60. 清算 : cyrus-sasl-lib-2.1.26-21.el7.x86_64 12/12
  61. 验证中 : cyrus-sasl-md5-2.1.26-23.el7.x86_64 1/12
  62. 验证中 : cyrus-sasl-plain-2.1.26-23.el7.x86_64 2/12
  63. 验证中 : cyrus-sasl-2.1.26-23.el7.x86_64 3/12
  64. 验证中 : cyrus-sasl-lib-2.1.26-23.el7.x86_64 4/12
  65. 验证中 : cyrus-sasl-gssapi-2.1.26-23.el7.x86_64 5/12
  66. 验证中 : cyrus-sasl-scram-2.1.26-23.el7.x86_64 6/12
  67. 验证中 : cyrus-sasl-scram-2.1.26-21.el7.x86_64 7/12
  68. 验证中 : cyrus-sasl-gssapi-2.1.26-21.el7.x86_64 8/12
  69. 验证中 : cyrus-sasl-md5-2.1.26-21.el7.x86_64 9/12
  70. 验证中 : cyrus-sasl-plain-2.1.26-21.el7.x86_64 10/12
  71. 验证中 : cyrus-sasl-lib-2.1.26-21.el7.x86_64 11/12
  72. 验证中 : cyrus-sasl-2.1.26-21.el7.x86_64 12/12
  73. 更新完毕:
  74. cyrus-sasl.x86_64 0:2.1.26-23.el7 cyrus-sasl-gssapi.x86_64 0:2.1.26-23.el7 cyrus-sasl-lib.x86_64 0:2.1.26-23.el7 cyrus-sasl-md5.x86_64 0:2.1.26-23.el7 cyrus-sasl-plain.x86_64 0:2.1.26-23.el7
  75. cyrus-sasl-scram.x86_64 0:2.1.26-23.el7
  76. 完毕!
复制代码

四、安装openLDAP

4.1、卸载OpenLDAP

0.1 停止服务

  1. service slapd stop
复制代码

0.2 卸载程序

  1. yum remove -y openldap-servers openldap-devel openldap-clients compat-openldap
复制代码

0.3 备份文件
如果不是第一次安装,有部门文件是需要备份的,否则在第二次安装时,将不会被安装,第二次安装时,需要将下面备份文件举行规复

  1. mkdir -p /etc/openldap_bak
  2. cp -r /etc/openldap/certs/ /etc/openldap_bak
  3. cp /etc/openldap/ldap.conf /etc/openldap_bak
复制代码

0.4 删除文件

  1. rm -rf /etc/openldap
复制代码

4.1.安装openLDAP

执行下令:

  1. yum install openldap-clients openldap-servers openldap-devel compat-openldap -y
复制代码

过程如下:

  1. [root@duke yum.repos.d]# yum install openldap-clients openldap-servers openldap-devel compat-openldap -y
  2. 已加载插件:fastestmirror, langpacks
  3. Loading mirror speeds from cached hostfile
  4. 软件包 1:compat-openldap-2.3.43-5.el7.x86_64 已安装并且是最新版本
  5. 正在办理依靠关系
  6. --> 正在检查事件
  7. ---> 软件包 openldap-clients.x86_64.0.2.4.44-15.el7_5 将被 安装
  8. --> 正在处置处罚依靠关系 openldap(x86-64) = 2.4.44-15.el7_5,它被软件包 openldap-clients-2.4.44-15.el7_5.x86_64 需要
  9. ---> 软件包 openldap-devel.x86_64.0.2.4.44-15.el7_5 将被 安装
  10. --> 正在处置处罚依靠关系 cyrus-sasl-devel(x86-64),它被软件包 openldap-devel-2.4.44-15.el7_5.x86_64 需要
  11. ---> 软件包 openldap-servers.x86_64.0.2.4.44-15.el7_5 将被 安装
  12. --> 正在检查事件
  13. ---> 软件包 cyrus-sasl-devel.x86_64.0.2.1.26-23.el7 将被 安装
  14. ---> 软件包 openldap.x86_64.0.2.4.44-5.el7 将被 升级
  15. ---> 软件包 openldap.x86_64.0.2.4.44-15.el7_5 将被 更新
  16. --> 办理依靠关系完成
  17. 依靠关系办理
  18. ==================================================================================================================================================================================================================
  19. Package 架构 版本 源 巨细
  20. ==================================================================================================================================================================================================================
  21. 正在安装:
  22. openldap-clients x86_64 2.4.44-15.el7_5 updates 190 k
  23. openldap-devel x86_64 2.4.44-15.el7_5 updates 803 k
  24. openldap-servers x86_64 2.4.44-15.el7_5 updates 2.2 M
  25. 为依靠而安装:
  26. cyrus-sasl-devel x86_64 2.1.26-23.el7 base 310 k
  27. 为依靠而更新:
  28. openldap x86_64 2.4.44-15.el7_5 updates 355 k
  29. 事件概要
  30. ==================================================================================================================================================================================================================
  31. 安装 3 软件包 (+1 依靠软件包)
  32. 升级 ( 1 依靠软件包)
  33. 总下载量:3.8 M
  34. Downloading packages:
  35. Delta RPMs reduced 355 k of updates to 175 k (50% saved)
  36. (1/5): openldap-2.4.44-5.el7_2.4.44-15.el7_5.x86_64.drpm | 175 kB 00:00:00
  37. (2/5): openldap-clients-2.4.44-15.el7_5.x86_64.rpm | 190 kB 00:00:00
  38. (3/5): cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm | 310 kB 00:00:00
  39. (4/5): openldap-devel-2.4.44-15.el7_5.x86_64.rpm | 803 kB 00:00:00
  40. (5/5): openldap-servers-2.4.44-15.el7_5.x86_64.rpm | 2.2 MB 00:00:00
  41. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  42. 总计 8.1 MB/s | 3.6 MB 00:00:00
  43. Running transaction check
  44. Running transaction test
  45. Transaction test succeeded
  46. Running transaction
  47. 正在更新 : openldap-2.4.44-15.el7_5.x86_64 1/6
  48. 正在安装 : cyrus-sasl-devel-2.1.26-23.el7.x86_64 2/6
  49. 正在安装 : openldap-devel-2.4.44-15.el7_5.x86_64 3/6
  50. 正在安装 : openldap-servers-2.4.44-15.el7_5.x86_64 4/6
  51. 正在安装 : openldap-clients-2.4.44-15.el7_5.x86_64 5/6
  52. 清算 : openldap-2.4.44-5.el7.x86_64 6/6
  53. 验证中 : openldap-servers-2.4.44-15.el7_5.x86_64 1/6
  54. 验证中 : openldap-clients-2.4.44-15.el7_5.x86_64 2/6
  55. 验证中 : openldap-devel-2.4.44-15.el7_5.x86_64 3/6
  56. 验证中 : cyrus-sasl-devel-2.1.26-23.el7.x86_64 4/6
  57. 验证中 : openldap-2.4.44-15.el7_5.x86_64 5/6
  58. 验证中 : openldap-2.4.44-5.el7.x86_64 6/6
  59. 已安装:
  60. openldap-clients.x86_64 0:2.4.44-15.el7_5 openldap-devel.x86_64 0:2.4.44-15.el7_5 openldap-servers.x86_64 0:2.4.44-15.el7_5
  61. 作为依靠被安装:
  62. cyrus-sasl-devel.x86_64 0:2.1.26-23.el7
  63. 作为依靠被升级:
  64. openldap.x86_64 0:2.4.44-15.el7_5
  65. 完毕!
复制代码

4.2、查看安装的版本

4.2.1、查看kerberos

  1. rpm -qa krb5-server-ldap
复制代码

执行过程如下:

[root@hzw ~]# rpm -qa krb5-server-ldap
krb5-server-ldap-1.15.1-19.el7.x86_64

4.2.1、查看OpenLDAP

  1. rpm -qa openldap
复制代码

执行过程如下:

[root@hzw ~]# rpm -qa openldap
openldap-2.4.44-15.el7_5.x86_64

4.3、打开防火墙上的LDAP端口

LDAP服务器已配置并运行。 打开防火墙上的LDAP端口,以便外部客户端可以毗连:

  1. systemctl disable firewall
  2. systemctl stop firewall
复制代码

4.4、测试LDAP毗连

测试与ldapwhoami的LDAP毗连,该毗连应该返回我们毗连的用户名:

  1. ldapwhoami -H ldap:// -x
复制代码

[root@duke ~]# ldapwhoami -H ldap:// -x
anonymous

4.5、检查安装状态

  1. ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
复制代码

过程如下:

[root@duke ~]# 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 cosine 模式
cn={2}nis,cn=schema,cn=config nis 模式
cn={3}inetorgperson,cn=schema,cn=config inetorgperson模式
olcBackend={0}mdb,cn=config 后端,mdb存储数据库
olcDatabase={-1}frontend,cn=config 前端数据库,默认设置为其他数据库
olcDatabase={0}config,cn=config slapd配置数据库(cn = config)
olcDatabase={1}mdb,cn=config 你的数据库实例 (dc=example,dc=com)

4.6、LDAP利用(知识点,非环境搭建内容)

此时LDAP只有cn=admin,dc=example,dc=com这个用户存在(第五章节会阐明),此时LDAP还没有真正能够举利用用,只是一个空的平台。以是需要举行节点、用户存储、组存储、用户等信息的创建。
该章节会针对这些举行干系阐明,该内容是知识点,不是摆设重要环节,如果只是摆设环境,可以跳过该章节,在“第六章”会做摆设整合干系的内容阐明。

4.6.1、变更数据库

为了LDAP能够真正利用,还需要创建以下内容:

序列分类名称
阐明
1 用户节点 People 一个存储用户信息的节点,用户信息都会存储在该节点,例如:han
2 组节点 Groups 一个存储组信息的节点,组信息都会存储在该节点,例如:LDAPGroup
3 LDAPGroup 创建一个LDAP的用户组
4 用户 han 创建一个属于LDAPGroup组的用户

利用过程如下:

  • 创建一个LDIF文件,该文件用于创建上面表单中的内容,文件可以叫ldap_init.ldif

    root@yita-211:~# cd /home/
    root@yita-211:/home# mkdir ldap
    root@yita-211:/home# cd ldap
    root@yita-211:/home# vi ldap_init.ldif

  • 在ldap_init.ldif文件中添加以下内容

    1. dn: ou=people,dc=example,dc=com
    2. objectClass: organizationalUnit
    3. ou: people
    4. dn: ou=Groups,dc=example,dc=com
    5. objectClass: organizationalUnit
    6. ou: Groups
    7. dn: cn=LDAPGroup,ou=Groups,dc=example,dc=com
    8. objectClass: posixGroup
    9. cn: LDAPGroup
    10. gidNumber: 5000
    11. dn: uid=han,ou=people,dc=example,dc=com
    12. objectClass: inetOrgPerson
    13. objectClass: posixAccount
    14. objectClass: shadowAccount
    15. uid: han
    16. sn: zhiwei
    17. givenName: Han
    18. cn: Han ZhiWei
    19. displayName: Han ZhiWei
    20. uidNumber: 10000
    21. gidNumber: 5000
    22. userPassword: hanzhiwei
    23. gecos: Han ZhiWei
    24. loginShell: /bin/bash
    25. homeDirectory: /home/ldap/han
    复制代码
    【注意】:文件中的uidNumber、gidNumber这2个值不能和体系中的已经存在的值辩论,以是最好接纳高数值来举行区分。
    干系的值可以在/etc/passwd和/etc/group文件中举行查询
  • 将用户信息到场到LDAP中
    1. ldapadd -x -D cn=admin,dc=example,dc=com -W -f ldap_init.ldif
    复制代码
    过程如下:

    root@yita-211:/home/ldap# ls
    ldap_init.ldif
    root@yita-211:/home/ldap# ldapadd -x -D cn=admin,dc=example,dc=com -W -f ldap_init.ldif
    Enter LDAP Password:
    adding new entry "ou=people,dc=example,dc=com"

    adding new entry "ou=Groups,dc=example,dc=com"

    adding new entry "cn=LDAPGroup,ou=Groups,dc=example,dc=com"

    adding new entry "uid=han,ou=people,dc=example,dc=com"

4.6.2、检查节点、组、用户是否添加正确

  1. ldapsearch -x -LLL -b dc=example,dc=com 'uid=han' cn gidNumber
复制代码

过程如下:

root@yita-211:/home/ldap# ldapsearch -x -LLL -b dc=example,dc=com 'uid=han' cn gidNumber
dn: uid=han,ou=people,dc=example,dc=com
cn: Han ZhiWei
gidNumber: 5000

指令阐明:

参数
阐明
-x “简单”绑定; 不会利用默认的SASL方法
-LLL 禁用打印无关信息
uid=han 用于查找han用户的“过滤器”
cn gidNumber 哀求表现某些属性(默以为表现全下属性)

4.6.3、增长支持的模式(add schema)

默认环境下安装完LDAP是只支持 cosine、nis、inetorgperson 这3种模式,如果要新增就需要自行添加,例如:本文所要涉及的kerberos。

由于后续第6章节,需要讲述kerberos和LDAP的整合,此中会涉及到在LDAP中增长kerberos模式,以是此处就不再赘述。干系知识点,请直接查看6.1、LDAP增长kerberos模式(schema)章节

五、安装和配置phpLDAPadmin Web界面

5.1、下载安装phpLDAPadmin

5.1.1、下载phpLDAPadmin

  1. http://sourceforge.net/projects/phpldapadmin/files/phpldapadmin-php5/1.2.3/phpldapadmin-1.2.3.zip/download
复制代码

5.1.2、安装phpLDAPadmin

将下载的phpldapadmin-1.2.3.zip上传到服务器,执行以下下令

  1. unzip phpldapadmin-1.2.3.zip
  2. mv phpldapadmin-1.2.3 /var/www/html/phpldapadmin
复制代码

5.2、配置phpLDAPadmin

安装phpLDAPadmin应用程序,启用必要的Apache配置,并重新加载Apache。
Web服务器配置为提供应用程序,需要举行一些更改。 需要将phpLDAPadmin配置为利用的域,而不是自动填充LDAP登录信息。
需要修改/etc/phpldapadmin/config.php配置文件

  1. cd /var/www/html/phpldapadmin
  2. cp config.php.example config.php.example.bak
  3. mv config.php.example config.php
  4. vim /var/www/html/phpldapadmin/config/config.php
复制代码
  1. 配置LDAP服务器--标识

    找到 $servers->setValue('server','name','My LDAP Server'); 这一行,修改第三个参数,如下:
    $servers->setValue('server','name','YITA LDAP Server');

  2. 配置LDAP服务器--IP

    找到 $servers->setValue('server','host','127.0.0.1'); 这一行,修改第三个参数,如下:
    $servers->setValue('server','host','192.168.0.2');

  3. 配置LDAP服务器--域名
    【注意】:
    该配置告诉phpLDAPadmin LDAP条理布局的根目次,这是基于重新配置slapd包时输入的值。
    前面slapd配置是example,因此在这里配置example.com
    需要将每个域组件(不是一个点)放入dc= notation中将其转换为LDAP语法

    找到 $servers->setValue('server','base',array('dc=example,dc=com')); 这一行,修改第三个参数,如下:
    $servers->setValue('server','base',array('dc=example,dc=com'));

  4. 配置LDAP服务器--端口
    默认是不配置的,只需将去掉注释即可

    找到 //$servers->setValue('server','port',389); 这一行,去掉注释,如下:
    $servers->setValue('server','port',389);

  5. 配置LDAP服务器--其他服务器
    【注意】:
    如果只是本机利用LDAP,不利用其他服务器的话,请注释下面配置。
    到文件最后部门,找到下面内容,厥后的全部参数均注释掉。

    1. **************************************************************************
    2. * If you want to configure additional LDAP servers, do so below. *
    3. * Remove the commented lines and use this section as a template for all *
    4. * your other LDAP servers. *
    5. **************************************************************************
    复制代码

    注释内容如下:

    1. /*
    2. $servers->newServer('ldap_pla');
    3. $servers->setValue('server','name','LDAP Server');
    4. $servers->setValue('server','host','192.168.0.2');
    5. $servers->setValue('server','port',389);
    6. $servers->setValue('server','base',array('dc=example,dc=com'));
    7. $servers->setValue('login','auth_type','cookie');
    8. $servers->setValue('login','bind_id','');
    9. $servers->setValue('login','bind_pass','');
    10. $servers->setValue('server','tls',false);
    11. # SASL auth
    12. $servers->setValue('login','auth_type','sasl');
    13. $servers->setValue('sasl','mech','GSSAPI');
    14. $servers->setValue('sasl','realm','EXAMPLE.COM');
    15. $servers->setValue('sasl','authz_id',null);
    16. $servers->setValue('sasl','authz_id_regex','/^uid=([^,]+)(.+)/i');
    17. $servers->setValue('sasl','authz_id_replacement','$1');
    18. $servers->setValue('sasl','props',null);
    19. $servers->setValue('appearance','password_hash','md5');
    20. $servers->setValue('login','attr','dn');
    21. $servers->setValue('login','fallback_dn',false);
    22. $servers->setValue('login','class',null);
    23. $servers->setValue('server','read_only',false);
    24. $servers->setValue('appearance','show_create',true);
    25. $servers->setValue('auto_number','enable',true);
    26. $servers->setValue('auto_number','mechanism','search');
    27. $servers->setValue('auto_number','search_base',null);
    28. $servers->setValue('auto_number','min',array('uidNumber'=>1000,'gidNumber'=>500));
    29. $servers->setValue('auto_number','dn',null);
    30. $servers->setValue('auto_number','pass',null);
    31. $servers->setValue('login','anon_bind',true);
    32. $servers->setValue('custom','pages_prefix','custom_');
    33. $servers->setValue('unique','attrs',array('mail','uid','uidNumber'));
    34. $servers->setValue('unique','dn',null);
    35. $servers->setValue('unique','pass',null);
    36. $servers->setValue('server','visible',true);
    37. $servers->setValue('login','timeout',30);
    38. $servers->setValue('server','branch_rename',false);
    39. $servers->setValue('server','custom_sys_attrs',array('passwordExpirationTime','passwordAllowChangeTime'));
    40. $servers->setValue('server','custom_attrs',array('nsRoleDN','nsRole','nsAccountLock'));
    41. $servers->setValue('server','force_may',array('uidNumber','gidNumber','sambaSID'));
    42. */
    复制代码

5.3、登岸phpLDAPadmin

此时phpldapadmin可以访问但可能不能登录,这个和体系SELinux有关,如果SELinux关闭的话登录时候会有一个错误:

  1. error Unable to connect to LDAP server Cloud-Lab.Com
  2. error: Can't contact LDAP server (-1) for user
  3. error Failed to Authenticate to server
  4. Invalid Username or Password.
复制代码

打开下面配置即可,利用过程如下:

[root@localhost ~]# getsebool httpd_can_connect_ldap
httpd_can_connect_ldap --> off
[root@localhost ~]# setsebool -P httpd_can_connect_ldap on
[root@localhost ~]# getsebool httpd_can_connect_ldap
httpd_can_connect_ldap --> on

在登录前,必须保证用户电脑和LDAP服务器同属于一个域当中,并配置hosts文件。
例子:以复兴环境为例

阐明IP地点
LDAP服务器 192.168.0.2
用户电脑 10.47.101.24
网关 10.47.101.1

登岸地点如下:

  1. http://duke.com/phpldapadmin
复制代码

如果没有配置hosts文件,也可以直接利用IP地点举行登录:

  1. http://192.168.0.2/phpldapadmin
复制代码

登岸页面如下:

095007ft460t24rx45b0ux.png

用户登录:
点击页面左侧登录按钮后,页面如下:

095008hpxy5yfstttcyxt9.png

登录DN是您将要利用的用户名。
包罗:帐户名称作为cn=部门,服务器选择的域名分为dc=部门,在安装过程中设置的默认管理员帐户称为admin ,因此在我们的示例中,我们将键入以下内容:

  1. cn=admin,dc=example,dc=com
复制代码

设置页面如下:

095008rqueqa4rdpndjepp.png

登录成功后页面如下:

095009bqyg63q8u2214ys8.png

六、kerberos和LDAP整合配置

6.1、配置LDAP的HDB库

  1. rm -rf /var/lib/ldap/*
  2. cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  3. chown -R ldap.ldap /var/lib/ldap
复制代码
【注意】:
1、在2.4从前的版本中,OpenLDAP 利用 slapd.conf 配置文件来举行服务器的配置
2、2.4开始则利用 slapd.d 目次保存细分后的各种配置,其数据存储位置即目次 /etc/openldap/slapd.d
3、尽管数据文件是透明格式的,照旧建议利用 ldapadd, ldapdelete, ldapmodify 等下令来修改,而不是直接编辑。

6.2、LDAP增长kerberos模式(schema)

存在2中添加方式

6.2.1、LDAP增长kerberos schema文件

解压kerberos.schema.gz,添加到LDAP的schema存储目次

  1. gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz
  2. cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/
复制代码

6.2.2、LDAP增长kerberos模式一(该模式是2.4版本后官方保举方法)

  • 新建一个schema转换文件:kerberos_schema_convert.conf
    1. vim kerberos_schema_convert.conf
    复制代码
  • kerberos_schema_convert.conf文件中添加以下内容:
    1. include /etc/openldap/schema/core.schema
    2. include /etc/openldap/schema/collective.schema
    3. include /etc/openldap/schema/corba.schema
    4. include /etc/openldap/schema/cosine.schema
    5. include /etc/openldap/schema/duaconf.schema
    6. include /etc/openldap/schema/dyngroup.schema
    7. include /etc/openldap/schema/inetorgperson.schema
    8. include /etc/openldap/schema/java.schema
    9. include /etc/openldap/schema/misc.schema
    10. include /etc/openldap/schema/nis.schema
    11. include /etc/openldap/schema/openldap.schema
    12. include /etc/openldap/schema/ppolicy.schema
    13. include /etc/openldap/schema/kerberos.schema
    复制代码
  • 创建一个暂时目次来存放LDIF文件
    1. mkdir -p /home/ldap/tmp
    复制代码
  • 利用slapcat来转换schema文件
    1. slapcat -f kerberos_schema_convert.conf -F /home/ldap/tmp -n0 -s "cn={12}kerberos,cn=schema,cn=config" > /home/ldap/tmp/cn=kerberos.ldif
    复制代码
    1. 【注意】:cn={12}kerberos中的{12}<br />指的是kerberos_schema_convert.conf文件中“include /etc/openldap/schema/kerberos.schema”信息位置的序号<br />并且需要(序号-1),序号是以0为起始位
    复制代码

    过程如下:

    [root@duke ldap]# slapcat -f kerberos_schema_convert.conf -F /home/ldap/tmp -n0 -s "cn={12}kerberos,cn=schema,cn=config" > /home/ldap/tmp/cn=kerberos.ldif
    [root@duke ldap]# cd tmp
    [root@duke tmp]# ls
    cn=config cn=config.ldif cn=kerberos.ldif
    [root@duke ldap]# cat cn\=kerberos.ldif

    dn: cn={12}kerberos,cn=schema,cn=config
    objectClass: olcSchemaConfig
    cn: {12}kerberos
    olcAttributeTypes: {0}( 2.16.840.1.113719.1.301.4.1.1 NAME 'krbPrincipalName
    ' EQUALITY caseExactIA5Match SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1
    .4.1.1466.115.121.1.26 )
    olcAttributeTypes: {1}( 1.2.840.113554.1.4.1.6.1 NAME 'krbCanonicalName' EQU
    ALITY caseExactIA5Match SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.
    1466.115.121.1.26 SINGLE-VALUE )
    ......
    olcObjectClasses: {11}( 2.16.840.1.113719.1.301.6.17.1 NAME 'krbTicketPolicy
    ' SUP top STRUCTURAL MUST cn )
    structuralObjectClass: olcSchemaConfig
    entryUUID: 84374308-66be-1038-8430-576d5315da4e
    creatorsName: cn=config
    createTimestamp: 20181018011141Z
    entryCSN: 20181018011141.878509Z#000000#000#000000
    modifiersName: cn=config
    modifyTimestamp: 20181018011141Z

  • 编辑天生的/home/ldap/tmp/cn=kerberos.ldif文件,修改此中属性,删除以下不需要的部门,这部门属性可能不会一样,每次天生的value是肯定不一样,根据环境删除
    1. structuralObjectClass: olcSchemaConfig
    2. entryUUID: 84374308-66be-1038-8430-576d5315da4e
    3. creatorsName: cn=config
    4. createTimestamp: 20181018011141Z
    5. entryCSN: 20181018011141.878509Z#000000#000#000000
    6. modifiersName: cn=config
    7. modifyTimestamp: 20181018011141Z
    复制代码
  • 用ldapadd加载新的schema
    1. ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /home/ldap/tmp/cn=kerberos.ldif
    复制代码
  • 查看是否加载成功
    1. ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn
    复制代码
    过程如下:

    [root@duke ldap]# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn
    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: cn={4}kerberos,cn=schema 新增长成功的keberos模式

6.2.2、LDAP增长kerberos模式二(该模式是2.4版本前方法,2.4之后版本也可以用)保举

【注意】:
1、openldap在第一次安装完成后,/etc/openldap/目次会有以下文件

certs check_password.conf ldap.conf schema slapd.d

2、如果卸载openLDAP,并删除/etc/openldap/目次下全部内容,在第二次安装时,会少以下内容

certs ldap.conf

3、需要备份certs和ldap.conf的内容,否则会导致openLDAP无法正常启动

6.2.2.1、备份干系文件

  1. mkdir /etc/openldap/bak
  2. cp -r /etc/openldap/certs/ /etc/openldap/bak
  3. cp /etc/openldap/ldap.conf /etc/openldap/bak
  4. cp -rf /etc/openldap/slapd.d /etc/openldap/slapd.d.bak
复制代码

6.2.2.2、配置增长kerberos.schema

1、增长kerberos.schema配置文件到openLDAP

  1. cp /usr/share/doc/krb5-server-ldap-1.15.1/kerberos.schema /etc/openldap/schema/
复制代码

2、配置openLDAP的配置文件

  1. touch /etc/openldap/slapd.conf
  2. cat >> /etc/openldap/slapd.conf <<EOF
  3. include /etc/openldap/schema/core.schema
  4. include /etc/openldap/schema/cosine.schema
  5. include /etc/openldap/schema/corba.schema
  6. include /etc/openldap/schema/duaconf.schema
  7. include /etc/openldap/schema/dyngroup.schema
  8. include /etc/openldap/schema/inetorgperson.schema
  9. include /etc/openldap/schema/java.schema
  10. include /etc/openldap/schema/misc.schema
  11. include /etc/openldap/schema/nis.schema
  12. include /etc/openldap/schema/openldap.schema
  13. include /etc/openldap/schema/ppolicy.schema
  14. include /etc/openldap/schema/collective.schema
  15. include /etc/openldap/schema/kerberos.schema
  16. pidfile /var/run/openldap/slapd.pid
  17. argsfile /var/run/openldap/slapd.args
  18. EOF
复制代码

3、更新配置

  1. slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
  2. chown -R ldap:ldap /etc/openldap/slapd.d && chmod -R 700 /etc/openldap/slapd.d
复制代码

过程如下:

[root@duke openldap]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
[root@duke openldap]# chown -R ldap:ldap /etc/openldap/slapd.d && chmod -R 700 /etc/openldap/slapd.d

4、修改默认配置
需要注释ldap.conf中的TLS_CACERTDIR /etc/openldap/certs内容

  1. vim /etc/openldap/lapd.conf
复制代码

过程如下:

  1. #
  2. # LDAP Defaults
  3. #
  4. # See ldap.conf(5) for details
  5. # This file should be world readable but not world writable.
  6. #BASE dc=example,dc=com
  7. #URI ldap://ldap.example.com ldap://ldap-master.example.com:666
  8. #SIZELIMIT 12
  9. #TIMELIMIT 15
  10. #DEREF never
  11. TLS_CACERTDIR /etc/openldap/certs
  12. # Turning this off breaks GSSAPI used with krb5 when rdns = false
  13. SASL_NOCANON on
复制代码

修改为

  1. #
  2. # LDAP Defaults
  3. #
  4. # See ldap.conf(5) for details
  5. # This file should be world readable but not world writable.
  6. #BASE dc=example,dc=com
  7. #URI ldap://ldap.example.com ldap://ldap-master.example.com:666
  8. #SIZELIMIT 12
  9. #TIMELIMIT 15
  10. #DEREF never
  11. #TLS_CACERTDIR /etc/openldap/certs
  12. # Turning this off breaks GSSAPI used with krb5 when rdns = false
  13. SASL_NOCANON on
复制代码

5、启动openLDAP

  1. service slapd start
复制代码

6、检查启动状态

  1. ps aux | grep slapd | grep -v grep
  2. netstat -tunlp | grep :389
复制代码

执行过程如下:

[root@duke openldap]# ps aux | grep slapd | grep -v grep
ldap 18081 0.0 1.7 517348 32988 ? Ssl 17:06 0:00 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///
[root@duke openldap]# netstat -tunlp | grep :389
tcp 0 0 0.0.0.0:389 0.0.0.0: LISTEN 18081/slapd
tcp6 0 0 :::389 :::
LISTEN 18081/slapd

6.2.3、启动失败办理方案

1、启动失败题目1
执行过程:

  1. [root@duke openldap]# service slapd start
  2. Redirecting to /bin/systemctl start slapd.service
  3. Job for slapd.service failed because the control process exited with error code. See "systemctl status slapd.service" and "journalctl -xe" for details.
  4. [root@duke openldap]# journalctl -xe
  5. 10月 26 16:59:47 test216 slaptest[17907]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: sql
  6. 10月 26 16:59:47 test216 runuser[17906]: pam_unix(runuser:session): session closed for user ldap
  7. 10月 26 16:59:47 test216 check-config.sh[17903]: Checking configuration file failed:
  8. 10月 26 16:59:47 test216 check-config.sh[17903]: 5bd2d783 ldif_read_file: Permission denied for "/etc/openldap/slapd.d/cn=config/cn=schema/cn={1}cosine.ldif"
  9. 10月 26 16:59:47 test216 check-config.sh[17903]: slaptest: bad configuration file!
  10. 10月 26 16:59:47 test216 slapcat[17911]: auxpropfunc error invalid parameter supplied
  11. 10月 26 16:59:47 test216 slapcat[17911]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb
  12. 10月 26 16:59:47 test216 slapcat[17911]: ldapdb_canonuser_plug_init() failed in sasl_canonuser_add_plugin(): invalid parameter supplied
  13. 10月 26 16:59:47 test216 slapcat[17911]: _sasl_plugin_load failed on sasl_canonuser_init for plugin: ldapdb
  14. 10月 26 16:59:47 test216 slapcat[17911]: sql_select option missing
  15. 10月 26 16:59:47 test216 slapcat[17911]: auxpropfunc error no mechanism available
  16. 10月 26 16:59:47 test216 slapcat[17911]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: sql
  17. 10月 26 16:59:47 test216 slapcat[17911]: DIGEST-MD5 common mech free
  18. 10月 26 16:59:47 test216 slapd[17918]: @(#) $OpenLDAP: slapd 2.4.44 (May 16 2018 09:55:53) $
  19. mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
  20. 10月 26 16:59:47 test216 slapd[17918]: auxpropfunc error invalid parameter supplied
  21. 10月 26 16:59:47 test216 slapd[17918]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb
  22. 10月 26 16:59:47 test216 slapd[17918]: ldapdb_canonuser_plug_init() failed in sasl_canonuser_add_plugin(): invalid parameter supplied
  23. 10月 26 16:59:47 test216 slapd[17918]: _sasl_plugin_load failed on sasl_canonuser_init for plugin: ldapdb
  24. 10月 26 16:59:47 test216 slapd[17918]: sql_select option missing
  25. 10月 26 16:59:47 test216 slapd[17918]: auxpropfunc error no mechanism available
  26. 10月 26 16:59:47 test216 slapd[17918]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: sql
  27. 10月 26 16:59:47 test216 slapd[17918]: ldif_read_file: Permission denied for "/etc/openldap/slapd.d/cn=config/cn=schema/cn={1}cosine.ldif"
  28. 10月 26 16:59:47 test216 slapd[17918]: DIGEST-MD5 common mech free
  29. 10月 26 16:59:47 test216 slapd[17918]: slapd stopped.
  30. 10月 26 16:59:47 test216 slapd[17918]: connections_destroy: nothing to destroy.
  31. 10月 26 16:59:47 test216 systemd[1]: slapd.service: control process exited, code=exited status=1
  32. 10月 26 16:59:47 test216 systemd[1]: Failed to start OpenLDAP Server Daemon.
  33. -- Subject: Unit slapd.service has failed
  34. -- Defined-By: systemd
  35. -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
  36. --
  37. -- Unit slapd.service has failed.
  38. --
  39. -- The result is failed.
  40. 10月 26 16:59:47 test216 systemd[1]: Unit slapd.service entered failed state.
  41. 10月 26 16:59:47 test216 systemd[1]: slapd.service failed.
  42. 10月 26 16:59:47 test216 polkitd[663]: Unregistered Authentication Agent for unix-process:17887:646403 (system bus name :1.65, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, local
复制代码

题目在于下面2个关键处

  1. _sasl_plugin_load failed on sasl_canonuser_init for plugin: ldapdb
  2. ldapdb_canonuser_plug_init() failed in sasl_canonuser_add_plugin(): invalid parameter supplied
复制代码

是由于安装了cyrus-sasl-ldap包,导致,实际过程中是不需要该包的,删除该包即可,下令如下:

  1. rpm -e cyrus-sasl-ldap-2.1.26-23.el7.x86_64
复制代码

2、启动失败题目2
如果通过journalctl -xe查看到有很多以下内容,则体现权限不对:

  1. tlsmc_get_pin: INFO: Please note the extracted key file will not be protected with a PIN any more, however it will be still protected at least by file per
复制代码

执行以下利用:

  1. chown -R ldap:ldap /etc/openldap
  2. chown -R ldap:ldap /var/run/openldap
  3. chown -R ldap:ldap /var/lib/ldap
复制代码

3、启动失败题目3
如果通过slapd -h ldap://127.0.0.1 -d 481查看到有下内容,则体现缺少/etc/openldap/certs目次中的文件,需要将之前备份的certsldap.conf规复:

  1. TLSMC: MozNSS compatibility interception begins.
  2. tlsmc_intercept_initialization: INFO: entry options follow:
  3. tlsmc_intercept_initialization: INFO: cacertdir = `/etc/openldap/certs'
  4. tlsmc_intercept_initialization: INFO: certfile = `OpenLDAP Server'
  5. tlsmc_intercept_initialization: INFO: keyfile = `/etc/openldap/certs/password'
  6. tlsmc_convert: INFO: trying to open NSS DB with CACertDir = `/etc/openldap/certs'.
  7. tlsmc_open_nssdb: INFO: trying to initialize moznss using security dir `/etc/openldap` prefix `certs`.
  8. tlsmc_open_nssdb: WARN: could not initialize MozNSS context - error -8015.
  9. tlsmc_convert: INFO: cannot open the NSS DB, expecting PEM configuration is present.
  10. tlsmc_intercept_initialization: INFO: altered options follow:
  11. tlsmc_intercept_initialization: INFO: cacertdir = `/etc/openldap'
  12. tlsmc_intercept_initialization: INFO: certfile = `OpenLDAP Server'
  13. tlsmc_intercept_initialization: INFO: keyfile = `/etc/openldap/certs/password'
  14. tlsmc_intercept_initialization: INFO: successfully intercepted TLS initialization. Continuing with OpenSSL only.
  15. TLSMC: MozNSS compatibility interception ends.
  16. TLS: could not use certificate `OpenLDAP Server'.
  17. TLS: error:02001002:system library:fopen:No such file or directory bss_file.c:402
  18. TLS: error:20074002:BIO routines:FILE_CTRL:system lib bss_file.c:404
  19. TLS: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib ssl_rsa.c:468
  20. 5bd16a2e main: TLS init def ctx failed: -1
  21. 5bd16a2e slapd destroy: freeing system resources.
  22. 5bd16a2e slapd stopped.
  23. 5bd16a2e connections_destroy: nothing to destroy.
复制代码

6.3、配置kerberos

6.3.1、设置/etc/krb5.conf文件

  1. vim /etc/krb5.conf
复制代码

1、设置libdefaults属性
找到[libdefaults]行,举行以下修改

  1. [libdefaults]
  2. default_realm = EXAMPLE.COM
  3. # The following krb5.conf variables are only for MIT Kerberos.
  4. krb4_config = /etc/krb.conf
  5. krb4_realms = /etc/krb.realms
  6. kdc_timesync = 1
  7. ccache_type = 4
  8. forwardable = true
  9. proxiable = true
复制代码

修改为

  1. [libdefaults]
  2. renew_lifetime = 7d
  3. forwardable = true
  4. default_realm = EXAMPLE.COM
  5. ticket_lifetime = 24h
  6. dns_lookup_realm = false
  7. dns_lookup_kdc = false
  8. default_ccache_name = /tmp/krb5cc_%{uid}
复制代码

2、设置realms属性
找到[realms]行,举行以下修改

  1. [realms]
  2. EXAMPLE.COM = {
  3. kdc = 192.168.0.2
  4. admin_server = 192.168.0.2
  5. }
复制代码

修改为

  1. [realms]
  2. EXAMPLE.COM = {
  3. admin_server = 192.168.0.2
  4. kdc = 192.168.0.2
  5. max_renewable_life = 30m
  6. database_module = openldap_ldapconf
  7. supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
  8. }
复制代码

3、设置domain_realm属性
找到[domain_realm]行,举行以下修改

  1. [domain_realm]
  2. .mit.edu = ATHENA.MIT.EDU
  3. mit.edu = ATHENA.MIT.EDU
  4. .media.mit.edu = MEDIA-LAB.MIT.EDU
  5. media.mit.edu = MEDIA-LAB.MIT.EDU
  6. .csail.mit.edu = CSAIL.MIT.EDU
  7. csail.mit.edu = CSAIL.MIT.EDU
  8. .whoi.edu = ATHENA.MIT.EDU
  9. whoi.edu = ATHENA.MIT.EDU
  10. .stanford.edu = stanford.edu
  11. .slac.stanford.edu = SLAC.STANFORD.EDU
  12. .toronto.edu = UTORONTO.CA
  13. .utoronto.ca = UTORONTO.CA
复制代码

修改为

  1. [domain_realm]
  2. .example.com = EXAMPLE.COM
  3. example.com = EXAMPLE.COM
  4. kdc.example.com = EXAMPLE.COM
  5. client.example.com = EXAMPLE.COM
复制代码

4、添加以下属性

  1. [logging]
  2. default = FILE:/home/ldap/log/krb5libs.log
  3. kdc = FILE:/home/ldap/log/krb5kdc.log
  4. admin_server = FILE:/home/ldap/log/kadmind.log
  5. [dbdefaults]
  6. ldap_kerberos_container_dn = cn=kerberos,dc=example,dc=com
  7. [dbmodules]
  8. openldap_ldapconf = {
  9. db_library = kldap
  10. ldap_servers = ldapi://
  11. ldap_kerberos_container_dn = cn=kerberos,dc=example,dc=com
  12. ldap_kdc_dn = cn=root,dc=example,dc=com
  13. ldap_kadmind_dn = cn=root,dc=example,dc=com
  14. ldap_service_password_file = /etc/krb5.ldap
  15. ldap_conns_per_server = 5
  16. }
复制代码
【注意】
1、ldap_kdc_dn 对应 Kerberos 访问 LDAP 数据库时的服务帐号,需要有读权限
2、ldap_kadmind_dn 对应 Kerberos 访问 LDAP 数据库时的管理帐号,需要有读写权限
3、此处为了简单方便,同一用cn=root,dc=example,dc=com一个举行管理
4、ldap_kerberos_container_dn 必须以 'cn'开头

6.2.1、设置/var/kerberos/krb5kdc/kdc.conf文件

在默认环境下supported_enctypes默认利用aes256-cts。由于,JAVA利用aes256-cts验证方式需要安装额外的jar包,保举不利用。以是需要针对aes256-cts举行修改。

  1. vim /var/kerberos/krb5kdc/kdc.conf
复制代码

将下面内:

  1. [kdcdefaults]
  2. kdc_ports = 88
  3. kdc_tcp_ports = 88
  4. [realms]
  5. EXAMPLE.COM = {
  6. master_key_type = aes256-cts
  7. master_key_type = des-hmac-sha1
  8. default_principal_flags = +preauth
  9. acl_file = /var/kerberos/krb5kdc/kadm5.acl
  10. dict_file = /usr/share/dict/words
  11. admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  12. supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
  13. }
复制代码

注释:master_key_type = aes256-cts
删除:aes256-cts:normal

  1. [kdcdefaults]
  2. kdc_ports = 88
  3. kdc_tcp_ports = 88
  4. [realms]
  5. EXAMPLE.COM = {
  6. #master_key_type = aes256-cts
  7. master_key_type = des-hmac-sha1
  8. default_principal_flags = +preauth
  9. acl_file = /var/kerberos/krb5kdc/kadm5.acl
  10. dict_file = /usr/share/dict/words
  11. admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  12. supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
  13. }
复制代码

6.3、LDAP增长kerberos用户

6.3.1、创建LDAP数据库(用于后续整合)

1、查看干系默认配置
由于安装LDAP时,利用的是HDB数据库,以是在/etc/openldap/slapd.d/cn=config目次查看olcDatabase={2}hdb.ldif文件中的一些干系默认配置

  1. cat /etc/openldap/slapd.d/cn\=config/olcDatabase={2}hdb.ldif
复制代码

(未执行4.6.1、变更数据库)内容如下:

  1. # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
  2. # CRC32 e34ca519
  3. dn: olcDatabase={2}hdb
  4. objectClass: olcDatabaseConfig
  5. objectClass: olcHdbConfig
  6. olcDatabase: {2}hdb
  7. olcDbDirectory: /var/lib/ldap
  8. olcSuffix: dc=my-domain,dc=com
  9. olcRootDN: cn=Manager,dc=my-domain,dc=com
  10. olcDbIndex: objectClass eq,pres
  11. olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
  12. structuralObjectClass: olcHdbConfig
  13. entryUUID: 9d13466a-6c7c-1038-94b9-edef98ed6f69
  14. creatorsName: cn=config
  15. createTimestamp: 20181025083503Z
  16. entryCSN: 20181025083503.782735Z#000000#000#000000
  17. modifiersName: cn=config
  18. modifyTimestamp: 20181025083503Z
复制代码

(未执行4.6.1、变更数据库)此中以下内容是下面步骤所需要的关键:

  1. olcSuffix: dc=my-domain,dc=com
  2. olcRootDN: cn=Manager,dc=my-domain,dc=com
复制代码

(执行4.6.1、变更数据库是以下内容)此中以下内容是下面步骤所需要的关键:

  1. olcSuffix: dc=example,dc=com
  2. olcRootDN: uid=admin,ou=people,dc=example,dc=com
复制代码

需要改为,但是不能直接改此处文件,根据后续步骤举行修改

  1. olcSuffix: dc=example,dc=com
  2. olcRootDN: uid=ldapadmin,ou=people,dc=example,dc=com
复制代码

  1. olcSuffix: dc=example,dc=com
  2. olcRootDN: uid=admin,ou=people,dc=example,dc=com
复制代码

2、创建数据库信息
创建数据库信息文件modify.ldif

  1. vim /home/ldap/modify.ldif
复制代码

文件内容如下:

  1. dn: olcDatabase={2}hdb,cn=config
  2. changetype: modify
  3. replace: olcSuffix
  4. olcSuffix: dc=example,dc=com
  5. dn: olcDatabase={2}hdb,cn=config
  6. changetype: modify
  7. replace: olcRootDN
  8. # Temporary lines to allow initial setup
  9. olcRootDN: uid=ldapadmin,ou=people,dc=example,dc=com
  10. dn: olcDatabase={2}hdb,cn=config
  11. changetype: modify
  12. add: olcRootPW
  13. olcRootPW: 12345678
  14. dn: cn=config
  15. changetype: modify
  16. add: olcAuthzRegexp
  17. olcAuthzRegexp: uid=([^,]*),cn=GSSAPI,cn=auth uid=$1,ou=people,dc=example,dc=com
  18. dn: olcDatabase={2}hdb,cn=config
  19. changetype: modify
  20. add: olcAccess
  21. # Everyone can read everything
  22. olcAccess: {0}to dn.base="" by * read
  23. # The ldapadm dn has full write access
  24. olcAccess: {1}to * by dn="uid=ldapadmin,ou=people,dc=example,dc=com" by dn="cn=root,dc=example,dc=com" write by * read
复制代码

3、载入数据库配置信息

  1. ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/ldap/modify.ldif
复制代码

过程如下:

[root@duke ldap]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/ldap/modify.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"
modifying entry "olcDatabase={1}mdb,cn=config"
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Inappropriate matching (18)
additional info: modify/add: olcRootPW: no equality matching rule

在执行过程中报错,密码不能够被配置,配置文件编写不对。修改方法如下:
将modify.ldif文件中的下面内容:

  1. dn: olcDatabase={1}mdb,cn=config
  2. changetype: modify
  3. add: olcRootPW
  4. olcRootPW: 12345678
复制代码

修改为

  1. dn: olcDatabase={1}mdb,cn=config
  2. changetype: modify
  3. replace: olcRootPW
  4. olcRootPW: 12345678
复制代码

再次执行,过程如下:

[root@duke ldap]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/ldap/modify.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"
modifying entry "olcDatabase={1}mdb,cn=config"
modifying entry "olcDatabase={1}mdb,cn=config"
modifying entry "cn=config"
modifying entry "olcDatabase={1}mdb,cn=config"

注明:cn=root,dc=example,dc=com授权,以便整合Kerberos利用

6.3.2、创建数据库数据

数据库配置完成,但是没有数据,需要添加数据。
可以手动编写 ldif 文件来导入一些用户和组。
也可以利用 migrationtools 工具来天生 ldif 模板。
此处接纳ldif文件配置方法来新增数据。
1、setup.ldif文件

  1. vim /home/ldap/setup.ldif
复制代码

添加内容如下:

  1. dn: dc=example,dc=com
  2. objectClass: top
  3. objectClass: dcObject
  4. objectclass: organization
  5. o: example com
  6. dc: example
  7. dn: ou=people,dc=example,dc=com
  8. objectclass: organizationalUnit
  9. ou: people
  10. description: Users
  11. dn: ou=Groups,dc=example,dc=com
  12. objectClass: organizationalUnit
  13. ou: Groups
  14. dn: uid=ldapadmin,ou=people,dc=example,dc=com
  15. objectClass: inetOrgPerson
  16. objectClass: posixAccount
  17. objectClass: shadowAccount
  18. cn: LDAP admin account
  19. uid: ldapadmin
  20. sn: ldapadmin
  21. uidNumber: 10001
  22. gidNumber: 5000
  23. homeDirectory: /home/ldap/ldapadmin
  24. loginShell: /bin/bash
复制代码

2、载入数据

  1. ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/setup.ldif
复制代码

如果执行过程中报以下错误,是由于在按文档利用过程中,已经按照4.6.1章节创建了数据库数据信息,导致部门数据已经存在,以是无法创建成功。没有按照4.6.1章节利用,直接按照本章节利用是可以成功的。

  1. [root@duke ldap]# ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/setup.ldif
  2. adding new entry "dc=example,dc=com"
  3. ldap_add: Already exists (68)
复制代码

为了办理上面题目,setup.ldif文件修改为以下内容:

  1. dn: ou=people,dc=example,dc=com
  2. objectclass: organizationalUnit
  3. ou: people
  4. description: Users
  5. dn: ou=Groups,dc=example,dc=com
  6. objectClass: organizationalUnit
  7. ou: Groups
  8. dn: uid=ldapadmin,ou=people,dc=example,dc=com
  9. objectClass: inetOrgPerson
  10. objectClass: posixAccount
  11. objectClass: shadowAccount
  12. cn: LDAP admin account
  13. uid: ldapadmin
  14. sn: ldapadmin
  15. uidNumber: 10001
  16. gidNumber: 5000
  17. homeDirectory: /home/ldap/ldapadmin
  18. loginShell: /bin/bash
复制代码

再次执行过程如下:

  1. [root@duke ldap]# ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/setup.ldif
  2. adding new entry "uid=ldapadmin,ou=people,dc=example,dc=com"
复制代码
【注意】:-w 12345678 体现的是设置密码为12345678,此处的密码没有在配置文件中设置,用的是下令输入方式,这样可以制止密码泄漏

3、验证数据
在http://192.168.0.2/phpldapadmin页面利用uid=ldapadmin,ou=people,dc=example,dc=com用户举行登录,如果登录成功即体现数据库数据添加成功。如下页面:

095013dwuv9pro4v8prn9p.png

095014wt7s7opvspxv5pul.png


6.3.3、导入linux体系用户

若要将 /etc/passwd, /etc/shadow, /etc/groups 中天生 ldif 更新 ldap 数据库,就需要用到 migrationtools 工具。
1、安装migrationtools

  1. apt-get install migrationtools
复制代码

过程如下:

  1. [root@duke ldap]# yum install migrationtools -y
  2. 已加载插件:fastestmirror, langpacks
  3. base | 3.6 kB 00:00:00
  4. extras | 3.4 kB 00:00:00
  5. updates | 3.4 kB 00:00:00
  6. updates/7/x86_64/primary_db | 6.0 MB 00:00:00
  7. Loading mirror speeds from cached hostfile
  8. 正在办理依靠关系
  9. --> 正在检查事件
  10. ---> 软件包 migrationtools.noarch.0.47-15.el7 将被 安装
  11. --> 办理依靠关系完成
  12. 依靠关系办理
  13. ==================================================================================================================================================================================================================
  14. Package 架构 版本 源 巨细
  15. ==================================================================================================================================================================================================================
  16. 正在安装:
  17. migrationtools noarch 47-15.el7 base 26 k
  18. 事件概要
  19. ==================================================================================================================================================================================================================
  20. 安装 1 软件包
  21. 总下载量:26 k
  22. 安装巨细:106 k
  23. Downloading packages:
  24. migrationtools-47-15.el7.noarch.rpm | 26 kB 00:00:00
  25. Running transaction check
  26. Running transaction test
  27. Transaction test succeeded
  28. Running transaction
  29. 正在安装 : migrationtools-47-15.el7.noarch 1/1
  30. 验证中 : migrationtools-47-15.el7.noarch 1/1
  31. 已安装:
  32. migrationtools.noarch 0:47-15.el7
  33. 完毕!
复制代码

2、修改默认配置
利用迁移工具天生模板,但是需要先修改默认的配置:

  1. vim /usr/share/migrationtools/migrate_common.ph
复制代码

将下面内容

  1. \# Default DNS domain
  2. $DEFAULT_MAIL_DOMAIN = "padl.com";
  3. \# Default base
  4. $DEFAULT_BASE = "dc=padl,dc=com";
复制代码

修改为

  1. \# Default DNS domain
  2. $DEFAULT_MAIL_DOMAIN = "example.com";
  3. \# Default base
  4. $DEFAULT_BASE = "dc=example,dc=com";
复制代码

3、天生文件模板

  1. /usr/share/migrationtools/migrate_base.pl > /home/ldap/base.ldif
复制代码

4、导入下令
根据需求更改上面文件内容,然后执行下面语句,即可把linux用户导入到LDAP中

  1. ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/base.ldif
复制代码

当然你可能会碰到下面错误,这是由于天生的base.ldif文件中,有已经存在于LDAP的用户信息,以是导无法加载成功。

[root@duke ldap]# ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/base.ldif
adding new entry "dc=example,dc=com"
ldap_add: Already exists (68)

修改方法如下,删除已经存在的用户信息即可,原始内容如下:

  1. dn: dc=example,dc=com
  2. dc: example
  3. objectClass: top
  4. objectClass: domain
  5. dn: ou=Services,dc=example,dc=com
  6. ou: Services
  7. objectClass: top
  8. objectClass: organizationalUnit
  9. dn: ou=Rpc,dc=example,dc=com
  10. ou: Rpc
  11. objectClass: top
  12. objectClass: organizationalUnit
  13. dn: ou=people,dc=example,dc=com
  14. ou: people
  15. objectClass: top
  16. objectClass: organizationalUnit
  17. dn: ou=Networks,dc=example,dc=com
  18. ou: Networks
  19. objectClass: top
  20. objectClass: organizationalUnit
  21. dn: nisMapName=netgroup.byuser,dc=example,dc=com
  22. nismapname: netgroup.byuser
  23. objectClass: top
  24. objectClass: nisMap
  25. dn: ou=Aliases,dc=example,dc=com
  26. ou: Aliases
  27. objectClass: top
  28. objectClass: organizationalUnit
  29. dn: ou=Protocols,dc=example,dc=com
  30. ou: Protocols
  31. objectClass: top
  32. objectClass: organizationalUnit
  33. dn: ou=Netgroup,dc=example,dc=com
  34. ou: Netgroup
  35. objectClass: top
  36. objectClass: organizationalUnit
  37. dn: ou=Group,dc=example,dc=com
  38. ou: Group
  39. objectClass: top
  40. objectClass: organizationalUnit
  41. dn: ou=Mounts,dc=example,dc=com
  42. ou: Mounts
  43. objectClass: top
  44. objectClass: organizationalUnit
  45. dn: ou=Hosts,dc=example,dc=com
  46. ou: Hosts
  47. objectClass: top
  48. objectClass: organizationalUnit
  49. dn: nisMapName=netgroup.byhost,dc=example,dc=com
  50. nismapname: netgroup.byhost
  51. objectClass: top
  52. objectClass: nisMap
复制代码

修改为

  1. dn: ou=Services,dc=example,dc=com
  2. ou: Services
  3. objectClass: top
  4. objectClass: organizationalUnit
  5. dn: ou=Rpc,dc=example,dc=com
  6. ou: Rpc
  7. objectClass: top
  8. objectClass: organizationalUnit
  9. dn: ou=Networks,dc=example,dc=com
  10. ou: Networks
  11. objectClass: top
  12. objectClass: organizationalUnit
  13. dn: nisMapName=netgroup.byuser,dc=example,dc=com
  14. nismapname: netgroup.byuser
  15. objectClass: top
  16. objectClass: nisMap
  17. dn: ou=Aliases,dc=example,dc=com
  18. ou: Aliases
  19. objectClass: top
  20. objectClass: organizationalUnit
  21. dn: ou=Protocols,dc=example,dc=com
  22. ou: Protocols
  23. objectClass: top
  24. objectClass: organizationalUnit
  25. dn: ou=Netgroup,dc=example,dc=com
  26. ou: Netgroup
  27. objectClass: top
  28. objectClass: organizationalUnit
  29. dn: ou=Group,dc=example,dc=com
  30. ou: Group
  31. objectClass: top
  32. objectClass: organizationalUnit
  33. dn: ou=Mounts,dc=example,dc=com
  34. ou: Mounts
  35. objectClass: top
  36. objectClass: organizationalUnit
  37. dn: ou=Hosts,dc=example,dc=com
  38. ou: Hosts
  39. objectClass: top
  40. objectClass: organizationalUnit
  41. dn: nisMapName=netgroup.byhost,dc=example,dc=com
  42. nismapname: netgroup.byhost
  43. objectClass: top
  44. objectClass: nisMap
复制代码

执行过程如下:

[root@duke ldap]# ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/base.ldif
adding new entry "ou=Services,dc=example,dc=com"
adding new entry "ou=Rpc,dc=example,dc=com"
adding new entry "ou=Networks,dc=example,dc=com"
adding new entry "nisMapName=netgroup.byuser,dc=example,dc=com"
adding new entry "ou=Aliases,dc=example,dc=com"
adding new entry "ou=Protocols,dc=example,dc=com"
adding new entry "ou=Netgroup,dc=example,dc=com"
adding new entry "ou=Group,dc=example,dc=com"
adding new entry "ou=Mounts,dc=example,dc=com"
adding new entry "ou=Hosts,dc=example,dc=com"
adding new entry "nisMapName=netgroup.byhost,dc=example,dc=com"

导入后页面展示结果如下:

095014q0ewy97n49323f0u.png

5、导入指定的用户
可以举行批量导入用户,也可以指定导入用户,利用如下:
①、创建体系用户test并设置密码为test

  1. useradd test
复制代码

②、查看用户是否创建成功,并导入到指定文件

  1. grep -E "test" /etc/passwd >/home/ldap/test_userinfo.txt
复制代码

③、转换test信息为ldif文件

  1. /usr/share/migrationtools/migrate_passwd.pl /home/ldap/test_userinfo.txt /home/ldap/test_userinfo.ldif
复制代码

④、导入体系

  1. ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/test_userinfo.ldif
复制代码

过程如下:

[root@duke ldap]# ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/test_userinfo.ldif
adding new entry "uid=test,ou=people,dc=example,dc=com"

⑤、将用户组导入到指定文件

  1. grep -E "test" /etc/group >/home/ldap/test_groupinfo.txt
复制代码

⑥、转换组信息为ldif文件

  1. /usr/share/migrationtools/migrate_group.pl /home/ldap/test_groupinfo.txt /home/ldap/test_groupinfo.ldif
复制代码

⑦、导入到体系

  1. ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/test_groupinfo.ldif
复制代码

过程如下:

[root@duke ldap]# ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/test_groupinfo.ldif
adding new entry "cn=test,ou=Group,dc=example,dc=com"

6.3.4、LDAP利用指令(知识点,共同6.3.2章节新建的test用户利用)

1、查询
查询新添加的 test 用户:

  1. ldapsearch -LLL -x -D 'uid=ldapadmin,ou=people,dc=example,dc=com' -w 12345678 -b 'dc=example,dc=com' 'uid=test'
复制代码

过程如下:

[root@duke ldap]# ldapsearch -LLL -x -D 'uid=ldapadmin,ou=people,dc=example,dc=com' -w 12345678 -b 'dc=example,dc=com' 'uid=test'
dn: uid=test,ou=people,dc=example,dc=com
uid: test
cn: test
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQ2JC56ZzI4a0JtJFNaeFlJV3Q1TjlBT2hlaHpOQThJN1RZYWFiVlZ
4Y1oxcUNjb2xncmN2cUg4dmpCRXlGUjJObkJmckVsb29DSmxIaGkwZURZMjZvYnphL2dXM0hEVXQv
shadowLastChange: 17823
shadowMax: 99999
shadowWarning: 7
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/test

2、修改
用户添加好以后,需要给其设定初始密码,运行下令如下:

  1. ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=example,dc=com' -w 12345678 "uid=test,ou=people,dc=example,dc=com" -S
复制代码

过程如下:

[root@duke ldap]# ldappasswd -x -D 'uid=ldapadmin,ou=people,dc=example,dc=com' -w 12345678 "uid=test,ou=people,dc=example,dc=com" -S
New password: 12345678
Re-enter new password:12345678

页面查看如下:

095015otpx35459rr99r54.png


利用test用户登录页面查看如下:
登录密码是12345678
095016ao25o7xcr8oz5tjm.png

3、删除(知识点)
不要执行删除test用户,第7章节会用到
删除用户:

  1. ldapdelete -x -w 12345678 -D'uid=ldapadmin,ou=people,dc=example,dc=com' "uid=test,ou=people,dc=example,dc=com"
复制代码

删除用户组:

  1. ldapdelete -x -w 12345678 -D'uid=ldapadmin,ou=people,dc=example,dc=com' "cn=test,ou=group,dc=example,dc=com"
复制代码

6.3.5、创建kerberos用户

1、新建user.ldif文件

  1. vim /home/ldap/user.ldif
复制代码

该文件用户ldap配置kerberos所要用到的用户信息,文件内容如下:

  1. dn: cn=kerberos,dc=example,dc=com
  2. cn: kerberos
  3. objectClass: organizationalRole
  4. dn: cn=root,dc=example,dc=com
  5. cn: root
  6. userPassword:: e1NTSEF9dnJmZXBqQ0lmUHowL1ppL0ZRU2s2RlI3R3VyTWRZeFUK
  7. objectClass: simpleSecurityObject
  8. objectClass: organizationalRole
复制代码
【注意】:
上面userPassword:: e1NTSEF9dnJmZXBqQ0lmUHowL1ppL0ZRU2s2RlI3R3VyTWRZeFUK 中的密码天生是通过下面指令得到
1、-s背面的是密码
2、| base64背面的是密码编码格式
3、不同机器上的密码必须重新天生一次
4、每次加密密码只能利用一次
  1. slappasswd -s 12345678 | base64
复制代码

执行过程如下

[root@duke ldap]# slappasswd -s 12345678 | base64
e1NTSEF9dnJmZXBqQ0lmUHowL1ppL0ZRU2s2RlI3R3VyTWRZeFUK

2、载入用户信息

  1. ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/user.ldif
复制代码

执行过程如下:

[root@duke ldap]# ldapadd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 -f /home/ldap/user.ldif
adding new entry "cn=kerberos,dc=example,dc=com"
adding new entry "cn=root,dc=example,dc=com"

3、管理员修改普通用户的密码
将cn=root,dc=example,dc=com用户密码修改为:root

  1. ldappasswd -x -D "uid=ldapadmin,ou=people,dc=example,dc=com" -w 12345678 "cn=root,dc=example,dc=com" -s root
复制代码

6.3.5、天生kerberos访问ldap的服务密码文件

由于Kerberos 需要有 ldap_kdc_dn 和 ldap_kadmind_dn 的密码才能访问 LDAP数据库,执行以下下令:

  1. kdb5_ldap_util -D uid=ldapadmin,ou=people,dc=example,dc=com -w 12345678 stashsrvpw -f /etc/krb5.ldap cn=root,dc=example,dc=com
  2. cat /etc/krb5.ldap
复制代码

过程如下:

[root@duke ldap]# kdb5_ldap_util -D uid=ldapadmin,ou=people,dc=example,dc=com -w 12345678 stashsrvpw -f /etc/krb5kdc/service.keyfile cn=root,dc=example,dc=com
Password for "cn=root,dc=example,dc=com": 输入密码:12345678
Re-enter password for "cn=root,dc=example,dc=com": 确认密码:12345678
[root@duke ldap]# cat /etc/krb5.ldap
cn=root,dc=example,dc=com#{HEX}3132333435363738

6.3.6、创建kerberos数据库

  1. kdb5_ldap_util -D uid=ldapadmin,ou=people,dc=example,dc=com -w 12345678 -H ldapi:// create -r EXAMPLE.COM -s
复制代码

过程如下

[root@duke ldap]# kdb5_ldap_util -D uid=ldapadmin,ou=people,dc=example,dc=com -w 12345678 -H ldapi:// create -r EXAMPLE.COM -s
Initializing database for realm 'EXAMPLE.COM' 初始化'EXAMPLE.COM'域的数据库
You will be prompted for the database Master Password.输入数据库主密码
It is important that you NOT FORGET this password.请勿忘记此密码,这一点很重要
Enter KDC database master key: 输入密码:12345678
Re-enter KDC database master key to verify:输入确认密码:12345678

6.3.7、重启Kerberos

  1. service krb5-kdc restart
  2. service krb5-admin-server restart
复制代码

6.3.8、测试kerberos和ldap是否整合成功(非必要利用,可以不做)

1、添加用户

  1. kadmin.local
复制代码

添加一个test用户
过程如下:

[root@duke ldap]# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local: addprinc test 如果要添加test用户,必须在test前输入 addprinc 关键字
WARNING: no policy specified for test@EXAMPLE.COM; defaulting to no policy
Enter password for principal "test@EXAMPLE.COM": 输入test用户密码:test
Re-enter password for principal "test@EXAMPLE.COM": >确认test用户密码:test
Principal "test@EXAMPLE.COM" created.

2、检查是否添加成功

  1. slapcat |grep "test"
复制代码

过程如下:

[root@duke ldap]# slapcat |grep "test"
dn: krbPrincipalName=test@EXAMPLE.COM,cn=EXAMPLE.COM,cn=kerberos,dc=example,
krbPrincipalName: test@EXAMPLE.COM

3、检查ldap页面是否添加成功

095017kn2lwlnv7bj5dlvj.png

4、删除用户
此处不删除,会影响背面章节利用
过程如下:

root@yita-211:/etc# kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local: delete_principal test 如果要删除test用户,必须在test前输入 delete_principal 关键字

7、Kerberos+LDAP认证整合

确保Kerberos和LDAP已经配置,即完成前6章的内容

7.1、接纳该 LDAP作为用户认证。

1、先按照6.3.3章节的第5小点举行利用,添加test用户

2、只需要对用户 uid=test,ou=people,dc=example,dc=com 添加 userPassword成员即可。
如果通过 下令行添加,需要先预备test.ldif文件(userPassword对应的密码为12345678),内容如下:

  1. dn: uid=test,ou=people,dc=example,dc=com
  2. changetype: modify
  3. replace: userPassword
  4. userPassword:: e1NTSEF9ZmtrZzNrOUUrY08rTS9CejFza0FhVk9TV3dZVlZ6akkK
复制代码

然后执行下令

  1. ldapmodify -x -D 'cn=root,dc=example,dc=com' -w root -h 192.168.0.2 -f /home/ldap/test.ldif
复制代码

执行过程如下:

[root@duke ldap]# vi test.ldif
dn: uid=test,ou=people,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword:: e1NTSEF9ZmtrZzNrOUUrY08rTS9CejFza0FhVk9TV3dZVlZ6akkK
"test.ldif" 4L, 146C 已写入
[root@duke ldap]# ldapmodify -x -D 'cn=root,dc=example,dc=com' -w root -h 192.168.0.2 -f /home/ldap/test.ldif
modifying entry "uid=test,ou=people,dc=example,dc=com"

3、确认是否成功

  1. ldapsearch -x -D 'uid=test,ou=people,dc=example,dc=com' -w 123456 192.168.0.2 -b 'ou=people,dc=example,dc=com'
复制代码

执行过程如下

  1. [root@duke ldap]# ldapsearch -x -D 'uid=test,ou=people,dc=example,dc=com' -w 12345678 192.168.0.2 -b 'ou=people,dc=example,dc=com'
  2. # extended LDIF
  3. #
  4. # LDAPv3
  5. # base <ou=people,dc=example,dc=com> with scope subtree
  6. # filter: (objectclass=*)
  7. # requesting: 127.0.0.1
  8. #
  9. # people, example.com
  10. dn: ou=people,dc=example,dc=com
  11. # test, people, example.com
  12. dn: uid=test,ou=people,dc=example,dc=com
  13. # ldapadmin, people, example.com
  14. dn: uid=ldapadmin,ou=people,dc=example,dc=com
  15. # search result
  16. search: 2
  17. result: 0 Success
  18. # numResponses: 4
  19. # numEntries: 3
复制代码

7.2、利用 Kerberos 认证。

需要将用户的密码域做如下修改:

1、userPassword 对应的密码天生:

  1. echo -n "{SASL}test@EXAMPLE.COM" | base64
复制代码

过程如下:

[root@duke ldap]# echo -n "{SASL}test@EXAMPLE.COM" | base64
e1NBU0x9dGVzdEBFWEFNUExFLkNPTQ==

2、编写修改test用户的密码的test2.ldif文件

  1. <code >dn: uid=test,ou=people,dc=example,dc=com
  2. changetype: modify
  3. replace: userPassword
  4. userPassword:: e1NBU0x9dGVzdEBFWEFNUExFLkNPTQ==
  5. </code>
复制代码

过程如下:

[root@duke ldap]# vi test2.ldif
dn: uid=test,ou=people,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword:: e1NBU0x9dGVzdEBFWEFNUExFLkNPTQ==
"test2.ldif" 4L, 130C 已写入

3、执行应用该修改

  1. ldapmodify -x -D 'cn=root,dc=example,dc=com' -w root -h 192.168.0.2 -f /home/ldap/test2.ldif
复制代码

过程如下:

[root@duke ldap]# ldapmodify -x -D 'cn=root,dc=example,dc=com' -w root -h 192.168.0.2 -f /home/ldap/test2.ldif
modifying entry "uid=test,ou=people,dc=example,dc=com"

7.3、修改saslauthd配置

1、修改配置文件

  1. vim /etc/sysconfig/saslauthd
复制代码

  1. \# Directory in which to place saslauthd's listening socket, pid file, and so
  2. \# on. This directory must already exist.
  3. SOCKETDIR=/run/saslauthd
  4. \# Mechanism to use when checking passwords. Run "saslauthd -v" to get a list
  5. \# of which mechanism your installation was compiled with the ablity to use.
  6. MECH=pam
  7. \# Additional flags to pass to saslauthd on the command line. See saslauthd(8)
  8. \# for the list of accepted flags.
  9. FLAGS=
复制代码

修改为

  1. \# Directory in which to place saslauthd's listening socket, pid file, and so
  2. \# on. This directory must already exist.
  3. SOCKETDIR=/run/saslauthd
  4. \# Mechanism to use when checking passwords. Run "saslauthd -v" to get a list
  5. \# of which mechanism your installation was compiled with the ablity to use.
  6. MECH=kerberos5
  7. \# Additional flags to pass to saslauthd on the command line. See saslauthd(8)
  8. \# for the list of accepted flags.
  9. FLAGS=
复制代码

2、重启saslauthd

  1. service saslauthd restart
复制代码

3、创建ldap配置文件

  1. vim /etc/sasl2/slapd.conf文件
复制代码

内容:

  1. pwcheck_method: saslauthd
复制代码

过程如下

[root@duke ldap]# vim /etc/sasl2/slapd.conf
pwcheck_method: saslauthd
"/etc/sasl2/slapd.conf" 1L, 26C 已写入

4、重启ldap

  1. service slapd restart
复制代码

5、查看saslauthd是否报错

  1. service saslauthd status -l
复制代码

执行过程如下:

  1. [root@duke ldap]# service saslauthd status -l
  2. Redirecting to /bin/systemctl status -l saslauthd.service
  3. ● saslauthd.service - SASL authentication daemon.
  4. Loaded: loaded (/usr/lib/systemd/system/saslauthd.service; disabled; vendor preset: disabled)
  5. Active: active (running) since 四 2018-10-25 19:54:47 CST; 4 days ago
  6. Main PID: 14333 (saslauthd)
  7. CGroup: /system.slice/saslauthd.service
  8. ├─14333 /usr/sbin/saslauthd -m /run/saslauthd -a kerberos5
  9. ├─14334 /usr/sbin/saslauthd -m /run/saslauthd -a kerberos5
  10. ├─14335 /usr/sbin/saslauthd -m /run/saslauthd -a kerberos5
  11. ├─14336 /usr/sbin/saslauthd -m /run/saslauthd -a kerberos5
  12. └─14337 /usr/sbin/saslauthd -m /run/saslauthd -a kerberos5
  13. 10月 25 19:54:47 test216 systemd[1]: Starting SASL authentication daemon....
  14. 10月 25 19:54:47 test216 saslauthd[14333]: detach_tty : master pid is: 14333
  15. 10月 25 19:54:47 test216 saslauthd[14333]: ipc_init : listening on socket: /run/saslauthd/mux
  16. 10月 25 19:54:47 test216 systemd[1]: Started SASL authentication daemon..
  17. 10月 25 19:55:21 test216 saslauthd[14334]: auth_krb5: krb5_get_init_creds_password: -1765328353
  18. 10月 25 19:55:21 test216 saslauthd[14334]: do_auth : auth failure: [user=test] [service=imap] [realm=] [mech=kerberos5] [reason=saslauthd internal error]
  19. 10月 25 19:55:36 test216 saslauthd[14333]: auth_krb5: krb5_get_init_creds_password: -1765328353
  20. 10月 25 19:55:36 test216 saslauthd[14333]: do_auth : auth failure: [user=test] [service=ldap] [realm=EXAMPLE.COM] [mech=kerberos5] [reason=saslauthd internal error]
复制代码

7.4、增长kerberos的用户配置

执行如下利用:

  1. kadmin.local -q "ank -clearpolicy -randkey host/test216"
  2. kadmin.local -q "ktadd host/test216"
  3. service saslauthd restart
  4. ps -aux | grep saslauthd
  5. kadmin.local -q 'ank -pw 12345678 test'
复制代码
【注意】
1、host/test216中的test216,是服务器名称,不能写成IP
2、ank是add_principal的简写,体现增长
3、-q体现静默,不进入kadmin.local的对话模式
4、-pw 体现设置test密码为12345678

7.5、测试Kerberos+OpenLDAP整合认证是否成功

1、测试kerberos认证

  1. testsaslauthd -u test -p 12345678
复制代码

执行过程如下:

[root@duke ldap]# testsaslauthd -u test -p 12345678
0: OK "Success."

至此, Kerberos 认证测试成功。

2、测试OpenLDAP认证

  1. ldapsearch -x -D 'uid=test,ou=people,dc=example,dc=com' -w 12345678 -h 192.168.0.2 -b 'ou=people,dc=example,dc=com'
复制代码

执行过程如下:

  1. [root@duke ldap]# ldapsearch -x -D 'uid=test,ou=people,dc=example,dc=com' -w 12345678 -h 192.168.0.2 -b 'ou=people,dc=example,dc=com'
  2. # extended LDIF
  3. #
  4. # LDAPv3
  5. # base <ou=people,dc=example,dc=com> with scope subtree
  6. # filter: (objectclass=*)
  7. # requesting: ALL
  8. #
  9. # people, example.com
  10. dn: ou=people,dc=example,dc=com
  11. objectClass: organizationalUnit
  12. ou: people
  13. description: Users
  14. # ldapadmin, people, example.com
  15. dn: uid=ldapadmin,ou=people,dc=example,dc=com
  16. objectClass: inetOrgPerson
  17. objectClass: posixAccount
  18. objectClass: shadowAccount
  19. cn: LDAP admin account
  20. uid: ldapadmin
  21. sn: ldapadmin
  22. uidNumber: 1001
  23. gidNumber: 100
  24. homeDirectory: /home/ldap
  25. loginShell: /bin/bash
  26. # test, people, example.com
  27. dn: uid=test,ou=people,dc=example,dc=com
  28. uid: test
  29. cn: test
  30. objectClass: account
  31. objectClass: posixAccount
  32. objectClass: top
  33. objectClass: shadowAccount
  34. shadowLastChange: 17829
  35. shadowMin: 0
  36. shadowMax: 99999
  37. shadowWarning: 7
  38. loginShell: /bin/bash
  39. uidNumber: 1001
  40. gidNumber: 1001
  41. homeDirectory: /home/test
  42. userPassword:: e1NBU0x9dGVzdEBFWEFNUExFLkNPTQ==
  43. # search result
  44. search: 2
  45. result: 0 Success
  46. # numResponses: 4
  47. # numEntries: 3
复制代码

利用 test的密码12345678到phpLDAPadmin举行登录认证

095018gb3ww3cxkdbb0s3x.png

至此, OpenLDAP 认证测试成功。

3、测试Kerveros+OpenLDAP互通

  • 修改test密码
    过程如下:

    [root@duke ldap]# kpasswd test
    Password for test@EXAMPLE.COM: 输入test原始密码:12345678
    Enter new password: 输入test新密码:123456
    Enter it again: 确认test新密码:123456
    Password changed.

  • Kerveros认证
    过程如下:

    [root@duke ldap]# testsaslauthd -u test -p 123456
    0: OK "Success."

  • OpenLDAP认证

    1. [root@duke ldap]# ldapsearch -x -D 'uid=test,ou=people,dc=example,dc=com' -w 123456 -h 192.168.0.2 -b 'ou=people,dc=example,dc=com'
    2. # extended LDIF
    3. #
    4. # LDAPv3
    5. # base <ou=people,dc=example,dc=com> with scope subtree
    6. # filter: (objectclass=*)
    7. # requesting: ALL
    8. #
    9. # people, example.com
    10. dn: ou=people,dc=example,dc=com
    11. objectClass: organizationalUnit
    12. ou: people
    13. description: Users
    14. # ldapadmin, people, example.com
    15. dn: uid=ldapadmin,ou=people,dc=example,dc=com
    16. objectClass: inetOrgPerson
    17. objectClass: posixAccount
    18. objectClass: shadowAccount
    19. cn: LDAP admin account
    20. uid: ldapadmin
    21. sn: ldapadmin
    22. uidNumber: 1001
    23. gidNumber: 100
    24. homeDirectory: /home/ldap
    25. loginShell: /bin/bash
    26. # test, people, example.com
    27. dn: uid=test,ou=people,dc=example,dc=com
    28. uid: test
    29. cn: test
    30. objectClass: account
    31. objectClass: posixAccount
    32. objectClass: top
    33. objectClass: shadowAccount
    34. shadowLastChange: 17829
    35. shadowMin: 0
    36. shadowMax: 99999
    37. shadowWarning: 7
    38. loginShell: /bin/bash
    39. uidNumber: 1001
    40. gidNumber: 1001
    41. homeDirectory: /home/test
    42. userPassword:: e1NBU0x9dGVzdEBFWEFNUExFLkNPTQ==
    43. # search result
    44. search: 2
    45. result: 0 Success
    46. # numResponses: 4
    47. # numEntries: 3
    复制代码
  • 利用 test的密码12345678到phpLDAPadmin举行登录认证

至此, Apache+PHP+Kerberos+LDAP+phpLDAPadmin整合互通认证测试成功。

参考

[kadmin用法]
http://manpages.ubuntu.com/manpages/xenial/en/man1/kadmin.1.html

[openldap搭建阐明]
https://help.ubuntu.com/community/OpenLDAPServer

[sldap配置文件阐明]
http://manpages.ubuntu.com/manpages/xenial/en/man5/slapd-config.5.html







来源:https://www.cnblogs.com/hzw97/p/11726988.html
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则