1. 개요
이 문서는 OpenLDAP 인증 환경에서 사용자별 서버 접근 제어와 su 명령 제한 정책을 구성하는 방법을 다룬다.
이를 통해 특정 계정이 특정 서버에서만 SSH 로그인이 가능하도록 제어하고,
관리자 외의 일반 사용자가 root 또는 다른 계정으로 su 전환하는 것을 방지할 수 있다.
⚠️ 주의:
문서에 등장하는 IP, 계정명, 도메인명은 예시이다.
실제 운영 환경에서는 반드시 조직 보안정책에 맞게 수정해야 한다.
2. 구성 개요
LDAP 기반 접근 제어는 다음 흐름으로 작동한다.
[사용자 SSH 로그인]
↓
[PAM → nslcd → OpenLDAP]
↓
(host 속성 확인)
↓
[허용된 서버(hostname)인 경우만 로그인 허가]
LDAP 서버에는 각 서버를 식별하는 host 객체가 등록되어 있으며,
사용자의 LDAP 엔트리에 “허용된 host” 정보가 존재해야 로그인할 수 있다.
3. LDAP 호스트 객체 구조
예시 트리 구조
dc=example,dc=com
├── ou=hosts
│ ├── cn=app-server01
│ ├── cn=app-server02
│ └── cn=db-server01
└── ou=people
├── uid=adminuser
└── uid=devuser
각 host 엔트리는 서버 hostname과 IP 정보를 포함한다.
4. 호스트 엔트리 생성 (서버에서 작업)
/etc/openldap/ldif/host.ldif
dn: ou=hosts,dc=example,dc=com
objectClass: organizationalUnit
ou: hosts
dn: cn=app-server01,ou=hosts,dc=example,dc=com
objectClass: ipHost
objectClass: device
cn: app-server01
ipHostNumber: 192.168.10.11
dn: cn=db-server01,ou=hosts,dc=example,dc=com
objectClass: ipHost
objectClass: device
cn: db-server01
ipHostNumber: 192.168.10.21
적용:
# ldapadd -x -W -D "cn=manager,dc=example,dc=com" -f /etc/openldap/ldif/host.ldif
5. 사용자 엔트리에 host 속성 추가
LDAP Admin 툴(또는 ldapmodify)을 이용해
사용자 엔트리에 host 속성을 추가한다.
예: uid=adminuser는 app-server01만 접속 가능하도록 설정
dn: uid=adminuser,ou=people,dc=example,dc=com
changetype: modify
add: host
host: app-server01
적용:
# ldapmodify -x -W -D "cn=manager,dc=example,dc=com" -f /etc/openldap/ldif/user_host.ldif
6. 클라이언트 설정 — LDAP host 제어 활성화
CentOS / RHEL 계열
/etc/nslcd.conf
아래 라인을 추가한다.
pam_authz_search (&(objectClass=posixAccount)(uid=$username)(|(host=$hostname)(host=$fqdn)(host=*)))
pam_authz_search구문은 로그인 시 LDAP에서 해당 UID의host속성을 조회하고,
접속 중인 서버 hostname이 매칭되지 않으면 인증을 거부한다.
/etc/nsswitch.conf
hosts: files dns myhostname ldap
서비스 재시작:
# systemctl restart nslcd
# systemctl restart nscd
7. 테스트 시나리오
uid=adminuser가app-server01에서 로그인 시도 → ✅ 정상 로그인- 동일 계정이
db-server01에서 로그인 시도 → ❌ “Access denied” uid=devuser가 host 속성이 없는 상태에서 로그인 → ❌ 인증 거부
8. su 명령 제한 구성
LDAP 인증 이후에도 root 전환(su)을 제한하기 위해 PAM 설정을 수정한다.
/etc/pam.d/su
다음 라인을 활성화한다.
auth required pam_wheel.so use_uid
wheel 그룹만 su 허용:
# usermod -aG wheel adminuser
다른 LDAP 사용자(devuser, qauser 등)는 su 명령이 거부된다.
9. 추가 SSH 접근 제한 (선택적 강화)
특정 계정을 특정 IP에서만 접속하도록 제한하려면/etc/ssh/sshd_config 에 다음 형식을 추가한다.
AllowUsers adminuser@192.168.10.50
AllowUsers svcbackup@10.20.0.*
SSH 재시작:
# systemctl restart sshd
SSH 기반 접근 제한은 LDAP host 제어보다 우선 적용된다.
LDAP 정책은 사용자 단위, SSH 정책은 네트워크 단위에서 보안을 보완하는 개념이다.
10. 로그 확인
LDAP host 제어가 동작하지 않을 경우,
다음 로그를 확인해 원인을 파악할 수 있다.
| 항목 | 경로 |
|---|---|
| LDAP 인증 로그 | /var/log/secure 또는 /var/log/auth.log |
| nslcd 연결 로그 | /var/log/messages |
| SSH 접근 시도 로그 | /var/log/secure |
| su 거부 이벤트 | auditd 로그 또는 /var/log/secure |
11. 결론
이 구성을 통해 다음과 같은 효과를 얻는다.
- LDAP 기반 서버 접근제어: 사용자별 host 속성으로 SSH 접근 제한
su명령 보안 강화: wheel 그룹 외 계정의 root 전환 방지- SSH 정책 병행: IP 기반 접근제어로 네트워크 보안 보완
- 중앙 정책 일원화: LDAP을 단일 인증·접근·감사 체계로 통합
이로써 OpenLDAP 기반 보안 아키텍처의 마지막 단계인
“운영계 서버 접근제어 및 계정 전환 통제”가 완성된다.
ⓒ 2025 엉뚱한 녀석의 블로그 [quirky guy's Blog]. All rights reserved. Unauthorized copying or redistribution of the text and images is prohibited. When sharing, please include the original source link.
🛠 마지막 수정일: 2025.10.22
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.