0. 용어
용어가 모르면 산으로 간다. 먼저 익히자
- DN (Distinguished Name) : 고유 명칭 (도메인)
- CN (Canonical Name) : 정식 이름 (사용자 이름)
- OU (Organizational Unit) : 조직 단위 (부서 이름)
- database : 데이터베이스 종류 (bdb)
- suffix : 최상위 dc
- rootdn : 관리용 DN, 사용자 추가 삭제 등 사용되는 DN
- rootpw : DN 인증을 위한 패스워드
- directory : 데이터베이스 위치
출처: https://co-de.tistory.com/114 [코알못:티스토리]
1. OpenLDAP 설치
sudo apt install slapd ldap-utils
sudo dpkg-reconfigure slapd
아래 가이드 참고하여 설치
https://www.tp-link.com/kr/support/faq/3570/
How to Install LDAP server on Ubuntu | TP-Link 대한민국
Crazy Egg cebsp_, _ce.s, _ce.clock_data, _ce.clock_event, cebs Hotjar OptanonConsent, _sctr, _cs_s, _hjFirstSeen, _hjAbsoluteSessionInProgress, _hjSessionUser_14, _fbp, ajs_anonymous_id, _hjSessionUser_<hotjar-id>, _uetsid, _schn, _uetvid, NEXT_LOCALE, _hj
www.tp-link.com
2. 설정
위 가이드대로 하다보면 중간에 DNS를 설정하도록 하는데, 만약 abc.def.ghi 로 설정했다면,
/etc/ldap/ldap.conf는 아래와 같이 수정한다.
만약 초기 설치 시 설정을 변경하고 싶다면 sudo dpkg-reconfigure slapd 부터 다시 시작하면 된다.
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666
BASE dc=abc,dc=def,dc=ghi
URI ldap://localhost
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
# TLS certificates (needed for GnuTLS)
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
3. 실행
sudo systemctl start slapd.service
netstat -an // 389로 뜬 서비스가 있는지 확인
* 이 때, wsl에서 실행 시에 version2가 아니라면 systemctl 등록이 안되므로 업데이트를 해주는 것이 앞으로 편한 길이 될 것이다.. 테스트 용도로 업데이트도 귀찮고 굳이 계속 띄울 필요가 없다면 아래의 실행 명령어를 참고하여 실행
ps -ef | grep ldap
openldap 352 1 0 22:30 ? 00:00:00 /usr/sbin/slapd -h ldap:/// ldapi:/// -g openldap -u openldap -F /etc/ldap/slapd.d
4. 루트 사용자 설정
LDAP에서 관리 태스크를 실행하려면 루트 사용자를 설정해야 한다.
루트 사용자를 olcRootDN이라고 한다.
1. 비밀번호 설정
slappasswd
-> 비밀번호 해시를 준다. 잘 저장해두기~
2. rootpw.ldif 파일 생성
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}abcdefg //저장해둔 비밀번호 입력
그리고 적용
ldapadd -Y EXTERNAL -H ldapi:// -f rootpw.ldif
이 때, 아래와 같은 메시지가 나오면 sudo로 실행.
> ldap_modify: Insufficient access (50)
sudo ldapadd -Y EXTERNAL .....
3. 스키마 불러오기
아래 쭉 진행..
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dyngroup.ldif
4. LDAP 서버에 대한 액세스 구성 및 관리자 사용자 구성. manager.ldif 파일 생성
dn: olcDatabase={1}mdb,cn=config //centos는 olcDatabase={2}mdb이고, ubuntu는 olcDatabase={1}mdb임
changetype: modify
replace: olcSuffix
olcSuffix: dc=abc,dc=def,dc=fgi //내가 설정한 것과 똑같이 입력
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=abc,dc=def,dc=fgi //여기도
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}abcde //아까 받은 비밀번호 입력
그리고 적용
ldapmodify -Y EXTERNAL -H ldapi:// -f manager.ldif
5. 관리자 사용자 등록
* 여기서 관리자, 사용자 등 용어가 많은데, 아래서 LDAP DIT 구조를 보면 많은 도움이 될 것이다. -
LDAP 인증 - 블로코 기술블로그
LDAP은 Lightweight Directory Access Protocol의 약자로, 분산 디렉터리 서비스에서 사용자, 시스템, 네트워크, 서비스, 앱 등의 정보를 공유하기 위한 오픈 프로토콜입니다.
www.blocko.io
아래 파일 생성 및 적용
dn, dc 꼭 바꿔줄 것!
dn: dc=abc,dc=def,dc=ghi //변경
objectClass: top
objectClass: dcObject
objectclass: organization
o: IBM RPA Server
dc: abc //이 부분 잊지 말고 바꿔줄 것!
dn: cn=Manager,dc=abc,dc=def,dc=ghi //변경
objectClass: organizationalRole
cn: Manager
description: LDAP Manager
dn: ou=rpausers,dc=abc,dc=def,dc=ghi //변경
objectClass: organizationalUnit
ou: rpaUsers
ldapadd -x -D cn=Manager,dc=abc,dc=def,dc=ghi -W -f org.ldif
-> 이 과정에서 오류가 있었음
자꾸 아래와 같은 오류가 발생함
Enter LDAP Password:
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
2번에서 설정한 URI를 localhost로 지정하였는데, 혹시 못찾나 싶어서 IP로 직접 넣어주고 ldap 서비스 재실행.
netstat -ano | grep 389로 모두 제대로 listening하고 있는지도 확인.
그리고 4.5번에서 dc 입력 부분에 기존 가이드 대로 따라 하다가 abc로 안바꿔줌. 내가 설정한 dc로 꼭 변경해줄 것!
용어가 익숙하지 않다보니 어떤 것들을 변경해야 하는지 놓치기 쉽다.
용어에 익숙해지도록 노력할 것!
5. 진짜 사용자 등록
addUserName.ldif 파일 생성
dn: cn=user1 Name,dc=abc,dc=def,dc=ghi
changetype: add
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
uid: user1
cn: user1
sn: user1
displayName: user1
mail: username@example.com
userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- dc=rpa,dc=ibm,dc=com 를 내가 설정한 DN으로 변경
- sn : 사용자 성
- uid : 사용자의 사용자 이름
- displayName에 : 사용자의 표시 이름
- mail : 사용자 이메일 주소
- userPassword에서 slappasswd 명령으로 얻은 사용자 비밀번호의 해시 입력
이름을 하도 많이 입력하라고 그래서 그냥 user1으로 통일했다.
등록하자.
ldapadd -D "cn=Manager,dc=abc,dc=def,dc=ghi" -W -f addUserName.ldif
adding new entry "cn=Manager,dc=abc,dc=def,dc=ghi"
라고 나오면 성공~
6. 이제 사용자가 잘 등록되었는지 확인해보자
ldapsearch -x -H ldap://localhost:389 -D "cn=Manager,dc=abc,dc=def,dc=ghi" "uid=없는유저"-W
> 패스워드 입력
이러면 뭐가 많이 나오는데.. 실제로 검색이 되면, 사용자의 모든 정보가 출력된다.
없는 경우엔 그냥 검색 조건만 출력된다.
ldapsearch -x -H ldap://localhost:389 -D "cn=Manager,dc=abc,dc=def,dc=ghi" "uid=user1 -W
이렇게 검색하면, 내가 아까 등록한 addUserName.ldif 의 정보가 출력될 것이다.
7. 추가~!! OU (그룹 개념)를 추가하고 그 하위에 사용자를 추가해보자!
7.1. OU 생성을 위한 파일 생성
vi addOu.ldif
dn: ou=newou,dc=abc,dc=def,dc=ghi
objectClass: organizationalUnit
ou: newou
7.2 OU추가
> ldapadd -x -D "cn=Manager, dc=abc,dc=def,dc=ghi " -W -f addOu .ldif
7.3 OU 그룹에 속한 사용자 추가를 위한 파일 생성
vi addUser1.ldif
dn: uid=user1, ou=newou,dc=abc,dc=def,dc=ghi
objectClass: inetOrgPerson
uid: user1
cn: User One
sn: One
userPassword: {SSHA}hashed_password
7.4. OU 그룹에 속한 사용자 추가
> ldapadd -x -D "cn=Manager, dc=abc,dc=def,dc=ghi " -W -f addUser1 .ldif
7.5 확인
> ldapsearch -x -H ldap://localhost:389 -D "cn=Manager,dc=abc,dc=def,dc=ghi" "uid=user1" -W
참고
LDAP 설치 및 구성 - https://www.ibm.com/docs/ko/rpa/23.0?topic=ldap-installing-configuring-openldap
OpenLDAP 설치 및 구성
www.ibm.com
LDAP이란 ? - https://ldap.or.kr/ldap-%EC%9D%B4%EB%9E%80/
'IT 잡동사니' 카테고리의 다른 글
Zeppelin multi instance (H/A) 구성 (0) | 2024.11.05 |
---|---|
MongoDB - 명령어 모음집 (0) | 2024.07.02 |
Zeppelin 설치(Windows) - UI 안나오는 이슈 해결, 원격 접속 허용 (0) | 2024.07.01 |
Zeppelin spark interpreter 연동 (0) | 2024.07.01 |
데이터 중심 애플리케이션 설계 - 복제 (0) | 2022.09.12 |