강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

리눅스마스터1급 : LDAP 서버 설치와 설정하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: LDAP 서버 설치와 설정하기

 

 

 

1) OpenLDAP 서버 설치

 

 

OpenLDAP은 대부분의 리눅스 배포판에서 패키지 형태로 제공되며, 설치 및 업데이트 도구를 통해 쉽게 설치할 수 있다.

 

 

 

다음과 같은 방법으로 설치하자.

 

 

 

 

 

 

 

yum install openldap openldap-servers openldap-clients

 

 

 

 

 

 

2) OpenLDAP 서버 설정

 

OpenLDAP 관리자 비밀번호 생성

 

 

 

 

 

 

[root@SULinux-64Bit ~]# slappasswd

New password: 비밀번호

Re-enter new password: 비밀번호

{SSHA}AS4d0W6HcCVurbmsVP3kWx7DYFcblAYS

 

 

 

 

 

 

위 명령어로 비밀번호를 생성한다.

 

 

 

생성된 결과는 다음 설정파일에 붙여 넣을 것이다.

 

 

 

 

 

OpenLDAP 서버 설정파일 수정

 

 

OpenLDAP 서버의 설정파일은 /etc/openldap/slapd.conf 이다.

 

 

 

다음 내용을 수정한다.

 

 

 

 

 

 

 

 

 

uffix "dc=my-domain,dc=com"

rootdn "cn=Manager,dc=my-domain,dc=com"

==>

suffix "dc=sulinux,dc=net"

rootdn "cn=Manager,dc=sulinux,dc=net"

 

 

 

 

 

 

 

조직의 도메인을 설정하는 것이며, DNS 도메인일 필요는 없지만, 비슷하게 하는 경우가 많이 있다.

 

 

 

예제는 sulinux.net 도메인을 사용하였다.

 

 

 

 

 

OpenLDAP 서버 시작

 

 

OpenLDAP 서비스를 시작하고, 서버 부팅 시 자동시작 될 수 있게 다음과 같이 설정한다.

 

 

 

 

 

 

 

 

 

[root@SULinux-64Bit sysconfig]# service ldap start

slapd ()를 시작 중: [ OK ]

[root@SULinux-64Bit sysconfig]# chkconfig ldap on

 

 

 

 

 

 

 

조직 구성 설정

 

이렇게 OpenLDAP 서버를 시작하였다면, 최상위 도메인 정보 외에는 아무런 정보가 없다.

 

 

 

리눅스 서버의 group, passwd, shadow 정보와 비슷하게 부서를 구성해 보자.

 

먼저 /root/base.ldif 파일을 다음 내용으로 작성한다.

 

 

 

 

 

 

 

 

 

dn: dc=sulinux,dc=net

dc: sulinux

objectClass: top

objectClass: domain

 

dn: ou=People,dc=sulinux,dc=net

ou: People

objectClass: top

objectClass: organizationalUnit

 

dn: ou=Group,dc=sulinux,dc=net

ou: Group

objectClass: top

objectClass: organizationalUnit

 

 

 

 

 

 

 

"dc=sulinux,dc=net" 엔트리를 추가하고, 하위에 People Group 엔트리를 추가한다.

 

 

 

여기서 People/etc/passwd, /etc/shadow 내용으로 구성할 것이며, Group/etc/group파일의 내용을 넣을 것이다.

 

 

 

다음 명령으로 위 작성한 내용을 LDAP DB에 넣어 보자.

 

 

 

 

 

[root@SULinux-64Bit sysconfig]# ldapadd -x -W -D "cn=Manager,dc=sulinux,dc=net" -f base.ldif

Enter LDAP Password: 비밀번호

adding new entry "dc=sulinux,dc=net"

 

adding new entry "ou=People,dc=sulinux,dc=net"

 

adding new entry "ou=Group,dc=sulinux,dc=net"

 

 

 

 

 

 

 

여기서 -x 옵션은 간단한 인증(Simple authentication), -W 옵션은 비밀번호 프롬프트에서 받는다는 것이며, -D 옵션은 DN을 지정하는 옵션이다.

 

 

 

위와같이 3개의 엔트리가 추가 된 결과를 확인할 수 있다.

 

 

 

 

 

다음으로 /etc/passwd 파일과, /etc/shadow 파일의 내용과 비슷하게 계정 정보를 생성한다.

 

 

 

이러한 속성타입과 속성은 스키마(/etc/openldap/schema/nis.schema)에 정의가 되어 있다.

 

 

 

다음내용으로 /root/user.ldif 파일을 생성한다.

 

 

 

 

 

 

 

 

 

dn: uid=sulinux,ou=People,dc=sulinux,dc=net

objectClass: inetOrgPerson

objectClass: posixAccount

objectClass: shadowAccount

uid: sulinux

sn: sulinux

givenName: sulinux

cn: sulinux

displayName: sulinux

uidNumber: 501

gidNumber: 501

userPassword: {crypt}8peqVKpwvyrWQ

gecos: sulinux

loginShell: /bin/bash

homeDirectory: /home/sulinux

shadowExpire: -1

shadowFlag: 0

shadowWarning: 7

shadowMin: 0

shadowMax: 99999

shadowLastChange: 15844

 

 

 

 

 

 

 

다음 명령으로 위 작성한 내용을 LDAP DB에 넣어 보자.

 

 

 

 

 

 

 

[root@SULinux-64Bit sysconfig]# ldapadd -x -W -D "cn=Manager,dc=sulinux,dc=net" -f user.ldif

Enter LDAP Password: 비밀번호

adding new entry "uid=sulinux,ou=People,dc=sulinux,dc=net"

 

 

 

 

 

 

 

다음으로 /etc/group 파일의 내용과 비슷하게 그룹 정보를 생성한다.

 

 

 

이러한 속성타입과 속성은 스키마(/etc/openldap/schema/nis.schema)에 정의가 되어 있다.

 

 

 

다음내용으로 /root/group.ldif 파일을 생성한다.

 

 

 

 

 

 

 

 

 

dn: cn=sulinux,ou=Group,dc=sulinux,dc=net

objectClass: posixGroup

cn: sulinux

gidNumber: 501

 

 

 

 

 

 

 

다음 명령으로 위에서 작성한 내용을 LDAP DB에 넣어 보자.

 

 

 

 

 

 

 

[root@SULinux-64Bit sysconfig]# ldapadd -x -W -D "cn=Manager,dc=sulinux,dc=net" -f group.ldif

Enter LDAP Password: 비밀번호

adding new entry "cn=sulinux,ou=Group,dc=sulinux,dc=net"

 

 

 

 

 

 

 

 

 

 

위에서 입력한 것은 사용자에 대한 정보와 그룹에 대한 정보이다.

 

 

 

만약 시스템에 100개의 계정이 등록되어 있다면 어떻게 할까? OpenLDAP은 마이그레이션 프로그램을 제공한다.

 

 

 

perl로 만들어진 스크립트이다.

 

 

 

 

 

[root@SULinux-64Bit ldap]# tree /usr/share/openldap/migration/

/usr/share/openldap/migration/

|-- README

|-- migrate_aliases.pl

|-- migrate_all_netinfo_offline.sh

|-- migrate_all_netinfo_online.sh

|-- migrate_all_nis_offline.sh

|-- migrate_all_nis_online.sh

|-- migrate_all_nisplus_offline.sh

|-- migrate_all_nisplus_online.sh

|-- migrate_all_offline.sh

|-- migrate_all_online.sh

|-- migrate_automount.pl

|-- migrate_base.pl

|-- migrate_common.ph

|-- migrate_fstab.pl

|-- migrate_group.pl

|-- migrate_hosts.pl

|-- migrate_netgroup.pl

|-- migrate_netgroup_byhost.pl

|-- migrate_netgroup_byuser.pl

|-- migrate_networks.pl

|-- migrate_passwd.pl

|-- migrate_profile.pl

|-- migrate_protocols.pl

|-- migrate_rpc.pl

|-- migrate_services.pl

|-- migrate_slapd_conf.pl

`-- migration-tools.txt

 

마이그레이션 프로그램으로 /etc/group파일을 LDIF(LDAP Data Interchange Format)의 파일로 만들어 보자.

 

[root@SULinux-64Bit suidc]# /usr/share/openldap/migration/migrate_group.pl \

/etc/group group.ldif

 

실행결과 생성된 group.ldif파일 중 일부 그룹에 대한 내용은 다음과 같다.

 

 

 

 

 

dn: cn=sulinux,ou=Group,dc=padl,dc=com

objectClass: posixGroup

objectClass: top

cn: sulinux

userPassword: {crypt}x

gidNumber: 501

 

이와 비슷하게 migrate_passwd.pl 프로그램으로 사용자 정보를 만들 수 있다.

 

 

 

 

 

 

 

 

 

 

OpenLDAP 서버의 데이터 베이스 파일들 확인

 

 

 

 

 

 

[root@SULinux-64Bit suidc]# tree /var/lib/ldap/

/var/lib/ldap/

|-- __db.001

|-- __db.002

|-- __db.003

|-- __db.004

|-- __db.005

|-- __db.006

|-- alock

|-- cn.bdb

|-- dn2id.bdb

|-- gidNumber.bdb

|-- givenName.bdb

|-- id2entry.bdb

|-- log.0000000001

|-- loginShell.bdb

|-- memberUid.bdb

|-- objectClass.bdb

|-- ou.bdb

|-- sn.bdb

|-- uid.bdb

`-- uidNumber.bdb

 

 

 

 

 

 

 

위와 같은 디렉토리의 파일들로 LDAP DB가 이뤄져 있다.

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  156 명