一、安装Apache
1.1、安装Apache
apt-get update
apt-get install apache2
过程如下:
root@duke01:~# apt-get update
命中:1 http://cn.archive.ubuntu.com/ubuntu xenial InRelease
命中:2 http://cn.archive.ubuntu.com/ubuntu xenial-updates InRelease
命中:3 http://cn.archive.ubuntu.com/ubuntu xenial-backports InRelease
命中:4 https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64 InRelease
命中:5 https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/amd64 InRelease
命中:6 https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64 InRelease
命中:7 http://security.ubuntu.com/ubuntu xenial-security InRelease
正在读取软件包列表... 完成
root@duke01:~# apt-get install apache2
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
apache2 已经是最新版 (2.4.18-2ubuntu3.9)。
apache2 已设置为手动安装。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 231 个软件包未被升级。
1.2、Apache安装目录信息
/var/www #Apache默认文档根目录
/etc/apache2 #Apache配置存储目录
/etc/apache2/apache2.conf #Apache配置文件
1.3、配置Apache
1.3.1、将“全局服务器名称”设置为“禁止语法警告”
如果不设置ServerName全球范围内,你会检查语法错误Apache配置时收到以下警告:
apache2ctl configtest #检查语法错误
过程如下:
root@duke01:/# apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
修改/etc/apache2/apache2.conf配置文件,关闭语法警告
过程如下:
root@duke01:/# vi /etc/apache2/apache2.conf # Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet ServerName 10.0.0.55 #在最后一行添加,ip是当前主机IP root@duke01:/# apache2ctl configtest Syntax OK root@duke01:/# systemctl restart apache2 重启Apache
1.3.2、调整防火墙以允许Web流量
- 查看防火墙管理列表
过程如下:ufw app list
root@duke01:/# ufw app list
可用应用程序:
Apache
Apache Full
Apache Secure
CUPS
OpenLDAP LDAP
OpenLDAP LDAPS
OpenSSH - 查看Apache Full使用的端口
过程如下:ufw app info "Apache Full"
root@duke01:/# ufw app info "Apache Full"
配置: Apache Full
标题:Web Server (HTTP,HTTPS)
描述: Apache v2 is the next generation of the omnipresent Apache web server.
端口:80,443/tcp - 防火墙开放Apache
ufw allow in "Apache Full"
root@duke01:/# ufw allow in "Apache Full"
防火墙规则已更新
规则已更新(v6) - 访问Apache
开放防火墙后就可以尝试登陆Apache服务器
界面如下:登陆 http://10.0.0.55/
1.3、Apache命令
启动命令
/etc/init.d/apache2 start
或
systemctl start apache2
停止命令
/etc/init.d/apache2 stop
或
systemctl stop apache2
重启命令
/etc/init.d/apache2 restart
或
systemctl restart apache2
二、安装PHP开发环境
2.1、安装PHP
apt-get install php libapache2-mod-php php-mcrypt
过程如下:
root@duke01:/# apt-get install php libapache2-mod-php php-mcrypt
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
libapache2-mod-php 已经是最新版 (1:7.0+35ubuntu6.1)。
libapache2-mod-php 已设置为手动安装。
将会同时安装下列软件:
libmcrypt4 php7.0 php7.0-mcrypt
建议安装:
libmcrypt-dev mcrypt
下列【新】软件包将被安装:
libmcrypt4 php php-mcrypt php7.0 php7.0-mcrypt
升级了 0 个软件包,新安装了 5 个软件包,要卸载 0 个软件包,有 231 个软件包未被升级。
需要下载 83.6 kB 的归档。
解压缩后会消耗 326 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libmcrypt4 amd64 2.5.8-3.3 [63.0 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 php7.0 all 7.0.32-0ubuntu0.16.04.1 [1,288 B]
获取:3 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 php all 1:7.0+35ubuntu6.1 [2,862 B]
获取:4 http://cn.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 php7.0-mcrypt amd64 7.0.32-0ubuntu0.16.04.1 [14.5 kB]
获取:5 http://cn.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 php-mcrypt all 1:7.0+35ubuntu6.1 [1,934 B]
已下载 83.6 kB,耗时 1秒 (42.5 kB/s)
正在选中未选择的软件包 libmcrypt4。
(正在读取数据库 ... 系统当前共安装有 215502 个文件和目录。)
正准备解包 .../libmcrypt4_2.5.8-3.3_amd64.deb ...
正在解包 libmcrypt4 (2.5.8-3.3) ...
正在选中未选择的软件包 php7.0。
正准备解包 .../php7.0_7.0.32-0ubuntu0.16.04.1_all.deb ...
正在解包 php7.0 (7.0.32-0ubuntu0.16.04.1) ...
正在选中未选择的软件包 php。
正准备解包 .../php_1%3a7.0+35ubuntu6.1_all.deb ...
正在解包 php (1:7.0+35ubuntu6.1) ...
正在选中未选择的软件包 php7.0-mcrypt。
正准备解包 .../php7.0-mcrypt_7.0.32-0ubuntu0.16.04.1_amd64.deb ...
正在解包 php7.0-mcrypt (7.0.32-0ubuntu0.16.04.1) ...
正在选中未选择的软件包 php-mcrypt。
正准备解包 .../php-mcrypt_1%3a7.0+35ubuntu6.1_all.deb ...
正在解包 php-mcrypt (1:7.0+35ubuntu6.1) ...
正在处理用于 libapache2-mod-php7.0 (7.0.32-0ubuntu0.16.04.1) 的触发器 ...
正在设置 libmcrypt4 (2.5.8-3.3) ...
正在设置 php7.0 (7.0.32-0ubuntu0.16.04.1) ...
正在设置 php (1:7.0+35ubuntu6.1) ...
正在设置 php7.0-mcrypt (7.0.32-0ubuntu0.16.04.1) ...
Creating config file /etc/php/7.0/mods-available/mcrypt.ini with new version
正在设置 php-mcrypt (1:7.0+35ubuntu6.1) ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在处理用于 libapache2-mod-php7.0 (7.0.32-0ubuntu0.16.04.1) 的触发器 ...
2.2、配置PHP
2.2.1、配置index.html
修改Apache在请求目录时提供文件的方式。Apache将首先从寻找一个名为index.html文件改为寻找index.php文件。
vim /etc/apache2/mods-enabled/dir.conf
过程如下:
将
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
修改为
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
重启Apache
root@duke01:/# systemctl restart apache2
2.3、安装PHP增强模块
2.3.1、查看PHP功能增强列表
apt-cache search php- | less
过程如下:
root@duke01:~# apt-cache search php- | less
libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
php-ldap - LDAP module for PHP [default]
php-mysql - MySQL module for PHP [default]
php-odbc - ODBC module for PHP [default]
......
php-horde-text-filter-jsmin - Horde Text Filter - Jsmin PHP Driver
php-mythtv - PHP Bindings for MythTV
php7.0-dba - DBA module for PHP
2.3.2、安装增强功能
经过筛选,选择安装php-ldap、php-mbstring
apt-get install php-ldap php-mbstring
过程如下:
root@duke01:~# apt-get install php-ldap php-mbstring
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
php-ldap 已经是最新版 (1:7.0+35ubuntu6.1)。
php-ldap 已设置为手动安装。
下列【新】软件包将被安装:
php-mbstring php7.0-mbstring
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 231 个软件包未被升级。
需要下载 467 kB 的归档。
解压缩后会消耗 1,512 kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 php7.0-mbstring amd64 7.0.32-0ubuntu0.16.04.1 [465 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 php-mbstring all 1:7.0+35ubuntu6.1 [1,940 B]
已下载 467 kB,耗时 2秒 (189 kB/s)
正在选中未选择的软件包 php7.0-mbstring。
(正在读取数据库 ... 系统当前共安装有 215525 个文件和目录。)
正准备解包 .../php7.0-mbstring_7.0.32-0ubuntu0.16.04.1_amd64.deb ...
正在解包 php7.0-mbstring (7.0.32-0ubuntu0.16.04.1) ...
正在选中未选择的软件包 php-mbstring。
正准备解包 .../php-mbstring_1%3a7.0+35ubuntu6.1_all.deb ...
正在解包 php-mbstring (1:7.0+35ubuntu6.1) ...
正在处理用于 libapache2-mod-php7.0 (7.0.32-0ubuntu0.16.04.1) 的触发器 ...
正在设置 php7.0-mbstring (7.0.32-0ubuntu0.16.04.1) ...
Creating config file /etc/php/7.0/mods-available/mbstring.ini with new version
正在设置 php-mbstring (1:7.0+35ubuntu6.1) ...
正在处理用于 libapache2-mod-php7.0 (7.0.32-0ubuntu0.16.04.1) 的触发器 ...
2.4、测试PHP服务
2.4.1、添加测试文件
在/var/www/html下新建一个info.php文件,用于测试PHP是否配置成功
过程如下:
root@duke01:~# vi /var/www/html/info.php
phpinfo();
2.4.2、测试服务状态
在浏览器中输入服务器IP/info.php即可,如下图:
三、安装Kerberos
3.1、清理环境
3.1.1 检查是否安装过kerberos
dpkg -l krb*
过程如下:
root@duke01:~# dpkg -l krb*
期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)
| 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触发器未决(T)
|/ 错误?=(无)/须重装(R) (状态,错误:大写=故障)
||/ 名称 版本 体系结构: 描述
+++-=============================================-===========================-===========================-===============================================================================================
un krb5-doc <无> <无> (无可用描述)
ii krb5-locales 1.13.2+dfsg-5ubuntu2 all Internationalization support for MIT Kerberos
un krb5-user <无> <无> (无可用描述)
3.1.2 删除已经存在的版本
apt-get remove --purge krb* # krb*替换成具体需要删除的文件
过程如下:
root@duke01:~# apt-get remove --purge krb*
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
注意,根据Glob 'krb' 选中了 'krb5-multidev'
注意,根据Glob 'krb' 选中了 'krb5-gss-samples'
注意,根据Glob 'krb' 选中了 'krb5-k5tls'
注意,根据Glob 'krb' 选中了 'krb5-sync'
注意,根据Glob 'krb' 选中了 'krb5-kdc-ldap'
注意,根据Glob 'krb' 选中了 'krb5-pkinit'
注意,根据Glob 'krb' 选中了 'krb5-sync-tools'
注意,根据Glob 'krb' 选中了 'krb5-auth-dialog'
注意,根据Glob 'krb' 选中了 'krb5-locales'
注意,根据Glob 'krb' 选中了 'krb5-admin-server'
注意,根据Glob 'krb' 选中了 'krb5-user'
注意,根据Glob 'krb' 选中了 'krb5-doc'
注意,根据Glob 'krb' 选中了 'krb5-kdc'
注意,根据Glob 'krb' 选中了 'krb5-config'
注意,根据Glob 'krb' 选中了 'krb5-otp'
注意,根据Glob 'krb' 选中了 'krb5-sync-plugin'
注意,根据Glob 'krb' 选中了 'krb5-strength'
软件包 krb5-sync 未安装,所以不会被卸载
软件包 krb5-config 未安装,所以不会被卸载
软件包 krb5-auth-dialog 未安装,所以不会被卸载
软件包 krb5-strength 未安装,所以不会被卸载
软件包 krb5-sync-plugin 未安装,所以不会被卸载
软件包 krb5-sync-tools 未安装,所以不会被卸载
软件包 krb5-doc 未安装,所以不会被卸载
软件包 krb5-multidev 未安装,所以不会被卸载
软件包 krb5-admin-server 未安装,所以不会被卸载
软件包 krb5-gss-samples 未安装,所以不会被卸载
软件包 krb5-k5tls 未安装,所以不会被卸载
软件包 krb5-kdc 未安装,所以不会被卸载
软件包 krb5-kdc-ldap 未安装,所以不会被卸载
软件包 krb5-otp 未安装,所以不会被卸载
软件包 krb5-pkinit 未安装,所以不会被卸载
软件包 krb5-user 未安装,所以不会被卸载
下列软件包将被【卸载】:
krb5-locales
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 232 个软件包未被升级。
解压缩后将会空出 2,830 kB 的空间。
您希望继续执行吗? [Y/n] y
(正在读取数据库 ... 系统当前共安装有 213495 个文件和目录。)
正在卸载 krb5-locales (1.13.2+dfsg-5ubuntu2) ...
3.2、 安装kerberos
apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
过程如下:
root@duke01:~# apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
krb5-config krb5-user
建议安装:
openbsd-inetd | inet-superserver krb5-kdc-ldap
下列【新】软件包将被安装:
krb5-admin-server krb5-config krb5-kdc krb5-user
升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 232 个软件包未被升级。
需要下载 0 B/379 kB 的归档。
解压缩后会消耗 1,342 kB 的额外空间。
您希望继续执行吗? [Y/n]y
正在预设定软件包 ...
输入kerberos服务器地址,多个以空格进行分割:10.0.0.55
正在选中未选择的软件包 krb5-config。
(正在读取数据库 ... 系统当前共安装有 215444 个文件和目录。)
正准备解包 .../krb5-config_2.3_all.deb ...
正在解包 krb5-config (2.3) ...
正在选中未选择的软件包 krb5-user。
正准备解包 .../krb5-user_1.13.2+dfsg-5ubuntu2_amd64.deb ...
正在解包 krb5-user (1.13.2+dfsg-5ubuntu2) ...
正在选中未选择的软件包 krb5-kdc。
正准备解包 .../krb5-kdc_1.13.2+dfsg-5ubuntu2_amd64.deb ...
正在解包 krb5-kdc (1.13.2+dfsg-5ubuntu2) ...
正在选中未选择的软件包 krb5-admin-server。
正准备解包 .../krb5-admin-server_1.13.2+dfsg-5ubuntu2_amd64.deb ...
正在解包 krb5-admin-server (1.13.2+dfsg-5ubuntu2) ...
正在选中未选择的软件包 krb5-kdc-ldap。
正准备解包 .../krb5-kdc-ldap_1.13.2+dfsg-5ubuntu2_amd64.deb ...
正在解包 krb5-kdc-ldap (1.13.2+dfsg-5ubuntu2) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在设置 krb5-config (2.3) ...
Use of uninitialized value $admin in string eq at /var/lib/dpkg/info/krb5-config.config line 171, line 19.
正在设置 krb5-user (1.13.2+dfsg-5ubuntu2) ...
正在设置 krb5-kdc (1.13.2+dfsg-5ubuntu2) ...
正在设置 krb5-admin-server (1.13.2+dfsg-5ubuntu2) ...
正在设置 krb5-kdc-ldap (1.13.2+dfsg-5ubuntu2) ...
正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
【注意】:安装好kerberos后不要急于配置,先安装配置LDAP后在配置kerberos会比较好
四、安装openLDAP
4.1.安装openLDAP
卸载
apt remove --purge slapd ldap-utils
安装
apt-get update
apt-get install slapd ldap-utils
过程如下:
root@duke01:~# apt-get update 命中:1 http://cn.archive.ubuntu.com/ubuntu xenial InRelease 命中:2 http://cn.archive.ubuntu.com/ubuntu xenial-updates InRelease 命中:3 http://cn.archive.ubuntu.com/ubuntu xenial-backports InRelease 命中:4 https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64 InRelease 命中:5 https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/amd64 InRelease 命中:6 https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64 InRelease 命中:7 http://security.ubuntu.com/ubuntu xenial-security InRelease 正在读取软件包列表... 完成 root@duke01:~# apt-get install slapd ldap-utils 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会同时安装下列软件: libldap-2.4-2 libodbc1 libslp1 建议安装: libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libmyodbc odbc-postgresql tdsodbc unixodbc-bin slpd openslp-doc 下列【新】软件包将被安装: ldap-utils libodbc1 libslp1 slapd 下列软件包将被升级: libldap-2.4-2 升级了 1 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 231 个软件包未被升级。 需要下载 1,872 kB 的归档。 解压缩后会消耗 17.1 MB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libldap-2.4-2 amd64 2.4.42+dfsg-2ubuntu3.3 [161 kB] 获取:2 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libodbc1 amd64 2.3.1-4.1 [180 kB] 获取:3 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libslp1 amd64 1.2.1-11ubuntu0.16.04.1 [40.4 kB] 获取:4 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 slapd amd64 2.4.42+dfsg-2ubuntu3.3 [1,369 kB] 获取:5 http://cn.archive.ubuntu.com/ubuntu xenial-updates/main amd64 ldap-utils amd64 2.4.42+dfsg-2ubuntu3.3 [122 kB] 已下载 1,872 kB,耗时 4秒 (410 kB/s) 正在预设定软件包 ...
输入LDAP的管理员密码:duke
确认LDAP的管理员密码:duke (正在读取数据库 ... 系统当前共安装有 213618 个文件和目录。) 正准备解包 .../libldap-2.4-2_2.4.42+dfsg-2ubuntu3.3_amd64.deb ... 正在将 libldap-2.4-2:amd64 (2.4.42+dfsg-2ubuntu3.3) 解包到 (2.4.42+dfsg-2ubuntu3.2) 上 ... 正在选中未选择的软件包 libodbc1:amd64。 正准备解包 .../libodbc1_2.3.1-4.1_amd64.deb ... 正在解包 libodbc1:amd64 (2.3.1-4.1) ... 正在选中未选择的软件包 libslp1:amd64。 正准备解包 .../libslp1_1.2.1-11ubuntu0.16.04.1_amd64.deb ... 正在解包 libslp1:amd64 (1.2.1-11ubuntu0.16.04.1) ... 正在选中未选择的软件包 slapd。
正准备解包 .../slapd_2.4.42+dfsg-2ubuntu3.3_amd64.deb ... 正在解包 slapd (2.4.42+dfsg-2ubuntu3.3) ... 正在选中未选择的软件包 ldap-utils。 正准备解包 .../ldap-utils_2.4.42+dfsg-2ubuntu3.3_amd64.deb ... 正在解包 ldap-utils (2.4.42+dfsg-2ubuntu3.3) ... 正在处理用于 man-db (2.7.5-1) 的触发器 ... 正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ... 正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ... 正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ... 正在处理用于 ureadahead (0.100.0-19) 的触发器 ... 正在设置 libldap-2.4-2:amd64 (2.4.42+dfsg-2ubuntu3.3) ... 正在设置 libodbc1:amd64 (2.3.1-4.1) ... 正在设置 libslp1:amd64 (1.2.1-11ubuntu0.16.04.1) ... 正在设置 slapd (2.4.42+dfsg-2ubuntu3.3) ... Creating new user openldap... done. Creating initial configuration... done. Creating LDAP directory... done. 正在设置 ldap-utils (2.4.42+dfsg-2ubuntu3.3) ... 正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ... 正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ... 正在处理用于 ureadahead (0.100.0-19) 的触发器 ... 正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...
4.2、设置openLDAP
完成安装后,需要重新配置。 slapd软件包有能力提出很多重要的配置问题,但默认情况下,它们将在安装过程中跳过。
通过slapd软件可以系统重新配置包,可以访问所有提示:
dpkg-reconfigure slapd
在这个过程中有很多新的问题需要回答。
过程如下:
root@duke01:~# dpkg-reconfigure slapd
Moving old database directory to /var/backups:
- directory unknown... done.
Creating initial configuration... done.
Creating LDAP directory... done.省略了OpenLDAP服务器配置? 否
此选项将确定目录路径的基本结构。 阅读消息以了解这将如何实现。 即使您不拥有实际的网域,您也可以选择所需的任何值。 但是,本教程假设您具有适当的服务器域名,因此您应该使用它。 我们将在整个教程中使用example.com 。
机构名称?对于本指南,将使用example.com作为我们组织的名称
管理员密码? 输入两次安全密码
4.3、打开防火墙上的LDAP端口
LDAP服务器已配置并运行。 打开防火墙上的LDAP端口,以便外部客户端可以连接:
ufw allow ldap
root@duke01:~# ufw allow ldap
防火墙规则已更新
规则已更新(v6)
4.4、测试LDAP连接
测试与ldapwhoami的LDAP连接,该连接应该返回我们连接的用户名:
ldapwhoami -H ldap:// -x
root@duke01:~# ldapwhoami -H ldap:// -x
anonymous
4.5、检查安装状态
过程如下:
root@duke01:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
dn: cn=configdn: 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@duke01:~# cd /home/
root@duke01:/home# mkdir ldap
root@duke01:/home# cd ldap
root@duke01:/home# vi ldap_init.ldif -
在ldap_init.ldif文件中添加以下内容
dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups
dn: cn=LDAPGroup,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: LDAPGroup
gidNumber: 5000
dn: uid=han,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: han
sn: zhiwei
givenName: Han
cn: Han ZhiWei
displayName: Han ZhiWei
uidNumber: 10000
gidNumber: 5000
userPassword: hanzhiwei
gecos: Han ZhiWei
loginShell: /bin/bash
homeDirectory: /home/ldap/han
【注意】:文件中的uidNumber、gidNumber这2个值不能和系统中的已经存在的值冲突,所以最好采用高数值来进行区分。
相关的值可以在/etc/passwd和/etc/group文件中进行查询
- 将用户信息加入到LDAP中
过程如下:ldapadd -x -D cn=admin,dc=example,dc=com -W -f ldap_init.ldif
root@duke01:/home/ldap# ls
ldap_init.ldif
root@duke01:/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、检查节点、组、用户是否添加正确
ldapsearch -x -LLL -b dc=example,dc=com 'uid=han' cn gidNumber
过程如下:
root@duke01:/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
apt-get install phpldapadmin
过程如下:
root@duke01:~# apt-get install phpldapadmin
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php libapache2-mod-php7.0 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 php-common php-ldap php-xml php7.0-cli
php7.0-common php7.0-json php7.0-ldap php7.0-opcache php7.0-readline php7.0-xml
建议安装:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom php-pear
下列【新】软件包将被安装:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php libapache2-mod-php7.0 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 php-common php-ldap php-xml php7.0-cli
php7.0-common php7.0-json php7.0-ldap php7.0-opcache php7.0-readline php7.0-xml phpldapadmin
升级了 0 个软件包,新安装了 22 个软件包,要卸载 0 个软件包,有 231 个软件包未被升级。
需要下载 5,871 kB 的归档。
解压缩后会消耗 25.9 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libapr1 amd64 1.5.2-3 [86.0 kB]
......
获取:22 http://cn.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 phpldapadmin all 1.2.2-5.2ubuntu2.1 [727 kB]
已下载 5,871 kB,耗时 3秒 (1,888 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 libapr1:amd64。
(正在读取数据库 ... 系统当前共安装有 213938 个文件和目录。)
正准备解包 .../libapr1_1.5.2-3_amd64.deb ...
正在解包 libapr1:amd64 (1.5.2-3) ...
......
正在设置 apache2-data (2.4.18-2ubuntu3.9) ...
正在设置 apache2 (2.4.18-2ubuntu3.9) ...
Enabling module mpm_event.
......
Enabling site 000-default.
正在设置 php-common (1:35ubuntu6.1) ...
正在设置 php7.0-common (7.0.32-0ubuntu0.16.04.1) ...Creating config file /etc/php/7.0/mods-available/calendar.ini with new version
......
Creating config file /etc/php/7.0/mods-available/tokenizer.ini with new version
正在设置 php7.0-json (7.0.32-0ubuntu0.16.04.1) ...
......
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...
正在处理用于 libapache2-mod-php7.0 (7.0.32-0ubuntu0.16.04.1) 的触发器 ...
5.2、配置phpLDAPadmin
安装phpLDAPadmin应用程序,启用必要的Apache配置,并重新加载Apache。
Web服务器配置为提供应用程序,需要进行一些更改。 需要将phpLDAPadmin配置为使用的域,而不是自动填充LDAP登录信息。
需要修改/etc/phpldapadmin/config.php配置文件
vim /etc/phpldapadmin/config.php
-
配置LDAP服务器--标识
找到 $servers->setValue('server','name','My LDAP Server'); 这一行,修改第三个参数,如下:
$servers->setValue('server','name','DUKE LDAP Server'); -
配置LDAP服务器--IP
找到 $servers->setValue('server','host','127.0.0.1'); 这一行,修改第三个参数,如下:
$servers->setValue('server','host','10.0.0.55'); - 配置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')); - 配置LDAP服务器--登陆
【注意】:
如果phpLDAPadmin页面是可公开访问的,改配置是不能共享的信息,需要注释掉。因为此选项会预先填充Web界面中的管理员登录详细信息。
如果是非公开访问的,只需将dc=example改为dc=duke找到 $servers->$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com'); 这一行,修改第三个参数,如下:
#$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com'); - 配置LDAP服务器--告警
【注意】:
需要调整控制phpLDAPadmin警告消息可见性的设置。
默认情况下,应用程序将显示相当多的关于模板文件的警告消息。 这些对目前使用的软件没有影响。
可以通过搜索hide_template_warning参数来隐藏它们,取消注释包含它的行,并将其设置为true找到 // $config->custom->appearance['hide_template_warning'] = false; 这一行,修改第三个参数,如下:
$config->custom->appearance['hide_template_warning'] = true;
5.3、登陆phpLDAPadmin
在登录前,必须保用户电脑和LDAP服务器同属于一个域当中,并配置hosts文件。
例子:
说明 | IP地址 |
---|---|
LDAP服务器 | 10.0.0.55 |
用户电脑 | 10.0.0.166 |
网关 | 10.0.0.1 |
登陆地址如下:
https://duke.com/phpldapadmin
如果没有配置hosts文件,也可以直接使用IP地址进行登录:
https://10.0.0.55/phpldapadmin
登陆页面如下:
用户登录:
点击页面左侧登录按钮后,页面如下:
登录DN是您将要使用的用户名。
包含:帐户名称作为cn=部分,服务器选择的域名分为dc=部分,在安装过程中设置的默认管理员帐户称为admin ,因此在我们的示例中,我们将键入以下内容:
cn=admin,dc=example,dc=com
设置页面如下:
登录成功后页面如下:
六、kerberos和LDAP整合配置
6.1、LDAP增加kerberos模式(schema)
存在2中添加方式
6.1.1、LDAP增加kerberos schema文件
解压kerberos.schema.gz,添加到LDAP的schema存储目录
gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz
cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/
6.1.2、LDAP增加kerberos模式
- 新建一个schema转换文件:kerberos_schema_convert.conf
vim kerberos_schema_convert.conf
- 在kerberos_schema_convert.conf文件中添加以下内容:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/kerberos.schema
- 创建一个临时目录来存放LDIF文件
mkdir -p /home/ldap/tmp
- 使用slapcat来转换schema文件
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
【注意】:cn={12}kerberos中的{12}
指的是kerberos_schema_convert.conf文件中“include /etc/ldap/schema/kerberos.schema”信息位置的序号
并且需要(序号-1),序号是以0为起始位
过程如下:root@duke01:/home/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@duke01:/home/ldap# cd tmp
root@duke01:/home/ldap/tmp# ls
cn=config cn=config.ldif cn=kerberos.ldif
root@duke01:/home/ldap/tmp# 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是肯定不一样,根据情况删除
structuralObjectClass: olcSchemaConfig entryUUID: 84374308-66be-1038-8430-576d5315da4e creatorsName: cn=config createTimestamp: 20181018011141Z entryCSN: 20181018011141.878509Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20181018011141Z
- 用ldapadd加载新的schema
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /home/ldap/tmp/cn=kerberos.ldif
- 查看是否加载成功
过程如下:ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn
root@duke01:/home/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、配置kerberos
6.2.1、设置/etc/krb5.conf文件
vim /etc/krb5.conf
1、设置libdefaults属性
找到[libdefaults]行,进行以下修改
[libdefaults] default_realm = EXAMPLE.COM # The following krb5.conf variables are only for MIT Kerberos. krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true
修改为
[libdefaults]
default_realm = EXAMPLE.COM
renew_lifetime = 7d
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
default_ccache_name = /tmp/krb5cc_%{uid}
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
2、设置realms属性
找到[realms]行,进行以下修改
[realms] EXAMPLE.COM = { kdc = 10.0.0.55 admin_server = 10.0.0.55 }
修改为
[realms]
EXAMPLE.COM = {
kdc = 10.0.0.55
admin_server = 10.0.0.55
max_renewable_life = 30m
database_module = openldap_ldapconf
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
3、设置domain_realm属性
找到[domain_realm]行,进行以下修改
[domain_realm] .mit.edu = ATHENA.MIT.EDU mit.edu = ATHENA.MIT.EDU .media.mit.edu = MEDIA-LAB.MIT.EDU media.mit.edu = MEDIA-LAB.MIT.EDU .csail.mit.edu = CSAIL.MIT.EDU csail.mit.edu = CSAIL.MIT.EDU .whoi.edu = ATHENA.MIT.EDU whoi.edu = ATHENA.MIT.EDU .stanford.edu = stanford.edu .slac.stanford.edu = SLAC.STANFORD.EDU .toronto.edu = UTORONTO.CA .utoronto.ca = UTORONTO.CA
修改为
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
kdc.example.com = EXAMPLE.COM
client.example.com = EXAMPLE.COM
4、添加以下属性
[logging] default = FILE:/home/ldap/log/krb5libs.log kdc = FILE:/home/ldap/log/krb5kdc.log admin_server = FILE:/home/ldap/log/kadmind.log [dbdefaults] ldap_kerberos_container_dn = cn=kerberos,dc=example,dc=com [dbmodules] openldap_ldapconf = { db_library = kldap ldap_servers = ldapi:// ldap_kerberos_container_dn = "cn=kerberos,dc=example,dc=com" ldap_kdc_dn = "cn=root,dc=example,dc=com" ldap_kadmind_dn = "cn=root,dc=example,dc=com" ldap_service_password_file = /etc/krb5kdc/krb5.ldap ldap_conns_per_server = 5 }
【注意】
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、设置/etc/krb5kdc/kdc.conf文件
在默认情况下supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包,推荐不使用。所以需要针对aes256-cts进行修改。
vim /etc/krb5kdc/kdc.conf
将下面内:
[kdcdefaults]
kdc_ports = 750,88
[realms]
EXAMPLE.COM = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-hmac-sha1
supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
default_principal_flags = +preauth
}
删除aes256-cts:normal
[kdcdefaults] kdc_ports = 750,88 [realms] EXAMPLE.COM = { database_name = /var/lib/krb5kdc/principal admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab acl_file = /etc/krb5kdc/kadm5.acl key_stash_file = /etc/krb5kdc/stash kdc_ports = 750,88 max_life = 10h 0m 0s max_renewable_life = 7d 0h 0m 0s master_key_type = des3-hmac-sha1 supported_enctypes = arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3 default_principal_flags = +preauth }
【注意】在某些情况下,例如centos系统,
kdc.conf文件还会多一个 master_key_type = aes256-cts 配置
需要将其注释掉 #master_key_type = aes256-cts
6.3、LDAP增加kerberos用户
6.3.1、创建LDAP数据库(用于后续整合)
1、查看相关默认配置
由于安装LDAP时,使用的是MDB数据库,所以在/etc/ldap/slapd.d/cn=config目录查看olcDatabase={1}mdb.ldif文件中的一些相关默认配置
cat /etc/ldap/slapd.d/cn\=config/olcDatabase={1}mdb.ldif
内容如下:
dn: olcDatabase={1}mdb
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW:: e1NTSEF9VHlMckdjdXhZVDdkcEFyTVE0Rk02YmhXdWlCdi81Y3E=
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: bf42cf74-64c2-1038-9ec4-b1830bf84692
creatorsName: cn=config
createTimestamp: 20181015123656Z
entryCSN: 20181015123656.605646Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20181015123656Z
其中以下内容是下面步骤所需要的关键
olcSuffix: dc=example,dc=com
olcRootDN: cn=admin,dc=example,dc=com
2、创建数据库信息
创建数据库信息文件modify.ldif
vim /home/ldap/modify.ldif
文件内容如下:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootDN
# Temporary lines to allow initial setup
olcRootDN: uid=ldapadmin,ou=People,dc=example,dc=com
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: 12345678
dn: cn=config
changetype: modify
add: olcAuthzRegexp
olcAuthzRegexp: uid=([^,]*),cn=GSSAPI,cn=auth uid=$1,ou=People,dc=example,dc=com
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
# Everyone can read everything
olcAccess: {0}to dn.base="" by * read
# The ldapadm dn has full write access
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、载入数据库配置信息
ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/ldap/modify.ldif
过程如下:
root@duke01:/home/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文件中的下面内容:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: 12345678
修改为
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: 12345678
再次执行,过程如下:
root@duke01:/home/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、创建ldap_init_data.ldif文件
vim /home/ldap/ldap_init_data.ldif
添加内容如下:
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example
dn: ou=People,dc=example,dc=com
objectclass: organizationalUnit
ou: People
description: Users
dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group
dn: uid=ldapadmin,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: LDAP admin account
uid: ldapadmin
sn: ldapadmin
uidNumber: 10001
gidNumber: 5000
homeDirectory: /home/ldap/ldapadmin
loginShell: /bin/bash
2、载入数据
ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/ldap_init_data.ldif
如果执行过程中报以下错误,是因为在按文档操作过程中,已经按照4.6.1章节创建了数据库数据信息,导致部分数据已经存在,所以无法创建成功。没有按照4.6.1章节操作,直接按照本章节操作是可以成功的。
root@duke01:/home/ldap# ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/ldap_init_data.ldif adding new entry "dc=example,dc=com" ldap_add: Already exists (68)
为了解决上面问题,需要将ldap_init_data.ldif文件修改为以下内容:
dn: ou=People,dc=example,dc=com
objectclass: organizationalUnit
ou: People
description: Users
dn: ou=group,dc=example,dc=com
objectClass: organizationalUnit
ou: group
dn: uid=ldapadmin,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: LDAP admin account
uid: ldapadmin
sn: ldapadmin
uidNumber: 10001
gidNumber: 5000
homeDirectory: /home/ldap/ldapadmin
loginShell: /bin/bash
再次执行过程如下:
root@duke01:/home/ldap# ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/ldap_init_data.ldif
adding new entry "uid=ldapadmin,ou=People,dc=example,dc=com"
【注意】:-w 12345678 表示的是设置密码为12345678,此处的密码没有在配置文件中设置,用的是命令输入方式,这样可以避免密码泄露
3、验证数据
在http://10.0.0.55/phpldapadmin页面使用uid=ldapadmin,ou=People,dc=example,dc=com用户进行登录,如果登录成功即表示数据库数据添加成功。如下页面:
6.3.3、导入linux系统用户
若要将 /etc/passwd, /etc/shadow, /etc/groups 中生成 ldif 更新 ldap 数据库,就需要用到 migrationtools 工具。
1、安装migrationtools
apt-get install migrationtools
过程如下:
root@duke01:/home/ldap# apt-get install migrationtools
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列【新】软件包将被安装:
migrationtools
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 233 个软件包未被升级。
需要下载 28.6 kB 的归档。
解压缩后会消耗 213 kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 migrationtools all 47-8ubuntu2 [28.6 kB]
已下载 28.6 kB,耗时 1秒 (23.7 kB/s)
正在选中未选择的软件包 migrationtools。
(正在读取数据库 ... 系统当前共安装有 215537 个文件和目录。)
正准备解包 .../migrationtools_47-8ubuntu2_all.deb ...
正在解包 migrationtools (47-8ubuntu2) ...
正在设置 migrationtools (47-8ubuntu2) ...
2、修改默认配置
利用迁移工具生成模板,但是需要先修改默认的配置:
vim /etc/migrationtools/migrate_common.ph
将下面内容
\# Default DNS domain $DEFAULT_MAIL_DOMAIN = "padl.com"; \# Default base $DEFAULT_BASE = "dc=padl,dc=com";
修改为
\# Default DNS domain $DEFAULT_MAIL_DOMAIN = "example.com"; \# Default base $DEFAULT_BASE = "dc=example,dc=com";
3、生成文件模板
/usr/share/migrationtools/migrate_base.pl > /home/ldap/linux_base.ldif
4、导入命令
根据需求更改上面文件内容,然后执行下面语句,即可把linux用户导入到LDAP中
ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/linux_base.ldif
当然你可能会遇到下面错误,这是因为生成的linux_base.ldif文件中,有已经存在于LDAP的用户信息,所以导无法加载成功。
root@duke01:~# ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/linux_base.ldif
adding new entry "dc=example,dc=com"
ldap_add: Already exists (68)
修改方法如下,删除已经存在的用户信息即可,原始内容如下:
dn: dc=example,dc=com dc: example objectClass: top objectClass: domain dn: ou=Services,dc=example,dc=com ou: Services objectClass: top objectClass: organizationalUnit dn: ou=Rpc,dc=example,dc=com ou: Rpc objectClass: top objectClass: organizationalUnit dn: ou=People,dc=example,dc=com ou: People objectClass: top objectClass: organizationalUnit dn: ou=Networks,dc=example,dc=com ou: Networks objectClass: top objectClass: organizationalUnit dn: nisMapName=netgroup.byuser,dc=example,dc=com nismapname: netgroup.byuser objectClass: top objectClass: nisMap dn: ou=Aliases,dc=example,dc=com ou: Aliases objectClass: top objectClass: organizationalUnit dn: ou=Protocols,dc=example,dc=com ou: Protocols objectClass: top objectClass: organizationalUnit dn: ou=Netgroup,dc=example,dc=com ou: Netgroup objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=example,dc=com ou: Group objectClass: top objectClass: organizationalUnit dn: ou=Mounts,dc=example,dc=com ou: Mounts objectClass: top objectClass: organizationalUnit dn: ou=Hosts,dc=example,dc=com ou: Hosts objectClass: top objectClass: organizationalUnit dn: nisMapName=netgroup.byhost,dc=example,dc=com nismapname: netgroup.byhost objectClass: top objectClass: nisMap
修改为
dn: ou=Services,dc=example,dc=com ou: Services objectClass: top objectClass: organizationalUnit dn: ou=Rpc,dc=example,dc=com ou: Rpc objectClass: top objectClass: organizationalUnit dn: ou=Networks,dc=example,dc=com ou: Networks objectClass: top objectClass: organizationalUnit dn: nisMapName=netgroup.byuser,dc=example,dc=com nismapname: netgroup.byuser objectClass: top objectClass: nisMap dn: ou=Aliases,dc=example,dc=com ou: Aliases objectClass: top objectClass: organizationalUnit dn: ou=Protocols,dc=example,dc=com ou: Protocols objectClass: top objectClass: organizationalUnit dn: ou=Netgroup,dc=example,dc=com ou: Netgroup objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=example,dc=com ou: Group objectClass: top objectClass: organizationalUnit dn: ou=Mounts,dc=example,dc=com ou: Mounts objectClass: top objectClass: organizationalUnit dn: ou=Hosts,dc=example,dc=com ou: Hosts objectClass: top objectClass: organizationalUnit dn: nisMapName=netgroup.byhost,dc=example,dc=com nismapname: netgroup.byhost objectClass: top objectClass: nisMap
执行过程如下:
root@duke01:/home/ldap# ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/linux_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"
导入后页面展示结果如下:
5、导入指定的用户
可以进行批量导入用户,也可以指定导入用户,操作如下:
①、创建系统用户test并设置密码为test
useradd test
②、查看用户是否创建成功,并导入到指定文件
grep -E "test" /etc/passwd >/home/ldap/test_userinfo.txt
③、转换test信息为ldif文件
/usr/share/migrationtools/migrate_passwd.pl /home/ldap/test_userinfo.txt /home/ldap/test_userinfo.ldif
④、导入系统
ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/test_userinfo.ldif
过程如下:
root@duke01:/home/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"
⑤、将用户组导入到指定文件
grep -E "test" /etc/group >/home/ldap/test_groupinfo.txt
⑥、转换组信息为ldif文件
/usr/share/migrationtools/migrate_group.pl /home/ldap/test_groupinfo.txt /home/ldap/test_groupinfo.ldif
⑦、导入到系统
ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/test_groupinfo.ldif
过程如下:
root@duke01:/home/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"
页面查看如下:
使用test用户登录页面查看如下:
登录密码是linux系统设置的test
6.3.4、LDAP操作指令(知识点,配合6.3.3章节新建的test用户操作)
1、查询
查询新添加的 test 用户:
ldapsearch -LLL -x -D 'uid=ldapadmin,ou=People,dc=example,dc=com' -w 12345678 -b 'dc=example,dc=com' 'uid=test'
过程如下:
root@duke01:/home/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、修改
用户添加好以后,需要给其设定初始密码,运行命令如下:
ldappasswd -x -D 'uid=ldapadmin,ou=People,dc=example,dc=com' -w 12345678 "uid=test,ou=People,dc=example,dc=com" -S
过程如下:
root@duke01:/home/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
3、删除
删除用户:
ldapdelete -x -w 12345678 -D'uid=ldapadmin,ou=People,dc=example,dc=com' "uid=test,ou=People,dc=example,dc=com"
删除用户组:
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文件
vim /home/ldap/user.ldif
该文件用户ldap配置kerberos所要用到的用户信息,文件内容如下:
dn: cn=kerberos,dc=example,dc=com
cn: kerberos
objectClass: organizationalRole
dn: cn=root,dc=example,dc=com
cn: root
userPassword: root
objectClass: simpleSecurityObject
objectClass: organizationalRole
2、载入用户信息
ldapadd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 -f /home/ldap/user.ldif
执行过程如下:
root@duke01:/home/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用户密码修改为:12345678
ldappasswd -x -D "uid=ldapadmin,ou=People,dc=example,dc=com" -w 12345678 "cn=root,dc=example,dc=com" -s 12345678
6.3.5、生成kerberos访问ldap的服务密码文件
因为Kerberos 需要有 ldap_kdc_dn 和 ldap_kadmind_dn 的密码才能访问 LDAP数据库,执行以下命令:
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
cat /etc/krb5.ldap
过程如下:
root@duke01:/etc# 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
Password for "cn=root,dc=example,dc=com": 输入密码:12345678
Re-enter password for "cn=root,dc=example,dc=com": 确认密码:12345678
root@duke01:/etc# cat /etc/krb5.ldap
cn=root,dc=example,dc=com#{HEX}3132333435363738
6.3.6、创建kerberos数据库
kdb5_ldap_util -D uid=ldapadmin,ou=People,dc=example,dc=com -w 12345678 -H ldapi:// create -r EXAMPLE.COM -s
过程如下
root@duke01:/etc/krb5kdc# 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
service krb5-kdc restart
service krb5-admin-server restart
6.3.8、测试kerberos和ldap是否整合成功
1、添加用户
kadmin.local
添加一个test用户
过程如下:
root@duke01:/etc# kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local: addprinc test 如果要添加test用户,必须在test前输入 addprinc 关键字
WARNING: no policy specified for [email protected]; defaulting to no policy
Enter password for principal "[email protected]": 输入test用户密码:test
Re-enter password for principal "[email protected]": >确认test用户密码:test
Principal "[email protected]" created.
2、检查是否添加成功
slapcat |grep "test"
root@duke01:/etc# slapcat |grep "test"
dn: [email protected],cn=EXAMPLE.COM,cn=kerberos,dc=example,
krbPrincipalName: [email protected]
3、检查ldap页面是否添加成功
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),内容如下:
dn: uid=test,ou=People,dc=example,dc=com
changetype: modify
add: userPassword
userPassword:: e1NTSEF9QnpadEw0Wnpqak1YLzAycVhpbEdnT2pwT3BEYjZSMUoK
然后执行命令
ldapmodify -x -D 'cn=root,dc=example,dc=com' -w 12345678 -h 10.0.0.55 -f /home/ldap/test.ldif
执行过程如下:
root@duke01:/home/ldap# vi test.ldif
dn: uid=test,ou=People,dc=example,dc=com
changetype: modify
add: userPassword
userPassword:: e1NTSEF9QnpadEw0Wnpqak1YLzAycVhpbEdnT2pwT3BEYjZSMUoK
"test.ldif" 4L, 146C 已写入
root@duke01:/home/ldap# ldapmodify -x -D 'cn=root,dc=example,dc=com' -w root -h 10.0.0.55 -f /home/ldap/test.ldif
modifying entry "uid=test,ou=People,dc=example,dc=com"
3、确认是否成功
ldapsearch -x -D 'uid=test,ou=People,dc=example,dc=com' -w 12345678 10.0.0.55 -b 'ou=People,dc=example,dc=com'
执行过程如下
root@duke01:/home/ldap# ldapsearch -x -D 'uid=test,ou=People,dc=example,dc=com' -w 12345678 10.0.0.55 -b 'ou=People,dc=example,dc=com' # extended LDIF # # LDAPv3 # basewith scope subtree # filter: (objectclass=*) # requesting: 127.0.0.1 # # People, example.com dn: ou=People,dc=example,dc=com # test, People, example.com dn: uid=test,ou=People,dc=example,dc=com # ldapadmin, People, example.com dn: uid=ldapadmin,ou=People,dc=example,dc=com # search result search: 2 result: 0 Success # numResponses: 4 # numEntries: 3
7.2、使用 Kerberos 认证。
需要将用户的密码域做如下修改:
1、userPassword 对应的密码生成:
echo -n "{SASL}[email protected]" | base64
过程如下:
root@duke01:/home/ldap# echo -n "{SASL}[email protected]" | base64
e1NBU0x9dGVzdEBFWEFNUExFLkNPTQ==
2、编写修改test用户的密码的test_modify.ldif文件
dn: uid=test,ou=People,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword:: e1NBU0x9dGVzdEBFWEFNUExFLkNPTQ==
过程如下:
root@duke01:/home/ldap# vi test_modify.ldif
dn: uid=test,ou=People,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword:: e1NBU0x9dGVzdEBFWEFNUExFLkNPTQ==
"test_modify.ldif" 4L, 130C 已写入
3、执行应用该修改
ldapmodify -x -D 'cn=root,dc=example,dc=com' -w 12345678 -h 10.0.0.55 -f /home/ldap/test_modify.ldif
过程如下:
root@duke01:/home/ldap# ldapmodify -x -D 'cn=root,dc=example,dc=com' -w root -h 10.0.0.55 -f /home/ldap/test_modify.ldif
modifying entry "uid=test,ou=People,dc=example,dc=com"
7.3、修改saslauthd配置
1、修改saslauthd配置
vi /etc/default/saslauthd
执行过程如下:将下面内容
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"
改为:
># Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="kerberos5"
重启:
service saslauthd restart
2、修改ldap配置
创建/etc/sasl2/slapd.conf文件
vim /etc/sasl2/slapd.conf
添加/etc/sasl2/slapd.conf文件内容:
pwcheck_method: saslauthd
重启:
service slapd restart
3、查看saslauthd是否报错
service saslauthd status -l
过程如下:
root@duke01:/home/ldap# service saslauthd status -l
● saslauthd.service - LSB: saslauthd startup script
Loaded: loaded (/etc/init.d/saslauthd; bad; vendor preset: enabled)
Active: active (running) since 三 2018-10-31 15:14:46 CST; 4min 44s ago
Docs: man:systemd-sysv-generator(8)
Process: 20292 ExecStop=/etc/init.d/saslauthd stop (code=exited, status=0/SUCCESS)
Process: 20311 ExecStart=/etc/init.d/saslauthd start (code=exited, status=0/SUCCESS)
Tasks: 5
Memory: 4.7M
CPU: 40ms
CGroup: /system.slice/saslauthd.service
├─20360 /usr/sbin/saslauthd -a kerberos5 -c -m /var/run/saslauthd -n 5
├─20361 /usr/sbin/saslauthd -a kerberos5 -c -m /var/run/saslauthd -n 5
├─20362 /usr/sbin/saslauthd -a kerberos5 -c -m /var/run/saslauthd -n 5
├─20363 /usr/sbin/saslauthd -a kerberos5 -c -m /var/run/saslauthd -n 5
└─20364 /usr/sbin/saslauthd -a kerberos5 -c -m /var/run/saslauthd -n 5
10月 31 15:14:46 duke01 systemd[1]: Starting LSB: saslauthd startup script...
10月 31 15:14:46 duke01 saslauthd[20311]: * Starting SASL Authentication Daemon saslauthd
10月 31 15:14:46 duke01 saslauthd[20360]: detach_tty : master pid is: 20360
10月 31 15:14:46 duke01 saslauthd[20360]: ipc_init : listening on socket: /var/run/saslauthd/mux
10月 31 15:14:46 duke01 systemd[1]: Started LSB: saslauthd startup script.
10月 31 15:14:46 duke01 saslauthd[20311]: ...done.
7.4、增加kerberos的用户配置
执行如下操作:
kadmin.local -q "ank -clearpolicy -randkey host/duke01"
kadmin.local -q "ktadd host/duke01"
service saslauthd restart
ps -aux | grep saslauthd
kadmin.local -q 'ank -pw 12345678 test'
【注意】
1、host/duke01中的duke01,是服务器名称,不能写成IP
2、ank是add_principal的简写,表示增加
3、-q表示静默,不进入kadmin.local的对话模式
4、-pw 表示设置test密码为12345678
7.5、测试Kerberos+OpenLDAP整合认证是否成功
1、测试kerberos认证
testsaslauthd -u test -p 12345678
执行过程如下:
root@duke01:/home/ldap# testsaslauthd -u test -p 12345678
0: OK "Success."
至此, Kerberos 认证测试成功。
2、测试OpenLDAP认证
ldapsearch -x -D 'uid=test,ou=people,dc=example,dc=com' -w 12345678 -h 10.0.0.55 -b 'ou=people,dc=example,dc=com'
执行 ldapsearch测试LDAP 认证是否成功
ldapsearch -x -D 'uid=test,ou=people,dc=example,dc=com' -w 123456 -h 127.0.0.1 -b 'ou=people,dc=example,dc=com'
[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