Linux (CentOS) LDAP 구축 및 명령어 정리

김명래·2023년 1월 20일
0

LDAP 이란 ?

Lightweight Directory Access Protocol 의 약자로써

네트워크 상에서 조직이나 개인정보 혹은 파일이나 디바이스 정보들을 찾아보는 것을 가능하게 한 소프트웨어 프로토콜이다.

네트워크 상의 디렉토리 서비스 표준인 X.500의 DAP(Directory Access Protocol)를 기반으로 경량화 된 DAP Version 이다.

디렉터리 서비스란 이름을 기준으로(Key) 대상을(Value) 찾아 조회하거나 편집할 수 있는 서비스이다.

디렉토리 안에는 무엇이든 넣을 수 있으며 Insert나 Update 보다는 검색 요청에 특화되어 있다.

검색에 특화되어있기 때문에 트랜잭셕이나 "롤백"이 없다.

LDAP 서버에 여러 디렉토리 정보가 계층적 트리 구조 로 구성되어 있다.

마치 객체지향에서 상속구조와 비슷한것 같고 각 노드의 명칭을 "엔트리"라고 부른다.


  1. version check
grep . /etc/*-release

grep 명령어는 해당 파일에 데이터를 검색하여 가져올 때 사용한다.

  1. yum pakage install
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 경로에 있고 설정 항목중 변경이 필요한 부분이 있다. 하지만 직접 수정은 권장하지 않는다.

  1. db.ldif file 생성 및 적용

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
  1. ldap database 설정

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
  1. user 생성
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"
  1. 등록된 user 정보 검색
ldapsearch -x cn=tongchun -b dc=ngle,dc=co,dc=kr
profile
독자보다 필자를 위해 포스팅합니다

0개의 댓글