Open LDAP 설치 및 구성

LDAP로 알려진 Light Weight Directory Access Protocol디렉토리에서 알려진 기업 내 X.500 서비스 컨테이너에 액세스하는 데 사용되는 프로토콜입니다. Windows Server 관리에 익숙한 사용자는 LDAP가 본질적으로 Active Directory와 매우 유사하다고 생각할 수 있습니다. Windows 워크 스테이션을 OpenLDAP CentOS 엔터프라이즈에 연결하는 데 널리 사용되는 개념이기도합니다. 다른 스펙트럼에서는 CentOS Linux 워크 스테이션이 리소스를 공유하고 Windows 도메인의 기본 기능에 참여할 수 있습니다.

CentOS에 LDAP를 Directory Server Agent, Directory System Agent 또는 DSA (이 두문자어는 모두 하나이며 동일 함)로 배포하는 것은 NDS와 함께 Directory Tree 구조를 사용하는 이전 Novell Netware 설치와 유사합니다.

LDAP의 간략한 역사

LDAP는 기본적으로 엔터프라이즈 리소스로 X.500 디렉터리에 액세스하는 효율적인 방법으로 만들어졌습니다. X.500과 LDAP는 모두 동일한 특성을 공유하며 LDAP 클라이언트가 일부 도우미를 사용하여 X.500 디렉토리에 액세스 할 수있을 정도로 비슷합니다. LDAP에는 자체 디렉토리 서버도 있습니다.slapd. LDAPDAP 의 주요 차이점 은 경량 버전이 TCP를 통해 작동하도록 설계 되었다는 것 입니다.

반면 DAP는 전체 OSI 모델을 사용합니다. 오늘날의 네트워크에서 인터넷, TCP / IP 및 이더넷의 출현으로 특정 레거시 컴퓨팅 모델 외부에서 DAP 및 기본 X.500 엔터프라이즈 디렉터리를 모두 사용하는 디렉터리 서비스 이식을 발견하는 경우는 거의 없습니다.

CentOS Linux 용 openldap과 함께 사용되는 주요 구성 요소는 다음과 같습니다.

openldap LDAP 지원 라이브러리
openldap 서버 LDAP 서버
openldap 클라이언트 LDAP 클라이언트 유틸리티
openldap-devel OpenLDAP 용 개발 라이브러리
compay-openldap OpenLDAP 공유 라이브러리
때리다 OpenLDAP의 디렉토리 서버 데몬
slurpd 엔터프라이즈 도메인에서 LDAP 복제에 사용

Note − 기업 이름을 지정할 때 다음을 사용하는 것이 가장 좋습니다. .localTLD. .net 또는 .com을 사용 하면 온라인 및 내부 도메인 인프라를 분리 할 때 문제가 발생할 수 있습니다. 회사 내부에서 외부 및 내부 작업 모두에 acme.com 을 사용하는 추가 작업을 상상해보십시오 . 따라서 acme.com 또는 acme.net 이라는 인터넷 리소스를 사용하는 것이 현명 할 수 있습니다 . 그런 다음 로컬 네트워킹 엔터프라이즈 자원은 acme.local표시 됩니다. 이것은 DNS 레코드 구성을 수반하지만 단순성, 웅변 성 및 보안 측면에서 비용을 지불합니다.

CentOS에 Open LDAP 설치

YUM 에서 openldap, openldap-servers, openldap-clients 및 migrationstools를 설치합니다 .

[root@localhost]# yum -y install openldap openldap-servers openldap-clients
migration tools
 Loaded plugins: fastestmirror, langpacks
 updates
 | 3.4 kB  00:00:00
 updates/7/x86_64/primary_db
 | 2.2 MB  00:00:05
 Determining fastest mirrors
 (1/2): extras/7/x86_64/primary_db
 | 121 kB  00:00:01
 (2/2): base/7/x86_64/primary_db
 | 5.6 MB  00:00:16
 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version
 Resolving Dependencies
 --> Running transaction check
 ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed
 ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed
 --> Finished Dependency Resolution
 base/7/x86_64/group_gz
 | 155 kB  00:00:00
 
 Dependencies Resolved
 
=============================================================================== 
=============================================================================== 
Package                                Arch
Version                             Repository                        Size 
=============================================================================== 
=============================================================================== 
Installing: 
openldap-clients                    x86_64
2.4.40-13.el7                    base                                 188 k 
openldap-servers                    x86_64
2.4.40-13.el7                    base                                 2.1 M  

Transaction Summary 
=============================================================================== 
===============================================================================
Install  2 Packages

Total download size: 2.3 M 
Installed size: 5.3 M 
Downloading packages:

Installed: 
openldap-clients.x86_64 0:2.4.40-13.el7                                       
openldap-servers.x86_64 0:2.4.40-13.el7                                       
Complete! 
[root@localhost]#

이제 slapd 서비스를 시작하고 활성화 해 보겠습니다.

[root@centos]# systemctl start slapd 
[root@centos]# systemctl enable  slapd

이 시점 에서 / etc / openldapopenldap 구조 가 있는지 확인합시다 .

root@localhost]# ls /etc/openldap/ 
certs  check_password.conf  ldap.conf  schema  slapd.d
[root@localhost]#

그런 다음 slapd 서비스가 실행 중인지 확인하십시오.

root@centos]# netstat -antup | grep slapd
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN      1641/slapd
tcp6       0      0 :::389                 :::*                   LISTEN      1641/slapd
 
[root@centos]#

다음으로 Open LDAP 설치를 구성하겠습니다 .

시스템 ldap 사용자가 생성 되었는지 확인하십시오 .

[root@localhost]# id ldap 
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@localhost]#

LDAP 자격 증명을 생성하십시오.

[root@localhost]# slappasswd  
New password:  
Re-enter new password:  
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10

[root@localhost]#

slappasswd의 출력을 저장해야합니다.

Open LDAP 구성

Step 1 − 도메인에 대한 LDAP를 구성하고 관리자를 추가합니다.

먼저 openLDAP 환경을 설정하려고합니다. 다음은 ldapmodify 명령 과 함께 사용할 템플릿 입니다.

dn: olcDatabase={2}hdb,cn=config 
changetype: modify 
replace: olcSuffix 
olcSuffix: dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootDN 
olcRootDN: cn=ldapadm,dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootPW 
olcRootPW: <output from slap

ldapmodify 명령을 사용하여 /etc/openldap/slapd.d/cn=config/olcDatabase = {1} monitor.ldif를 변경합니다.

[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/db.ldif  
SASL/EXTERNAL authentication started 
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth 
SASL SSF: 0 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 

[root@localhost cn=config]#

수정 된 LDAP 구성을 확인해 보겠습니다.

root@linux1 ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

[root@centos]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. 
 # CRC32 a163f14c
dn: olcDatabase = {2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139
creatorsName: cn=config
createTimestamp: 20170212022422Z
olcSuffix: dc=vmnet,dc=local
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k = 
entryCSN: 20170215204423.726622Z#000000#000#000000 
modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170215204423Z

[root@centos]#

보시다시피 LDAP 엔터프라이즈 수정이 성공했습니다.

다음으로 OpenLDAP 용 자체 서명 SSL 인증서를 생성하려고합니다. 이렇게하면 엔터프라이즈 서버와 클라이언트 간의 통신이 보호됩니다.

Step 2 − OpenLDAP 용 자체 서명 인증서를 생성합니다.

우리는 사용 하려면 openssl을 자체 서명 된 SSL 인증서를 만들 수 있습니다. 다음 장으로 이동하십시오.Create LDAP SSL Certificate with opensslOpenLDAP와의 보안 통신에 대한 지침. 그런 다음 SSL 인증서가 구성되면 OpenLDAP 엔터프라이즈 구성을 완료합니다.

Step 3 − 인증서와 보안 통신을 사용하도록 OpenLDAP를 구성합니다.

다음 정보를 사용하여 vim 에서 certs.ldif 파일을 만듭니다.

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem

그런 다음 다시 ldapmodify 명령을 사용하여 변경 사항을 OpenLDAP 구성에 병합합니다.

[root@centos rdc]# ldapmodify -Y EXTERNAL  -H ldapi:/// -f certs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@centos]#

마지막으로 OpenLADP 구성을 테스트 해 보겠습니다.

[root@centos]# slaptest -u 
config file testing succeeded 
[root@centos]#

Step 4 − slapd 데이터베이스를 설정합니다.

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && 
chown ldap:ldap /var/lib/ldap/*

OpenLDAP 스키마를 업데이트합니다.

cosine 및 nis LDAP 스키마를 추가합니다.

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

마지막으로 엔터프라이즈 스키마를 생성하고 현재 OpenLDAP 구성에 추가합니다.

다음은 vmnet이라는 도메인에 대한 것입니다. ldapadm 이라는 LDAP 관리자가있는 로컬 .

dn: dc=vmnet,dc=local
dc: vmnet
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=vmnet,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou = People,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: People

dn: ou = Group,dc=vmnet,dc=local 
objectClass: organizationalUnit 
ou: Group

마지막으로 이것을 현재 OpenLDAP 스키마로 가져옵니다.

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif
 Enter LDAP Password:
adding new entry "dc=vmnet,dc=local"

adding new entry "cn=ldapadm ,dc=vmnet,dc=local"

adding new entry "ou=People,dc=vmnet,dc=local"

adding new entry "ou=Group,dc=vmnet,dc=local"

[root@centos]#

Step 5 − OpenLDAP Enterprise 사용자를 설정합니다.

vim 또는 선호하는 텍스트 편집기를 열고 다음 형식을 복사하십시오. 이것은 "vmnet.local"LDAP 도메인의 "entacct"라는 사용자에 대해 설정됩니다.

dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword: {crypt}x 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

이제 저장된 위의 파일을 OpenLdap 스키마로 가져옵니다.

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif 
 Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local" 

[root@centos]#

사용자가 LDAP Enterprise에 액세스하기 전에 다음과 같이 암호를 할당해야합니다.

ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct 
,ou=People,dc=vmnet,dc=local"

-s 사용자의 비밀번호를 지정합니다.

-x 업데이트 된 비밀번호가 적용되는 사용자 이름입니다.

-D LDAP 스키마에 대해 인증하기위한 * 고유 이름 "입니다.

마지막으로 Enterprise 계정에 로그인하기 전에 OpenLDAP 항목을 확인하겠습니다 .

[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local
 # extended LDIF
 #
 # LDAPv3
 # base <dc=vmnet,dc=local> with scope subtree
 # filter: cn=entacct
 # requesting: ALL 
 # 
 # entacct, People, vmnet.local 
dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top 
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword:: e2NyeXB0fXg= 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

/ etc / passwd/ etc / groups 와 같은 것을 OpenLDAP 인증으로 변환하려면 마이그레이션 도구를 사용해야합니다. 이는 migrationtools 패키지에 포함되어 있습니다 . 그런 다음 / usr / share / migrationtools에 설치 합니다 .

[root@centos openldap-servers]# ls -l /usr/share/migrationtools/
total 128
-rwxr-xr-x. 1 root root  2652 Jun  9  2014 migrate_aliases.pl
-rwxr-xr-x. 1 root root  2950 Jun  9  2014 migrate_all_netinfo_offline.sh
-rwxr-xr-x. 1 root root  2946 Jun  9  2014 migrate_all_netinfo_online.sh
-rwxr-xr-x. 1 root root  3011 Jun  9  2014 migrate_all_nis_offline.sh
-rwxr-xr-x. 1 root root  3006 Jun  9  2014 migrate_all_nis_online.sh
-rwxr-xr-x. 1 root root  3164 Jun  9  2014 migrate_all_nisplus_offline.sh
-rwxr-xr-x. 1 root root  3146 Jun  9  2014 migrate_all_nisplus_online.sh
-rwxr-xr-x. 1 root root  5267 Jun  9  2014 migrate_all_offline.sh
-rwxr-xr-x. 1 root root  7468 Jun  9  2014 migrate_all_online.sh
-rwxr-xr-x. 1 root root  3278 Jun  9  2014 migrate_automount.pl
-rwxr-xr-x. 1 root root  2608 Jun  9  2014 migrate_base.pl

Step 6 − 마지막으로, 요청을 처리 할 수 ​​있도록 slapd 서비스에 대한 액세스를 허용해야합니다.

firewall-cmd --permanent --add-service=ldap 
firewall-cmd --reload

LDAP 클라이언트 액세스 구성

LDAP 클라이언트 액세스를 구성하려면 클라이언트에 openldap, open-ldap 클라이언트 및 nss_ldap 패키지가 필요합니다.

클라이언트 시스템에 대한 LDAP 인증 구성은 조금 더 쉽습니다.

Step 1 − 종속 패키지 설치 −

# yum install -y openldap-clients nss-pam-ldapd

Step 2authconfig로 LDAP 인증을 구성합니다 .

authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update

Step 3 − nslcd 서비스를 다시 시작합니다.

systemctl restart  nslcd