CentOS 7 OpenLDAP 安装与配置 (非TLS)

软件安装包:

  1. OpenLDAP 2.4.44: ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.44.tgz
  2. BDB: http://download.oracle.com/berkeley-db/db-5.1.29.tar.gz

CentOS 7 准备:

  1. 关闭防火墙
    //停止firewall
    systemctl stop firewalld.service

    //禁止firewall开机启动
    systemctl disable firewalld.service 
    
    //[Optional]
    //设置iptables service
    yum -y install iptables-services
    vim /etc/sysconfig/iptables
    //增加规则
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 636 -j ACCEPT
    
  2. 关闭selinux
    //编辑selinux文件
    vim /etc/sysconfig/selinux

    //修改SELINUX=enforcing 为disabled
    SELINUX=disabled
    
    //设置selinux状态 
    setenforce 0
    
    //获取selinux状态
    getenfroce
    

安装OpenLDAP

  1. 依赖包
    //涉及libtool-ltdl与libtool-ltdl-devel,如不安装,在编译时报错:configure: error: could not locate libtool ltdl.h
    [root@localhost ~]# yum install ltdl -y

  2. 安装BDB
    //必须在解压包的build_unix目录中编译安装,否则会报错
    [root@localhost ~]# cd /usr/local/src/
    [root@localhost src]# tar -zxvf db-5.1.29.tar.gz
    [root@localhost src]# cd db-5.1.29/build_unix/
    [root@localhost build_unix]# ../dist/configure --prefix=/usr/local/berkeleydb-5.1.29
    [root@localhost build_unix]# make
    [root@localhost build_unix]# make install

  3. 更新lib库
    //保证在后面编译openldap时能找到lib和include下的库。
    [root@localhost build_unix]# cd /usr/local/src/
    [root@localhost src]# echo "/usr/local/berkeleydb-5.1.29/lib/" > /etc/ld.so.conf
    [root@localhost src]# ldconfig -v

  4. 安装OpenLDAP
    //编译选项可以通过./configure --help查看;
    //其中make test一步时间较长;
    [root@localhost ~]# cd /usr/local/src/
    [root@localhost src]# tar -zxvf openldap-2.4.44.tgz
    [root@localhost src]# cd openldap-2.4.44
    [root@localhost openldap-2.4.44]# ./configure --prefix=/usr/local/openldap-2.4.44 --enable-syslog --enable-modules --enable-debug --with-tls CPPFLAGS=-I/usr/local/berkeleydb-5.1.29/include/ LDFLAGS=-L/usr/local/berkeleydb-5.1.29/lib/
    [root@localhost openldap-2.4.44]# make depend
    [root@localhost openldap-2.4.44]# make
    [root@localhost openldap-2.4.44]# make test
    [root@localhost openldap-2.4.44]# make install

    //OpenLDAP 包在服务器上安装了很多程序:
    //守护进程:
    slapd:主 LDAP 服务器
    slurpd:负责与复制 LDAP 服务器保持同步的服务器
    //对网络上的目录进行操作的客户机程序。下面这两个程序是一对儿:
    ldapadd:打开一个到 LDAP 服务器的连接,绑定、修改或增加条目
    ldapsearch:打开一个到 LDAP 服务器的连接,绑定并使用指定的参数进行搜索
    //对本地系统上的数据库进行操作的几个程序:
    slapadd:将以 LDAP 目录交换格式(LDIF)指定的条目添加到 LDAP 数据库中
    slapcat:打开 LDAP 数据库,并将对应的条目输出为 LDIF 格式
    
  5. 设置可执行命令
    //对openldap客户端(bin)与服务器端(sbin)相关执行档添加软链接,也可以通过增加环境变量的方式设置
    [root@localhost openldap-2.4.44]# cd /usr/local/openldap-2.4.44
    [root@localhost openldap-2.4.44]# ln -s /usr/local/openldap-2.4.44/bin/* /usr/local/bin/
    [root@localhost openldap-2.4.44]# ln -s /usr/local/openldap-2.4.44/sbin/* /usr/local/sbin/

  6. 配置rootdn密码
    //这样rootdn密码为密文方式,复制输出密文到主配置文件rootdn对应的位置即可,如果不想麻烦,可以忽略此步,在主配置文件中使用明文即可。
    [root@locahost openldap-2.4.44]# slappasswd
    New password:

    Re-enter new password: 
    
    {SSHA}Jaxya/293KIkH8+3crZqiWpYLK829+pv
    [root@NGACentOS7 openldap-2.4.44]# 
    
  7. 修改主配置文件slapd.conf :
    [root@localhost openldap-2.4.44]# cd /usr/local/openldap-2.4.44/etc/openldap/
    [root@localhost openldap]# vim slapd.conf
    内容如下:
    #
    # See slapd.conf(5) for details on configuration options.
    # This file should NOT be world readable.

    //schema默认只有core.schema,各级需要添加,这里将同配置文件一个目录的schema目录中有的schema文件都加到配置文件中。
    include /usr/local/openldap-2.4.44/etc/openldap/schema/core.schema 
    include /usr/local/openldap-2.4.44/etc/openldap/schema/collective.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/corba.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/cosine.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/duaconf.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/dyngroup.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/inetorgperson.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/java.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/misc.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/nis.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/openldap.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/pmi.schema
    include /usr/local/openldap-2.4.44/etc/openldap/schema/ppolicy.schema
    # Define global ACLs to disable default read access.
    
    # Do not enable referrals until AFTER you have a working directory
    # service AND an understanding of referrals.
    #referral    ldap://root.openldap.org
    
    pidfile      /usr/local/openldap-2.4.44/var/run/slapd.pid
    argsfile /usr/local/openldap-2.4.44/var/run/slapd.args
    
    //#新增日志文件级别与路径,需要在编译时--enable-debug,否则日志文件输出,不影响调试模式。
    loglevel       256
    logfile        /usr/local/openldap-2.4.44/var/slapd.log
    
    # Load dynamic backend modules:
    # modulepath /usr/local/openldap-2.4.44/libexec/openldap
    # moduleload back_mdb.la
    # moduleload back_ldap.la
    
    # Sample security restrictions
    #    Require integrity protection (prevent hijacking)
    #    Require 112-bit (3DES or better) encryption for updates
    #    Require 63-bit encryption for simple bind
    # security ssf=1 update_ssf=112 simple_bind=64
    
    # Sample access control policy:
    #    Root DSE: allow anyone to read it
    #    Subschema (sub)entry DSE: allow anyone to read it
    #    Other DSEs:
    #        Allow self write access
    #        Allow authenticated users read access
    #        Allow anonymous users to authenticate
    #    Directives needed to implement policy:
    # access to dn.base="" by * read
    # access to dn.base="cn=Subschema" by * read
    # access to *
    #    by self write
    #    by users read
    #    by anonymous auth
    #
    # if no access controls are present, the default policy
    # allows anyone and everyone to read anything but restricts
    # updates to rootdn.  (e.g., "access to * by * read")
    #
    # rootdn can always read and write EVERYTHING!
    
    #######################################################################
    # MDB database definitions
    #######################################################################
    //这里使用mdb做后端数据库,也可修改为”bdb”参数,在OpenLDAP 官方文档” 11.4. LMDB”章节中有介绍mdb是推荐使用的后端数据库
    database mdb
    maxsize      1073741824 /*使用mdb做后端数据库时,根据官方文档中说明需要设置一个空间值,” In addition to the usual parameters that a minimal configuration requires, the mdb backend requires a maximum size to be set. This should be the largest that the database is ever anticipated to grow (in bytes). The filesystem must also provide enough free space to accommodate this size.”;如果使用bdb做后端数据库,需要将此项参数注释。*/
    
    //修改域名及管理员账户名。
    suffix       "dc=cisco,dc=com"
    rootdn       "cn=admin,dc=cisco,dc=com"
    # Cleartext passwords, especially for the rootdn, should
    # be avoid.  See slappasswd(8) and slapd.conf(5) for details.
    # Use of strong authentication encouraged.
    //使用密文密码,即前面使用slappasswd生成的密文。
    rootpw       {SSHA}Jaxya/293KIkH8+3crZqiWpYLK829+pv
    # The database directory MUST exist prior to running slapd AND 
    # should only be accessible by the slapd and slap tools.
    # Mode 700 recommended.
    //openldap数据目录,采用mdb时,在相应目录生成” data.mdb”与” lock.mdb”文件;采用bdb时,在相应目录生成” dn2id.bdb”与” id2entry.bdb”,及多个” __db.00*”文件。
    directory    /usr/local/openldap-2.4.44/var/openldap-data
    # Indices to maintain
    index    objectClass eq
    
  8. 初始化OpenLDAP(Optional)
    #如果采用mdb做后端数据库,此步可忽略,DB_CONFIG是 bdb/hdb数据库使用的。
    #与主配置文件中的配置有关,主配置文件确定使用bdb与数据存放路径。
    [root@localhost openldap]# cd /usr/local/openldap-2.4.44/var/openldap-data/
    [root@localhost openldap-data]# cp DB_CONFIG.example DB_CONFIG

  9. 启动OpenLDAP
    //直接在后台工作;
    [root@localhost ~]# /usr/local/openldap-2.4.44/libexec/slapd

    //非root用户不能监听端口1~1024,如果是非root用户,有可能需要重新定义服务端口。
    [root@localhost ~]# /usr/local/openldap-2.4.44/libexec/slapd -d 256
    
    //验证(任选一个)
    [root@localhost ~]# ldapsearch -x -b '' -s base'(objectclass=*)' 
    [root@localhost ~]# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
    [root@localhost ~]# netstat -tunlp | grep 389,ps -ef | grep slapd,ps aux | grep slapd
    
  10. LDIF文件配置组织,用户,条目等
    //创建一个管理员账号:
    [root@NGACentOS7 ~]# cat admin.ldif

    dn: dc=cisco,dc=com
    objectclass: dcObject
    objectclass: organization
    o: CISCO.Inc
    dc: cisco
    
    dn: cn=admin,dc=cisco,dc=com
    objectclass: organizationalRole
    cn: admin
    [root@NGACentOS7 ~]# 
    //注意:you need an empty line before each line starting with "dn:" LDIF separates entries by blank lines.
    
    //添加至ldap数据库
    //简单身份验证必须要使用 -x 选项指定。在 slapd.conf 中定义的 rootdn 身份验证识别名是 “cn=admin,dc=cisco,dc=com”。对于简单身份验证来说,必须使用密码。选项 -W 强制提示输入密码。这个密码就是在 slapd.conf 文件中指定的 rootpw 参数的值。包含这些条目的 LDIF 文件是使用 -f 选项指定的:
    [root@NGACentOS7 ~]# ldapadd -x -D "cn=admin,dc=cisco,dc=com" -W -f admin.ldif
    Enter LDAP Password: 
    
    adding new entry "dc=cisco,dc=com"
    
    adding new entry "cn=admin,dc=cisco,dc=com"
    
    /*验证
    [root@NGACentOS7 ~]# ldapsearch -x -b 'dc=cisco,dc=com' '(objectClass=*)'
    # extended LDIF
    #
    # LDAPv3
    # base <dc=cisco,dc=com> with scope subtree
    # filter: (objectClass=*)
    # requesting: ALL
    #
    
    # cisco.com
    dn: dc=cisco,dc=com
    objectClass: dcObject
    objectClass: organization
    o: CISCO.Inc
    dc: cisco
    
    # admin, cisco.com
    dn: cn=admin,dc=cisco,dc=com
    objectClass: organizationalRole
    cn: admin
    
    # search result
    search: 2
    result: 0 Success
    
    # numResponses: 3
    # numEntries: 2
    */
    

[Private]

NAM Lab 配置实例:

    [root@NGACentOS7 ~]# cat namPeople.ldif 
    dn:uid=Lily,ou=namPeople,dc=cisco,dc=com
    uid:Lily
    cn:Lily
    sn:Lily
    userPassword:Crdc%123
    objectClass:inetOrgPerson
    objectClass:posixAccount
    uidNumber:1315
    gidNumber:100
    homeDirectory:/home/Lily
    
    dn:uid=Lucy,ou=namPeople,dc=cisco,dc=com
    uid:Lucy
    cn:Lucy
    objectClass:account
    objectClass:posixAccount
    objectClass:top
    objectClass:shadowAccount
    userPassword:Crdc%123
    shadowLastChange:15064
    loginShell:/bin/sh
    uidNumber:1315
    gidNumber:100
    homeDirectory:/home/Lucy
    
    dn:uid=Leo,ou=namPeople,dc=cisco,dc=com
    uid:Leo
    cn:Leo
    objectClass:account
    objectClass:posixAccount
    objectClass:top
    objectClass:shadowAccount
    userPassword:Crdc%123
    shadowLastChange:15064
    loginShell:/bin/sh
    uidNumber:1316
    gidNumber:100
    homeDirectory:/home/Leo
    [root@NGACentOS7 ~]# 

ISE 关联配置:

Paste_Image.png
Paste_Image.png
Paste_Image.png

参考补充自:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容