前言:最近在网上找了很多关于LDAP的文档(感谢广大网友的无私奉献),借鉴这些文档顺利完成了关于OpenLDAP帐号集中管理的配置,写下如下内容,方便以后回顾.
简介 :
Linux 发行版中提供的 OpenLDAP 软件按照一个C/S模型实现了轻量级目录访问协议(LDAP)。LDAP 的设计目的是提供一种有效的方法来查找和管理信息。OpenLDAP 软件和包提供了创建目录信息树(一个主要进行读操作的数据库)的工具。如何存储用户的帐号信息,并修改身份验证服务来使用 LDAP 获取所需要的信息。内部细节并不重要,因为这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前。
LDAP 信息被组织成属性和值的组合,称为 条目(entry)。条目可能会具有必须的属性或可选属性。一个条目的属性必须要遵循 /etc/openldap/schema/ 模式文件中定义的规则。规则包含在条目的 objectclass 属性中。看一下下面的关系,我们可以看出 posixAccount objectclass 中包含了密码文件条目的信息( posixAccount userPassword 是文件条目的 base64 编码)。
LDAP 目录条目和 Linux 密码文件之间的关系
配置 LDAP 服务器:
1,软件包的安装:
[root@station1 ~]# rpm -qa | grep openldap
openldap-2.3.43-3.el5          #包含 OpenLDAP 配置文件、库和文档
openldap-clients-2.3.43-3.el5  #包含客户端程序,用来访问和修改 OpenLDAP 目录
openldap-servers-2.3.43-3.el5  #包含 slapd 和 slurpd 服务器、迁移脚本和相关文件
[root@station1 ~]#

2,OpenLDAP 相关程序简介:
守护进程:
slapd:主 LDAP 服务器
slurpd:负责与复制 LDAP 服务器保持同步的服务器
对网络上的目录进行操作的客户端程序:
ldapadd:打开一个到 LDAP 服务器的连接,绑定、修改或增加条目
ldapsearch:打开一个到 LDAP 服务器的连接,绑定并使用指定的参数进行搜索
对本地系统上的数据库进行操作的几个程序:
slapadd:将以 LDAP 目录交换格式(LDIF)指定的条目添加到 LDAP 数据库中
slapcat:打开 LDAP 数据库,并将对应的条目输出为 LDIF 格式

OpenLDAP 的主要服务器配置文件是 /etc/openldap/slapd.conf。
slapd.conf 文件中包括一系列全局配置选项,它们作为一个整体应用到 slapd 上面,后面是包含数据库特有信息的数据库后端定义。如果一行内容是以空格开始的,就认为它是上一行的延续。空行和以 “#” 字符开头的注释行都会被忽略。

3,全局配置信息段的设置:
信息被组织成属性和值的组合,称为条目。条目属性必须遵循的规则是使用 objectclass 专用属性进行组织的,
可以在 /etc/openldap/schema/ 模式文件中找到。
对于身份验证来说,需要使用在 nis.schema 中定义的 posixAccount 和 shadowAccount
如下:
[root@station1 ~]# vim /etc/openldap/slapd.conf
include         /etc/openldap/schema/nis.schema
[root@station1 ~]# vim /etc/openldap/schema/nis.schema
# Object Class Definitions

objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount'
        DESC 'Abstraction of an account with POSIX attributes'
        SUP top AUXILIARY
        MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
        MAY ( userPassword $ loginShell $ gecos $ description ) )

objectclass ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount'
        DESC 'Additional attributes for shadow passwords'
        SUP top AUXILIARY
        MUST uid
        MAY ( userPassword $ shadowLastChange $ shadowMin $
              shadowMax $ shadowWarning $ shadowInactive $
              shadowExpire $ shadowFlag $ description ) )
设置日志选项:
[root@station1 ~]# vim /etc/openldap/slapd.conf
loglevel 296  #日志级别累加:296 = 256 日志连接/操作/结果 + 32 搜索过滤器处理 + 8 连接管理如果想要设置更详细的日志 man slapd.conf查看loglevel相关说明。
日志信息会被记录到 syslogd LOG_LOCAL4 机制中。还需要将下面的内容添加到 /etc/syslog.conf 中,并让 syslogd 重新读取自己的配置文件:
#save OpenLDAP log
local4.*                  /var/log/ldap.log
[root@station1 ~]# /etc/init.d/syslog restart
Shutting down kernel logger:                               [  OK  ]
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
Starting kernel logger:                                    [  OK  ]
[root@station1 ~]#

设置访问控制策略access:
access to attrs=shadowLastChange,userPassword
      by self write
      by * auth

access to *
      by * read

access 行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的 shadow 信息来反映密码的变化。希望身份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow 属性的惟一用处就是管理密码的过期问题。

设置database :
database  bdb
suffix  "dc=example,dc=com"
rootdn  "cn=Manager,dc=example,dc=com"
directory /var/lib/ldap
rootpw {MD5}mdjJOTAM6xcRKq2HWRTEDw==
使用新的bdb后端数据库:
指定后端数据库需要响应的查询的 DN 前缀,根前缀应该从自己的网络域名构建出来(唯一性)。
指定管理 DN,它不用于访问控制或限制数据库的操作。也不需要在目录中为这个 DN 指定一个条目。
为具有 rootpw 密码的管理员使用 DN 可以跳过 ACL 规则中的所有访问控制(密码admin,可直接写明文rootpw admin)。
[root@station1 ~]# echo rootpw `slappasswd -h {MD5}` >> /etc/openldap/slapd.conf
New password:
Re-enter new password:
[root@station1 ~]#
[root@station1 ~]# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG -p

4,配置服务器来使用ldap工具,
例如 ldapadd 和 ldapsearch。ldap 客户端工具的配置文件是 /etc/openldap/ldap.conf 要在 ldap 服务器上运行这些工具,只需要将该行修改成下面的内容:
#vim /etc/openldap/ldap.conf
BASE dc=example, dc=com
5,设置启动脚本在级别 2,3 和 5 时启动 LDAP:
[root@station1 ~]# chkconfig ldap on
[root@station1 ~]# /etc/init.d/ldap start
Checking configuration files for slapd:  config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]
[root@station1 ~]# netstat -antulp | grep slapd
tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      6326/slapd
tcp        0      0 :::389                      :::*                        LISTEN      6326/slapd
[root@station1 ~]#

6,迁移用户和密码信息
Red Hat 所提供的 openldap-servers 包包含 PADL Software Pty Ltd. 公司的MigrationTools 工具。使用这些工具将数据从 Linux 系统文件(例如/etc/group 和/etc/password)转换成LDAP LDIF 格式(数据库信息的一种文本格式的表示)这种格式是行界定、冒号分隔的属性-值对。有一组 Perl 脚本被安装到/usr/share/openldap/migration/ 中执行迁移。这些 Perl 脚本的配置信息包含在migrate_common.ph 文件的开头.这里只需要修改命名前缀的变量来使用条目的识别名.如下所示:
[root@station1 ~]# cd /usr/share/openldap/migration/
[root@station1 migration]# vim migrate_common.ph
# Default base
$DEFAULT_BASE = "dc=example,dc=com";
创建根项,并为Group 和 People 等创建下一级的组织单元:
[root@station1 migration]# ./migrate_base.pl > base.ldif
[root@station1 migration]# vim base.ldif
[root@station1 migration]# cat base.ldif
dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain

dn: ou=People,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
使用ldapadd 插入条目:
在LDAP 服务器上,使用 OpenLDAP 客户端工具 ldapadd 将以下条目插入到数据库中。简单身份验证必须要使用 -x 选项指定。在 slapd.conf 中定义的 rootdn 身份验证识别名是 “cn=Manager,dc=example,dc=com”。对于简单身份验证来说,必须使用密码。选项 -W 强制提示输入密码。这个密码就是在 slapd.conf 文件中指定的rootpw 参数的值。 -f 选项指定包含这些条目的 LDIF 文件:
[root@station1 migration]# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f base.ldif
Enter LDAP Password:
adding new entry "dc=example,dc=com"

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

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

[root@station1 migration]#

从 /etc/group 中迁移 ldapuser 组:
[root@station1 migration]# grep ldapuser /etc/group > group.in
[root@station1 migration]# ./migrate_group.pl group.in > group.ldif
[root@station1 migration]# cat group.ldif
dn: cn=ldapuser,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapuser
userPassword: {crypt}x
gidNumber: 503

[root@station1 migration]# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f group.ldif
Enter LDAP Password:
adding new entry "cn=ldapuser,ou=Group,dc=example,dc=com"

[root@station1 migration]#

从 /etc/passwd 中迁移 ldaptest 用户:
[root@station1 migration]# grep ldaptest /etc/passwd > passwd.in
[root@station1 migration]# ./migrate_passwd.pl passwd.in > passwd.ldif
[root@station1 migration]# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f passwd.ldif
Enter LDAP Password:
adding new entry "uid=ldaptest,ou=People,dc=example,dc=com"

[root@station1 migration]#

7,查看OpenLDAP数据库:
[root@station1 migration]# ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.com
dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain

# People, example.com
dn: ou=People,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

# Group, example.com
dn: ou=Group,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

# ldapuser, Group, example.com
dn: cn=ldapuser,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapuser
gidNumber: 503

# ldaptest, People, example.com
dn: uid=ldaptest,ou=People,dc=example,dc=com
uid: ldaptest
cn: ldaptest
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 503
gidNumber: 503
homeDirectory: /home/ldaptest

# search result
search: 2
result: 0 Success

# numResponses: 6
# numEntries: 5
[root@station1 migration]#
配置LDAP 客户端:
nss_ldap-226-6:包括两个 LDAP 访问客户端:nss_ldap 和 pam_ldap
nss_ldap 是一组C 库扩展,它允许LDAP 目录服务器用作一个用户和组信息的主源
pam_ldap 是一个 Linux-PAM 模块,它支持身份验证功能LDAP 身份验证要想正确地工作,需要配置两个服务:系统命名服务和身份验证服务。
系统命名服务(NSS)需要配置为使用 LDAP 来解析诸如用户和组帐号之类的资源。例如,在运行命令 ls -l 时,如果某个文件 inode 给出文件的所有者是 “user 501”,那么命名服务就需要将“uid 501” 解析成用户名,并在 ls 命令输出结果中输出。通常来说,这是通过查找 /etc/passwd 文件中的所有用户帐号实现的。由于用户现在都存储在 LDAP 目录中,因此系统需要配置成同时对 passwd 文件和 LDAP 目录中的帐号进行解析。这种功能是通过 /usr/lib/libnss_ldap.so 库提供的。
身份验证服务是实际向 LDAP 验证用户身份的服务。可插入身份验证模块(PAM)提供了本地 Linux 身份验证服务。下面我们将配置 PAM 先对本地的 /etc/passwd 文件检查用户帐号,然后再对 LDAP 服务器进行检查。PAM LDAP 模块可以用来将身份验证重定向到 LDAP 目录上。/lib/security/pam_ldap.so PAM 模块提供了 LDAP 身份验证功能。身份验证本身是由 PAM 程序执行的,它从身份验证候选机制中获取用户名,将其绑定到 OpenLDAP 服务器上,检索与这个 uid 条目(用户名条目)相关的 DN;从身份验证候选机制中获取密码,然后使用这个 DN 和密码试图将其绑定到 OpenLDAP服务器上。如果绑定成功,PAM 会报告说这个用户已经成功通过了 pam_ldap.so 提供的身份验证测试。根据 PAM 的配置不同,在用户看到命令行提示符之前可能会执行其他测试。
方法一:
[root@mail ~]# authconfig-tui
用户测试:
[root@mail ~]# su - ldaptest
su: warning: cannot change directory to /home/ldaptest: No such file or directory
-bash-3.2$
可以正常登录,只不过本地没有ldaptest用户的环境变量,至于这个问题的解决,与我前面的写的
NIS的方法相同,利用autofs解决。

方法二:
编辑客户端LDAP 配置文件 /etc/ldap.conf
[root@mail ~]# vim /etc/ldap.conf
host station1.example.com
base dc=example,dc=com
ssl off
修改 /etc/nsswitch.conf、/etc/sysconfig/authconfig 和 /etc/pam.d/system-auth。
[root@mail ~]# vim /etc/nsswitch.conf  (修改以下内容)
passwd:     files ldap
shadow:     files ldap
group:      files ldap
[root@mail ~]# vim /etc/sysconfig/authconfig
[root@mail ~]# grep yes < /etc/sysconfig/authconfig
USELDAPAUTH=yes
USESHADOW=yes
USELDAP=yes
USELOCAUTHORIZE=yes
USECRACKLIB=yes
[root@mail ~]# vim /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so
~                                       
[root@mail ~]# su - ldaptest
su: warning: cannot change directory to /home/ldaptest: No such file or directory
-bash-3.2$

配置复制LDAP:

主LDAP设置:
[root@station1 ~]# /etc/init.d/ldap stop
[root@station1 ~]# vim /etc/openldap/slapd.conf
##Replicas
replogfile /var/lib/ldap/replog
replica host=virt1.example.com:389
        binddn="cn=Manager,dc=example,dc=com"
        credentials=admin
        bindmethod=simple
[root@station1 ~]# /etc/init.d/ldap start
Checking configuration files for slapd:  config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]
Starting slurpd:                                           [  OK  ]
导出数据库:
[root@station1 ~]# ldapsearch -x > database.ldif
[root@station1 ~]#

从LDAP配置:
[root@virt1 ~]# yum -y install openldap openldap-clients openldap-servers
[root@virt1 ~]# scp station1:/root/database.ldif .
The authenticity of host 'station1 (192.168.1.254)' can't be established.
RSA key fingerprint is 2e:4f:b5:7b:15:32:e0:f9:f6:dc:72:ec:2b:09:84:fd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'station1,192.168.1.254' (RSA) to the list of known hosts.
root@station1's password:
database.ldif                                                                           100% 3149     3.1KB/s   00:00   
[root@virt1 ~]#
[root@virt1 ~]# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG -p
导入数据库:
[root@virt1 ~]# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f database.ldif
Enter LDAP Password:
adding new entry "dc=example,dc=com"

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

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

adding new entry "uid=user1,ou=People,dc=example,dc=com"

adding new entry "uid=user2,ou=People,dc=example,dc=com"

adding new entry "uid=user3,ou=People,dc=example,dc=com"

adding new entry "uid=user4,ou=People,dc=example,dc=com"

adding new entry "uid=user5,ou=People,dc=example,dc=com"

adding new entry "uid=user6,ou=People,dc=example,dc=com"

adding new entry "cn=user1,ou=Group,dc=example,dc=com"

adding new entry "cn=user2,ou=Group,dc=example,dc=com"

adding new entry "cn=user3,ou=Group,dc=example,dc=com"

adding new entry "cn=user4,ou=Group,dc=example,dc=com"

adding new entry "cn=user5,ou=Group,dc=example,dc=com"

adding new entry "cn=user6,ou=Group,dc=example,dc=com"

ldapadd: no DN specified
[root@virt1 ~]# vim /etc/openldap/slapd.conf

updatedn "cn=Manager,dc=example,dc=com"
updateref ldap://station1.example.com:389

[root@virt1 ~]# /etc/init.d/ldap start
Checking configuration files for slapd:  config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]

[root@virt1 ~]#
[root@station1 ~]# /etc/init.d/ldap start
Checking configuration files for slapd:  config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]
Starting slurpd:
测试:
[root@station1 migration]# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f passwd.ldif
Enter LDAP Password:
adding new entry "uid=admin1,ou=People,dc=example,dc=com"

[root@station1 migration]# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f group.ldif
Enter LDAP Password:
adding new entry "cn=admin1,ou=Group,dc=example,dc=com"

[root@station1 migration]#
[root@station1 ~]# tail -f /var/lib/ldap/replog
replica: virt1.example.com:389
time: 1275633007
dn: uid=admin1,ou=People,dc=example,dc=com
changetype: add
uid: admin1
cn: admin1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQxJFlIL2dGdnFIJG5LNkR0R2lJc1kwUW1jSUNnUXJ3OTA=
shadowLastChange: 14764
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 511
gidNumber: 512
homeDirectory: /home/admin1
structuralObjectClass: account
entryUUID: 5d185f0a-03ee-102f-862d-e17e784787d4
creatorsName: cn=Manager,dc=example,dc=com
createTimestamp: 20100604063007Z
entryCSN: 20100604063007Z#000000#00#000000
modifiersName: cn=Manager,dc=example,dc=com
modifyTimestamp: 20100604063007Z

tail: /var/lib/ldap/replog: file truncated
replica: virt1.example.com:389
time: 1275633030
dn: cn=admin1,ou=Group,dc=example,dc=com
changetype: add
objectClass: posixGroup
objectClass: top
cn: admin1
userPassword:: e2NyeXB0fXg=
gidNumber: 512
structuralObjectClass: posixGroup
entryUUID: 6a896468-03ee-102f-862e-e17e784787d4
creatorsName: cn=Manager,dc=example,dc=com
createTimestamp: 20100604063030Z
entryCSN: 20100604063030Z#000000#00#000000
modifiersName: cn=Manager,dc=example,dc=com
modifyTimestamp: 20100604063030Z

tail: /var/lib/ldap/replog: file truncated
[root@virt1 ldap]# tail /var/log/ldap.log
Jun  4 14:35:04 virt1 slapd[8765]: conn=2 op=5 RESULT tag=105 err=0 text=
Jun  4 14:35:04 virt1 slapd[8765]: daemon: activity on 1 descriptor
Jun  4 14:35:04 virt1 slapd[8765]: daemon: activity on:
Jun  4 14:35:04 virt1 slapd[8765]:  12r
Jun  4 14:35:04 virt1 slapd[8765]: 
Jun  4 14:35:04 virt1 slapd[8765]: daemon: read active on 12
Jun  4 14:35:04 virt1 slapd[8765]: daemon: epoll: listen=7 active_threads=0 tvp=NULL
Jun  4 14:35:04 virt1 slapd[8765]: daemon: epoll: listen=8 active_threads=0 tvp=NULL
Jun  4 14:35:04 virt1 slapd[8765]: conn=2 op=6 ADD dn="cn=admin1,ou=Group,dc=example,dc=com"
Jun  4 14:35:04 virt1 slapd[8765]: conn=2 op=6 RESULT tag=105 err=0 text=
[root@virt1 ldap]#

配置TLS:
[root@station1 ~]# openssl genrsa -out slapdkey.pem
Generating RSA private key, 512 bit long modulus
.++++++++++++
..................++++++++++++
e is 65537 (0x10001)
[root@station1 ~]# openssl req -new -x509 -key slapdkey.pem -nodes -out slapdcert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Hubei]:
Locality Name (eg, city) [Wuhan]:
Organization Name (eg, company) [lwh, Ltd.]:
Organizational Unit Name (eg, section) []:ldap
Common Name (eg, your name or your server's hostname) []:station1.example.com
Email Address []:root@example.com
[root@station1 ~]#
[root@station1 ~]# cp slapdkey.pem /etc/openldap/slapdkey.pem
[root@station1 ~]# cp slapdcert.pem /etc/openldap/slapdcert.pem
[root@station1 ~]# chown ldap:ldap /etc/openldap/slapdkey.pem
[root@station1 ~]# chown ldap:ldap /etc/openldap/slapdcert.pem
[root@station1 ~]# chmod 400 /etc/openldap/slapdkey.pem
[root@station1 ~]# chmod 400 /etc/openldap/slapdcert.pem
[root@station1 ~]# cp /etc/pki/tls/cert.pem /etc/openldap/cacerts/cacert.pem
[root@station1 ~]# chown ldap:ldap /etc/openldap/cacerts/cacert.pem
[root@station1 ~]# vim /etc/openldap/slapd.conf

 TLSCipherSuite HIGH:MEDIUM:+SSLv2
 TLSCACertificateFile /etc/openldap/cacerts/cacert.pem
 TLSCertificateFile /etc/openldap/slapdcert.pem
 TLSCertificateKeyFile /etc/openldap/slapdkey.pem

[root@station1 openldap]# /etc/init.d/ldap restart
Stopping slapd:                                            [  OK  ]
Stopping slurpd:                                           [  OK  ]
Checking configuration files for slapd:  config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]
Starting slurpd:                                           [  OK  ]

[root@station1 openldap]# netstat -antulp | grep slap
tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      7114/slapd         
tcp        0      0 0.0.0.0:636                 0.0.0.0:*                   LISTEN      7114/slapd         
tcp        0      0 :::389                      :::*                        LISTEN      7114/slapd         
tcp        0      0 :::636                      :::*                        LISTEN      7114/slapd         
[root@station1 openldap]#