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 ์ธ์ฆ ์ค์