LDAP

๐Ÿ“Œ LDAP (Lightweight Directory Access Protocol) Guide


1๏ธโƒฃ LDAP๋ž€?

**LDAP (Lightweight Directory Access Protocol)**์€ ๋””๋ ‰ํ„ฐ๋ฆฌ ์„œ๋น„์Šค์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์˜คํ”ˆ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
LDAP๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ •, ๊ทธ๋ฃน, ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ค‘์•™ ์ง‘์ค‘์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

โœ… LDAP ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ”‘ ์ค‘์•™ ์ง‘์ค‘์‹ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ โ€“ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์—์„œ ๋™์ผํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ์‚ฌ์šฉ
  • ๐Ÿ” ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๋ฐ ์กฐํšŒ โ€“ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
  • ๐Ÿ”— ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ๊ณผ ์—ฐ๋™ ๊ฐ€๋Šฅ โ€“ Linux, Windows, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ์˜ ์ธ์ฆ ์—ฐ๋™
  • ๐Ÿข ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ์˜ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์ตœ์ ํ™” โ€“ Active Directory(AD)์™€ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

2๏ธโƒฃ LDAP ์„œ๋ฒ„ ์„ค์น˜ (Linux ๊ธฐ๋ฐ˜)

๐Ÿ”น Ubuntu/Debian์—์„œ OpenLDAP ์„œ๋ฒ„ ์„ค์น˜

sudo apt update
sudo apt install slapd ldap-utils -y

์„ค์น˜ ์ค‘ ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ(root DN password) ์„ค์ •์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ํ›„, ์„ค์ •์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

sudo dpkg-reconfigure slapd

๐Ÿ”น CentOS/RHEL์—์„œ OpenLDAP ์„œ๋ฒ„ ์„ค์น˜

sudo yum install openldap openldap-servers openldap-clients -y

์„ค์น˜ ํ›„, LDAP ์„œ๋น„์Šค๋ฅผ ์ž๋™ ์‹œ์ž‘ํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

sudo systemctl enable slapd
sudo systemctl start slapd

LDAP๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

sudo systemctl status slapd

3๏ธโƒฃ LDAP ์„œ๋ฒ„ ์„ค์ •

LDAP์˜ ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ์€ /etc/ldap/ldap.conf (Ubuntu) ๋˜๋Š” /etc/openldap/slapd.conf (CentOS)์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ 1. ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ (/etc/ldap/ldap.conf)

BASE    dc=example,dc=com
URI     ldap://127.0.0.1
TLS_CACERT /etc/ssl/certs/ca-certificates.crt

๐Ÿ”น ์„ค๋ช…

  • BASE โ€“ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ (์˜ˆ: dc=example,dc=com)
  • URI โ€“ LDAP ์„œ๋ฒ„ ์ฃผ์†Œ (ldap://127.0.0.1 ๋˜๋Š” ldaps:// ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
  • TLS_CACERT โ€“ TLS ์ธ์ฆ์„œ ๊ฒฝ๋กœ (๋ณด์•ˆ ์—ฐ๊ฒฐ ์„ค์ • ์‹œ ์‚ฌ์šฉ)

๐Ÿ“Œ 2. ๊ด€๋ฆฌ์ž ๊ณ„์ • ์ถ”๊ฐ€

LDAP ๊ด€๋ฆฌ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ldapadd ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ €, ๊ด€๋ฆฌ์ž ๊ณ„์ • ์ •๋ณด๋ฅผ ์ •์˜ํ•˜๋Š” .ldif ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

nano admin.ldif

๋‹ค์Œ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

dn: cn=admin,dc=example,dc=com
objectClass: organizationalRole
cn: admin
description: LDAP Administrator

๊ด€๋ฆฌ์ž ๊ณ„์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f admin.ldif

๐Ÿ“Œ 3. ์‚ฌ์šฉ์ž ์ถ”๊ฐ€

์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด .ldif ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

nano user.ldif

๋‹ค์Œ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

dn: uid=johndoe,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: John Doe
sn: Doe
uid: johndoe
mail: johndoe@example.com
homeDirectory: /home/johndoe
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
userPassword: {SSHA}hashed_password_here

์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f user.ldif

4๏ธโƒฃ LDAP ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ฐ ๊ด€๋ฆฌ

๐Ÿ“Œ 1. ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์กฐํšŒ

ldapsearch -x -LLL -b "dc=example,dc=com"

๐Ÿ“Œ 2. ํŠน์ • ์‚ฌ์šฉ์ž ์กฐํšŒ

ldapsearch -x -LLL -b "dc=example,dc=com" "(uid=johndoe)"

๐Ÿ“Œ 3. ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ

ldappasswd -x -D "cn=admin,dc=example,dc=com" -W -S "uid=johndoe,ou=users,dc=example,dc=com"

5๏ธโƒฃ LDAP ์—ฐ๋™ ์„ค์ •

LDAP ์„œ๋ฒ„๋Š” ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… Linux ์‹œ์Šคํ…œ ๋กœ๊ทธ์ธ ์—ฐ๋™ (PAM, NSS ์‚ฌ์šฉ)

sudo apt install libnss-ldap libpam-ldap ldap-utils

โœ… Active Directory์™€ ์—ฐ๋™ (SSSD ์‚ฌ์šฉ)

sudo apt install sssd

โœ… ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์—ฐ๋™ (Apache, Nginx)

sudo apt install libapache2-mod-authnz-ldap

6๏ธโƒฃ LDAP ํฌํŠธ ๋ฐ ๋ฐฉํ™”๋ฒฝ ์„ค์ •

LDAP๋Š” 389/TCP (๊ธฐ๋ณธ) ๋ฐ 636/TCP (SSL/TLS) ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ 1. ํฌํŠธ ํ™•์ธ

sudo netstat -tulnp | grep slapd

๐Ÿ“Œ 2. ๋ฐฉํ™”๋ฒฝ ์„ค์ •

โœ… UFW ์‚ฌ์šฉ (Ubuntu/Debian)

sudo ufw allow 389/tcp
sudo ufw allow 636/tcp
sudo ufw reload

โœ… firewalld ์‚ฌ์šฉ (CentOS/RHEL)

sudo firewall-cmd --permanent --add-port=389/tcp
sudo firewall-cmd --permanent --add-port=636/tcp
sudo firewall-cmd --reload

7๏ธโƒฃ ๊ฒฐ๋ก  ๐Ÿš€

LDAP๋Š” ๊ธฐ์—… ๋ฐ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ ์„œ๋น„์Šค๋ฅผ ์ค‘์•™ ์ง‘์ค‘์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ•„์ˆ˜ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
์œ„์˜ ์„ค์ •์„ ์ ์šฉํ•˜๋ฉด LDAP ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋ฉฐ, ์ธ์ฆ ์‹œ์Šคํ…œ๊ณผ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฐ๋™์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ PAM, SSSD, Apache/Nginx ๋“ฑ์˜ ์ถ”๊ฐ€ ์„ค์ •์„ ์ง„ํ–‰ํ•˜์„ธ์š”.

๐Ÿ“š ์ถ”๊ฐ€ ์ž๋ฃŒ
1๏ธโƒฃ LDAP ๊ณต์‹ ๋ฌธ์„œ
2๏ธโƒฃ OpenLDAP ์„ค์ • ๊ฐ€์ด๋“œ
3๏ธโƒฃ Linux LDAP ์ธ์ฆ ์„ค์ •

RSS Feed
๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ์ž