- 一 、OpenLDAP简介与安装
- 1.1、OpenLDAP安装
- 1.2、配置OpenLDAP
- 1.2.1 配置OpenLDAP管理员密码
- 1.2.2 修改olcDatabase={2}hdb.ldif文件
- 1.2.3 修改olcDatabase={1}monitor.ldif文件
- 1.2.4 验证OpenLDAP的基本配置
- 1.2.5 启动OpenLDAP服务
- 1.2.6 配置OpenLDAP数据库
- 1.2.7 导入基本Schema
- 1.2.8 修改migrate_common.ph文件
- 1.2.9 添加OpenLADP用户及用户组
- 1.2.10 导入用户及用户组到OpenLDAP数据库
- 1.2.11 把OpenLDAP用户加入到用户组
- 1.2.12 查询OpenLDAP的相关信息
- 1.2.13 开启OpenLDAP日志访问功能
- 1.2.14 快速操作步骤
- 1.3、LDAP Admin(可选)
- 1.4、Self Service Password安装(可选)
- 二、**phpldapadmin**安装
- 三、phpldapadmin**访问**
- 四、phpldapadmin域名访问
- 五、openldap禁止匿名访问
- 六、Openldap应用集成
- 七、容器化部署
- 八、参考文档
一 、OpenLDAP简介与安装
LDAP是一款轻量级目录访问协议(Lightweight Directory Access Protocol,简称LDAP),属于开源集中账号管理架构的实现
LDAP提供并实现目录服务的信息服务,目录服务是一种特殊的数据库系统,对于数据的读取、浏览、搜索有很好的效果,目录服务一般用来包含基于属性的描述性信息并支持精细复杂的过滤功能,但OpenLDAP目录服务不支持通用数据库的大量更新操作所需要的复杂的事务管理或回滚策略等
OpenLDAP默认以Berkeley DB作为后端数据库,BerkeleyDB数据库主要以散列的数据类型进行数据存储,如以键值对的方式进行存储
BerkeleyDB是一类特殊的面向查询进行优化、面向读取进行优化的数据库,主要用于搜索、浏览、更新查询操作,一般对于一次写入数据、多次查询和搜索有很好的效果,BerkeleyDB不支持事务型数据库(MySQL、MariDB、Oracle等)所支持的高并发的吞吐量以及复杂的事务操作
统一身份认证、单点登录
1.1、OpenLDAP安装
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
查看OpenLDAP版本
slapd -VV
1.2、配置OpenLDAP
从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件
1.2.1 配置OpenLDAP管理员密码
生成加密字段、加密后的字段保存下来修改配置文件需要使用
slappasswd -s 123456
1.2.2 修改olcDatabase={2}hdb.ldif文件
修改olcDatabase={2}hdb.ldif文件
对于该文件增加一行
olcRootPW: {SSHA}dXgO/Ipy5SQiKFZ0u7m79Xo7uzKIr038
然后修改域信息:
olcSuffix: dc=ilanni,dc=com
olcRootDN: cn=root,dc=ilanni,dc=com
vim /etc/openldap/slapd.d/cn=config/olcDatabase\=\{2\}hdb.ldifolcSuffix: dc=ilanni,dc=comolcRootDN: cn=root,dc=ilanni,dc=comolcRootPW: {SSHA}dXgO/Ipy5SQiKFZ0u7m79Xo7uzKIr038
其中cn=root中的root表示OpenLDAP管理员的用户名,而olcRootPW表示OpenLDAP管理员的密码
1.2.3 修改olcDatabase={1}monitor.ldif文件
vim /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldifolcAccess: {0}to * by dn.base=”gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth” read by dn.base=”cn=root,dc=ilanni,dc=com” read by * none
dn.base**是修改OpenLDAP的管理员的相关信息**
1.2.4 验证OpenLDAP的基本配置
slaptest -u
1.2.5 启动OpenLDAP服务
systemctl enable slapdsystemctl start slapdsystemctl status slapd
OpenLDAP默认监听的端口是389
检查监听端口
netstat -antup | grep 389
1.2.6 配置OpenLDAP数据库
OpenLDAP默认使用的数据库是BerkeleyDB,配置OpenLDAP数据库
/var/lib/ldap/就是**BerkeleyDB**数据库默认存储的路径
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIGchown ldap:ldap -R /var/lib/ldapchmod 700 -R /var/lib/ldapll /var/lib/ldap/
1.2.7 导入基本Schema
导入基本Schema,使用如下命令
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
1.2.8 修改migrate_common.ph文件
migrate_common.ph文件主要是用于生成ldif文件使用
vim /usr/share/migrationtools/migrate_common.ph +71$DEFAULT_MAIL_DOMAIN = “ilanni.com”;$DEFAULT_BASE = “dc=ilanni,dc=com”;$EXTENDED_SCHEMA = 1;
1.2.9 添加OpenLADP用户及用户组
默认情况下OpenLDAP是没有普通用户的,只有一个管理员root
现在我们把操作系统中的用户添加到OpenLDAP中,为了进行区分,我们现在新加两个用户ldapuser1和ldapuser2和两个用户组ldapgroup1和ldapgroup2
添加用户组groupadd ldapgroup1groupadd ldapgroup2添加系统用户并设置密码useradd -g ldapgroup1 ldapuser1useradd -g ldapgroup2 ldapuser2echo ‘123456’ | passwd –stdin ldapuser1echo ‘123456’ | passwd –stdin ldapuser2
把添加的用户和用户组提取出来,包括该用户的密码和其他相关属性
grep “:10[0-9][0-9]” /etc/passwd > /root/usersgrep “:10[0-9][0-9]” /etc/group > /root/groupscat userscat groups
根据上述生成的用户和用户组属性,使用migrate_passwd.pl文件生成要添加用户和用户组的ldif
/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldifcat users.ldifcat groups.ldif
后续如果要新加用户到OpenLDAP中的话,我们可以直接修改**users.ldif**文件即可
**
1.2.10 导入用户及用户组到OpenLDAP数据库
配置openldap基础的数据库
cat > /root/base.ldif << EOFdn: dc=ilanni,dc=como: ilanni comdc: ilanniobjectClass: topobjectClass: dcObjectobjectclass: organizationdn: cn=root,dc=ilanni,dc=comcn: rootobjectClass: organizationalRoledescription: Directory Managerdn: ou=People,dc=ilanni,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnitdn: ou=Group,dc=ilanni,dc=comou: GroupobjectClass: topobjectClass: organizationalUnitEOF
导入基础数据库
ldapadd -x -w “123456” -D “cn=root,dc=ilanni,dc=com” -f /root/base.ldif
导入用户到数据库
ldapadd -x -w “123456” -D “cn=root,dc=ilanni,dc=com” -f /root/users.ldif
导入用户组到数据库
ldapadd -x -w “123456” -D “cn=root,dc=ilanni,dc=com” -f /root/groups.ldif
查看BerkeleyDB数据库文件
ll /var/lib/ldap/
BerkeleyDB数据库文件中多出新添加的cn.bdb、sn.bdb、ou.bdb等数据库文件
1.2.11 把OpenLDAP用户加入到用户组
用户和用户组信息已导入到OpenLDAP数据库中,但实际上目前OpenLDAP用户和用户组之间是没有任何关联的
要把OpenLDAP数据库中的用户和用户组关联起来的话,我们还需要做另外单独的配置
把ldapuser1用户加入到ldapgroup1用户组,需要新建添加用户到用户组的ldif文件
cat > add_user_to_groups.ldif << “EOF”dn: cn=ldapgroup1,ou=Group,dc=ilanni,dc=comchangetype: modifyadd: memberuidmemberuid: ldapuser1EOF
关联操作命令
ldapadd -x -w “123456” -D “cn=root,dc=ilanni,dc=com” -f /root/add_user_to_groups.ldif
验证查询添加的OpenLDAP用户组信息
ldapsearch -LLL -x -D ‘cn=root,dc=ilanni,dc=com’ -w “123456” -b ‘dc=ilanni,dc=com’ ‘cn=ldapgroup1’
1.2.12 查询OpenLDAP的相关信息
查询OpenLDAP全部信息
ldapsearch -x -b “dc=ilanni,dc=com” -H ldap://127.0.0.1
查询添加的OpenLDAP用户信息
ldapsearch -LLL -x -D ‘cn=root,dc=ilanni,dc=com’ -w “123456” -b ‘dc=ilanni,dc=com’ ‘uid=ldapuser1’
查询添加的OpenLDAP用户组信息
ldapsearch -LLL -x -D ‘cn=root,dc=ilanni,dc=com’ -w “123456” -b ‘dc=ilanni,dc=com’ ‘cn=ldapgroup1’
1.2.13 开启OpenLDAP日志访问功能
默认情况下OpenLDAP是没有启用日志记录功能
开启并配置系统服务rsyslog,新建日志配置ldif文件
cat > /root/loglevel.ldif << “EOF”dn: cn=configchangetype: modifyreplace: olcLogLevelolcLogLevel: statsEOF
导入到OpenLDAP中,并重启OpenLDAP服务
ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldifsystemctl restart slapd
修改rsyslog配置文件,并重启rsyslog服务
cat >> /etc/rsyslog.conf << “EOF”local4.* /var/log/slapd.logEOFsystemctl restart rsyslog
查看OpenLDAP日志
tail -f /var/log/slapd.log
1.2.14 快速操作步骤
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtoolscp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIGchown ldap:ldap -R /var/lib/ldapchmod 700 -R /var/lib/ldapll /var/lib/ldap/systemctl enable slapdsystemctl start slapdsystemctl status slapdcat >/root/chrootpw.ldif << "EOF"#specify the password generated above for "olcRootPW" sectiondn: olcDatabase={0}config,cn=configchangetype: modifyadd: olcRootPWolcRootPW: {SSHA}FC/YWM2DGSuhn5vuKaK92pF1EwGVdznjEOFldapadd -Y EXTERNAL -H ldapi:/// -f /root/chrootpw.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldifcat >/root/chdomain.ldif << "EOF"#replace to your own domain name for "dc=***,dc=***" section#specify the password generated above for "olcRootPW" sectiondn: olcDatabase={1}monitor,cn=configchangetype: modifyreplace: olcAccessolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"read by dn.base="cn=root,dc=ilanni,dc=com" read by * nonedn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcSuffixolcSuffix: dc=ilanni,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootDNolcRootDN: cn=root,dc=ilanni,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcRootPWolcRootPW: {SSHA}FC/YWM2DGSuhn5vuKaK92pF1EwGVdznjdn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcAccessolcAccess: {0}to attrs=userPassword,shadowLastChange bydn="cn=root,dc=ilanni,dc=com" write by anonymous auth by self write by * noneolcAccess: {1}to dn.base="" by * readolcAccess: {2}to * by dn="cn=root,dc=ilanni,dc=com" write by * readEOFldapmodify -Y EXTERNAL -H ldapi:/// -f /root/chdomain.ldifcat >/root/basedomain.ldif << "EOF"#replace to your own domain name for "dc=***,dc=***" sectiondn: dc=ilanni,dc=comobjectClass: topobjectClass: dcObjectobjectclass: organizationo: Server cndc: ilannidn: cn=root,dc=ilanni,dc=comobjectClass: organizationalRolecn: rootdescription: Directory rootdn: ou=People,dc=ilanni,dc=comobjectClass: organizationalUnitou: Peopledn: ou=Group,dc=ilanni,dc=comobjectClass: organizationalUnitou: GroupEOFldapadd -x -D cn=root,dc=ilanni,dc=com -w "ilanni" -f /root/basedomain.ldifcat > /root/users.ldif << "EOF"dn: uid=ldapuser1,ou=People,dc=ilanni,dc=comuid: ldapuser1cn: 测试用户1objectClass: accountobjectClass: posixAccountobjectClass: topobjectClass: shadowAccountuserPassword: {crypt}$6$pmVuchTg$kLzWnW0J1CS3LTWrzMu4PVnjROjXaoVUlr8Em3HzIH6wAK74Gzor7yiuRbrOoYCRGHmSNhAGBxMTNEcTkfpUt1shadowLastChange: 17642shadowMin: 0shadowMax: 99999shadowWarning: 7loginShell: /bin/bashuidNumber: 1000gidNumber: 1000homeDirectory: /home/ldapuser1dn: uid=ldapuser2,ou=People,dc=ilanni,dc=comuid: ldapuser2cn: 测试用户2objectClass: accountobjectClass: posixAccountobjectClass: topobjectClass: shadowAccountuserPassword: {crypt}$6$NC7BvWQW$b.ceEn5zl7tOf0upfR3E5057um5ovIDo4Xf5sCOZVhwrr01nOfPmqXB0pNBtQCjzahP1lW3DLW5WKBp.qddeT0shadowLastChange: 17642shadowMin: 0shadowMax: 99999shadowWarning: 7loginShell: /bin/bashuidNumber: 1001gidNumber: 1001homeDirectory: /home/ldapuser2EOFldapadd -x -w "ilanni" -D "cn=root,dc=ilanni,dc=com" -f /root/users.ldifcat > /root/groups.ldif << "EOF"dn: cn=ldapgroup1,ou=Group,dc=ilanni,dc=comobjectClass: posixGroupobjectClass: topcn: ldapgroup1userPassword: {crypt}xgidNumber: 1000dn: cn=ldapgroup2,ou=Group,dc=ilanni,dc=comobjectClass: posixGroupobjectClass: topcn: ldapgroup2userPassword: {crypt}xgidNumber: 1001EOFldapadd -x -w "ilanni" -D "cn=root,dc=ilanni,dc=com" -f /root/groups.ldifcat > /root/add_user_to_groups.ldif << "EOF"dn: cn=ldapgroup1,ou=Group,dc=ilanni,dc=comchangetype: modifyadd: memberuidmemberuid: ldapuser1dn: cn=ldapgroup2,ou=Group,dc=ilanni,dc=comchangetype: modifyadd: memberuidmemberuid: ldapuser2EOFldapadd -x -w "ilanni" -D "cn=root,dc=ilanni,dc=com" -f /root/add_user_to_groups.ldifcat > /root/loglevel.ldif << "EOF"dn: cn=configchangetype: modifyreplace: olcLogLevelolcLogLevel: statsEOFldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldifsystemctl restart slapdcat >> /etc/rsyslog.conf << "EOF"local4.* /var/log/slapd.logEOFsystemctl restart rsyslogtail -f /var/log/slapd.log
1.3、LDAP Admin(可选)
在Windows下对OpenLDAP的操作进行需要连接OpenLDAP的客户端工具
使用最多的是ldapadmin http://www.ldapadmin.org
软件下载地址:http://www.ldapadmin.org/download/index.html
1.3.1 ldapadmin软件界面

1.4、Self Service Password安装(可选)
Self Service Password是一个Web应用,可以让用户自行更新、修改和重置LDAP中的用户密码
1.4.1 Self Service Password安装
二、**phpldapadmin**安装
通过web方式管理openldap的软件phpldapadmin
phpldapadmin是基于php语言开发的,并且也提供了epel源
2.1、phpldapadmin安装
依赖部署
yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml
软件部署
yum –enablerepo=epel -y install phpldapadmin
2.2 添加httpd配置文件
添加httpd与phpldapadmin集成的配置文件,内容如下:
cat > /etc/httpd/conf.d/phpldapadmin.conf << “EOF”Alias /phpldapadmin /usr/share/phpldapadmin/htdocsAlias /ldapadmin /usr/share/phpldapadmin/htdocs<Directory /usr/share/phpldapadmin/htdocs><IfModule mod_authz_core.c># Apache 2.4Require all granted</IfModule><IfModule !mod_authz_core.c># Apache 2.2Order Deny,AllowDeny from allAllow from 127.0.0.1Allow from ::1</IfModule></Directory>EOF
2.3 修改phpldapadmin配置文件
该配置文件中,除了常规的有关openldap的配置之外,还有几个点需要注意的:
login登录方式,在此我们使用的是dn方式进行登录,phpldapadmin默认使用的是uid方式进行登录
cat > /etc/phpldapadmin/config.php << “EOF”<?php$config->custom->session[‘blowfish’] = ‘7faa00f2d9b61272f8d339c5a01a5cc0’;$config->custom->appearance[‘hide_template_warning’] = true;$config->custom->appearance[‘minimalMode’] = true;$config->custom->appearance[‘friendly_attrs’] = array(‘facsimileTelephoneNumber’ => ‘Fax’,‘gid’ => ‘Group’,‘mail’ => ‘Email’,‘telephoneNumber’ => ‘Telephone’,‘uid’ => ‘User Name’,‘userPassword’ => ‘Password’);$servers = new Datastore();$servers->newServer(‘ldap_pla’);$servers->setValue(‘server’,’name’,’Ilanni LDAP Server’);$servers->setValue(‘appearance’,’password_hash’,”);$servers->setValue(‘login’,’attr’,’dn’);$servers->setValue(‘server’,’host’,’192.168.123.8′);$servers->setValue(‘server’,’port’,389);$servers->setValue(‘server’,’base’,array(‘dc=ilanni,dc=com’));$servers->setValue(‘login’,’auth_type’,’session’);$servers->setValue(‘server’,’tls’,false);$servers->setValue(‘unique’,’attrs’,array(‘uid’,’sn’));?>EOF
2.4 启动httpd
systemctl start httpdsystemctl enable httpdsystemctl status httpd
三、phpldapadmin**访问**
http://192.168.123.6/ldapadmin
如果是openldap管理员登录的话,使用cn=root,dc=ilanni,dc=com。如果是openldap普通用户登录的话,使用uid=ilanni,ou=People,dc=ilanni,dc=com
管理员root用户登录
四、phpldapadmin域名访问
使用nginx来通过域名访问phpldapadmin
4.1 修改httpd的相关配置
phpldapadmin与nginx进行集成,首先需要我们修改http的监听端口,把httpd的监听端口修改为8080、然后再修改phpldapadmin与httpd集成的配置文件
注意:上述使用的是apache的虚拟主机,监听的是8080端口。这个需要在httpd.conf启用listen
cat > /etc/httpd/conf.d/ldapadmin.conf << “EOF”NameVirtualHost *:8080<VirtualHost *:8080>DocumentRoot /usr/share/phpldapadmin/htdocsDirectoryIndex index.phpAddDefaultCharset UTF-8Alias /phpldapadmin /usr/share/phpldapadmin/htdocsAlias /ldapadmin /usr/share/phpldapadmin/htdocs<Directory /usr/share/phpldapadmin/htdocs><IfModule mod_authz_core.c>Require all granted</IfModule><IfModule !mod_authz_core.c>Order Deny,AllowDeny from allAllow from 127.0.0.1Allow from ::1</IfModule></Directory>LogLevel warnErrorLog /var/log/httpd/ldapadmin_error_logCustomLog /var/log/httpd/ldapadmin_access_log combined</VirtualHost>EOF
4.2 修改httpd的相关配置后重启服务
systemctl restart httpd
4.3 nginx的相关配置
cat > /etc/nginx/conf.d/default.conf << “EOF”server {listen 80;server_name ldapadmin.ilanni.com;access_log /var/log/nginx/ldapadmin-access.log main;location / {proxy_pass http://192.168.123.6:8282;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}EOF
4.4 修改Nginx的相关配置后重启服务
systemctl restart nginx
4.5 域名访问phpldapadmin
httpd与nginx相关的配置修改完毕后,我们来使用域名访问phpldapadmin
http://ldapadmin.ilanni.com
五、openldap禁止匿名访问
5.1 查看openldap是否可以匿名访问
5.2 禁止openldap匿名访问
cat > /root/disable_anon.ldif << “EOF”dn: cn=configchangetype: modifyadd: olcDisallowsolcDisallows: bind_anondn: cn=configchangetype: modifyadd: olcRequiresolcRequires: authcdn: olcDatabase={-1}frontend,cn=configchangetype: modifyadd: olcRequiresolcRequires: authcEOF
然后使用ldapadd命令导入到openldap中,如下:
ldapadd -Y EXTERNAL -H ldapi:/// -f /root/disable_anon.ldif
检查配置
cat /etc/openldap/slapd.d/cn\=config.ldif
cat /etc/openldap/slapd.d/cn\=config/olcDatabase\={-1}frontend.ldif
5.3 验证openldap匿名访问功能
通过ldapadmin工具,验证openldap是否还可以被匿名访问
六、Openldap应用集成
6.1 openldap与nginx集成
Nginx可以通过autoindex来对外提供目录索引的功能,也即是可以通过浏览器来查看并下载该目录下的所有文件,相当于一个文件服务器,默认情况下该目录下的所有文件对所有的用户都可以访问,如果希望只有具有指定的用户或者用户组可以访问,对于上述的需求可以使用apache的认证模块,但是该模块只能提供比较简单的认证,如果需要使用比较复杂的权限控制的话,该模块就无法满足要求了。
可通过nginx与openldap集成来实现上述要求,该方案中nginx提供目录索引功能,所有的认证通过nginx-auth-ldap模块实现,用户和用户组可以调用openldap,nginx必须使用源码编译安装。
6.1.1 nginx编译安装所需的基础依赖
默认情况下无论是yum安装的nginx,还是源码编译安装的nginx都没有包含ldap的认证模块,所以就需要我们在进行nginx源码编译安装时,把ldap模块配置上
yum -y install git wget gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel openldap openldap-devel libxml2 libxml2-devel libxslt libxslt-devel gd gd-devel perl-devel perl-ExtUtils-Embed GeoIP GeoIP-devel gperftools
依赖安装完毕后,安装nginx的nginx-auth-ldap和ngx-fancyindex模块
6.1.2下载nginx源码
wget http://nginx.org/download/nginx-1.15.4.tar.gz
6.1.3 下载nginx-auth-ldap模块
nginx官方默认是不支持openldap认证的,所以我们需要使用第三方认证模块nginx-auth-ldap
nginx-auth-ldap我们可以直接在github上获取源码
https://github.com/kvspb/nginx-auth-ldap
码云仓库
https://gitee.com/ilanni/nginx-auth-ldap.git
git clone https://gitee.com/ilanni/nginx-auth-ldap.git /tmp/nginx-auth-ldap
6.1.4 下载ngx-fancyindex模块
nginx的目录索引功能,默认样式比较简单,所以在此我们使用第三方的样式美化模块ngx-fancyindex
githua
https://github.com/aperezdc/ngx-fancyindex
码云
https://gitee.com/ilanni/ngx-fancyindex.git
git clone https://gitee.com/ilanni/ngx-fancyindex.git /tmp/ngx-fancyindex
6.1.5 编译安装nginx
tar -xf nginx-1.15.4.tar.gzcd nginx-1.15.4
./configure –add-module=/tmp/ngx-fancyindex –add-module=/tmp/nginx-auth-ldap –with-threads –with-file-aio –with-http_auth_request_module –with-http_ssl_module –with-http_v2_module –with-http_realip_module –with-http_addition_module –with-http_xslt_module=dynamic –with-http_image_filter_module=dynamic –with-http_geoip_module=dynamic –with-http_sub_module –with-http_dav_module –with-http_flv_module –with-http_mp4_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_random_index_module –with-http_secure_link_module –with-http_degradation_module –with-http_slice_module –with-http_stub_status_module –with-http_perl_module=dynamic –with-mail=dynamic –with-mail_ssl_module –without-mail_pop3_module –without-mail_imap_module –without-mail_smtp_module –with-pcre –with-pcre-jit –with-stream –with-stream=dynamic –with-stream_ssl_module –with-stream_ssl_preread_module –with-google_perftools_module –with-debug
make && make install
测试nginx
/usr/local/nginx/sbin/nginx -t
6.1.6 添加系统systemd服务
nginx编译安装完毕后,把nginx加入系统服务,可以使用systemctl命令管理
cat > /usr/lib/systemd/system/nginx.service << “EOF”[Unit]Description=nginxAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -tExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stopPrivateTmp=true[Install]WantedBy=multi-user.targetEOF
systemctl enable nginxsystemctl start nginxsystemctl status nginx
添加nginx的系统全局环境变量
cat >> /etc/profile << “EOF”export PATH=$PATH:/usr/local/nginx/sbin/EOFsource /etc/profilenginx -t
6.1.7 nginx与openldap集成
cat > /usr/local/nginx/conf/nginx.conf << “EOF”user ftp;worker_processes 1;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;log_format htlog ‘[$time_local] [FROM:$remote_addr][TO:$scheme://$server_name][FORWARD:$upstream_addr] $status’‘”$request” $body_bytes_sent’ ‘ Bytes, ‘‘”request_uri”: “$request_uri”, ‘‘”http_cookie”: “$http_cookie”, ‘‘”remote_user”: “$remote_user”, ‘‘”request_time”: “$request_time”, ‘‘”$http_referer” “$http_user_agent” “$http_x_forwarded_for”‘;sendfile on;keepalive_timeout 65;gzip on;ldap_server ilannildap_yunweizu {auth_ldap_cache_enabled on;auth_ldap_cache_expiration_time 10000;auth_ldap_cache_size 1000;connect_timeout 5s;bind_timeout 5s;request_timeout 5s;satisfy any;url ldap://192.168.123.8:389/dc=ilanni,dc=com?uid?sub;binddn “cn=root,dc=ilanni,dc=com”;binddn_passwd ilanni;group_attribute uniquemember;group_attribute_is_dn on;require group “cn=yunweizu,ou=Group,dc=ilanni,dc=com”;}server {listen 80;server_name yunweizu.ilanni.com;access_log /var/log/nginx/yunweizu.ilanni.com-access.log htlog;error_log /var/log/nginx/yunweizu.ilanni.com-error.log;charset utf-8,gbk;location / {root /opt/yunweizu/;fancyindex on;fancyindex_exact_size off;fancyindex_localtime on;fancyindex_default_sort name_desc;fancyindex_time_format “%Y-%m-%d %H:%M”;add_header ‘Cache-Control’ ‘no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0’;expires -1;auth_ldap “Forbidden”;auth_ldap_servers ilannildap_yunweizu;}}}EOF
6.1.8 测试访问权限
6.2 openldap与gitlab集成
https://blog.csdn.net/fuchen91/article/details/101458703
6.3 openldap与nexus3集成
6.4 openldap与ssh服务集成
https://www.cnblogs.com/dmjx/p/9071068.html
https://blog.csdn.net/u011607971/article/details/86154096
6.5 openldap与Jenkins集成
https://blog.csdn.net/u011607971/article/details/86582378
6.6 openldap与svn集成
https://blog.ops-coffee.cn/s/nzv9uz-eyjt86uaxhapgtw
https://blog.csdn.net/w1213096890/article/details/79642948
七、容器化部署
docker 部署openldap及管理客户端
#!/bin/bash -edocker run -p 389:389 -p 636:636 --name ldap-service --hostname ldap-service --detach osixia/openldap:1.3.0docker run -p 6443:443 --name phpldapadmin-service --hostname phpldapadmin-service --link ldap-service:ldap-host --env PHPLDAPADMIN_LDAP_HOSTS=ldap-host --detach osixia/phpldapadmin:0.9.0#PHPLDAP_IP=$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" phpldapadmin-service)PHPLDAP_IP=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}')echo "choose hostip Go to: https://$PHPLDAP_IP:6443"echo "Login DN: cn=admin,dc=example,dc=org"echo "Password: admin"
八、参考文档
http://www.ldap.org.cn/
https://www.ilanni.com/?p=13964
https://www.ibm.com/developerworks/cn/linux/l-openldap
https://edu.51cto.com/course/6267.html
