Lightweight Directory Access Protocol 의 약자로써
네트워크 상에서 조직이나 개인정보 혹은 파일이나 디바이스 정보들을 찾아보는 것을 가능하게 한 소프트웨어 프로토콜이다.
네트워크 상의 디렉토리 서비스 표준인 X.500의 DAP(Directory Access Protocol)를 기반으로 경량화 된 DAP Version 이다.
디렉터리 서비스란 이름을 기준으로(Key) 대상을(Value) 찾아 조회하거나 편집할 수 있는 서비스이다.
디렉토리 안에는 무엇이든 넣을 수 있으며 Insert나 Update 보다는 검색 요청에 특화되어 있다.
검색에 특화되어있기 때문에 트랜잭셕이나 "롤백"이 없다.
LDAP 서버에 여러 디렉토리 정보가 계층적 트리 구조 로 구성되어 있다.
마치 객체지향에서 상속구조와 비슷한것 같고 각 노드의 명칭을 "엔트리"라고 부른다.
grep . /etc/*-release
grep 명령어는 해당 파일에 데이터를 검색하여 가져올 때 사용한다.
yum yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
yum : 패키지 관리자
option
-y : 모든 설정에 yes
1-2. sladp실행
$ systemctl start slapd
$ systemctl enable slapd
1-3. 실행 확인
LDAP의 Port 번호는 389 이다.
netstat -antup | grep -i 389
netstat : 네트워크 연결상태, 라우팅테이블, 인터페이스 상태등을 보여준다.
1-4. ldappassword 생성
LDAP 을 실행시키기 위해서는 반드시 필요한 과정이다.
$ slappasswd
ldap의 설정 file들은 etc/openldap/slapd.d 경로에 있고 설정 항목중 변경이 필요한 부분이 있다. 하지만 직접 수정은 권장하지 않는다.
dc : domain
oclRootPW : 생성한 pwd 입력
vim db.ldif
------------------------------------------------------------------------------
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=ngle,dc=co,dc=kr
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=ngle,dc=co,dc=kr
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}3ppRnFtC1srY+NRt2q13G2l7f74cqveA
------------------------------------------------------------------------------
이후 update
ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif
3.monitor 접속 계정 설정
vim monitor.ldif
------------------------------------------------------------------------------
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=ngle,dc=co,dc=kr" read by * none
------------------------------------------------------------------------------
이후 update
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
database 설정은 /usr/share/openldap-servers/ 폴더 안에 있는 sample 파일을 업데이트하고 권한 설정
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/
이후 ldap schema 를 적용해야 한다.
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
5.domain 정보 update
vim base.ldif
dn: dc=ngle,dc=co,dc=kr
dc: ngle
objectClass: top
objectClass: domain
dn: cn=ldapadm, dc=ngle,dc=co,dc=kr
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager
dn: ou=People, dc=ngle,dc=co,dc=kr
objectClass: organizationalUnit
ou: People
dn: ou=Group, dc=ngle,dc=co,dc=kr
objectClass: organizationalUnit
ou: Group
이후 directory structure 빌드
ldapadd -x -W -D "cn=ldapadm,dc=ngle,dc=co,dc=kr" -f base.ldif
vim user.ldif
dn: uid=user,ou=People,dc=ngle,dc=co,dc=kr
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tongchun
uid: tongchun
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/tongchun
loginShell: /bin/bash
gecos: tongchun [Admin (at) nGle]
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
업데이트 user
ldapadd -x -W -D "cn=ldapadm,dc=ngle,dc=co,dc=kr" -f user.ldif
user 계정에 비밀번호 설정
ldappasswd -s ngle1234 -W -D "cn=ldapadm,dc=ngle,dc=co,dc=kr" -x "uid=user,ou=People,dc=ngle,dc=co,dc=kr"
ldapsearch -x cn=tongchun -b dc=ngle,dc=co,dc=kr