S/W 개발 기반 시스템 구성 – 1. 인증 시스템

이 글은 S/W 개발에 가장 기본이 되는 이슈 추적(Issue Tracker), 버전 관리(Version Control), 빌드(Build), 지속적인 통합(CI) 시스템을 구성하는 방법에 대한 일련의 글 중 첫 번째이다. 누구나 자유롭게 쓸 수 있도록 할 생각이 아니라면 시스템을 구성할 때 가장 먼저 생각해야 할 부분은 인증일 것이다. 인증 방법은 여러가지를 사용할 수 있겠으나 여기서는 가능하면 여러 시스템에서 공통으로 쓸 수 있도록 OpenLDAP을 사용해 구성하는 방법을 설명한다. 참고로 앞으로 모든 시스템을 운영할 운영체제는 Windows Server 2008 R2 영문판(64bit)이므로 운영체제에 따라 설정 등에 차이가 있을 수 있다.

1. OpenLDAP 설치

참고: 윈도용 바이너리 패키지는 이 곳에서 받을 수 있다.

설치 과정은 특별한 것이 없이 과정을 따라 가면 된다. 선택 설정에서 서버를 지정하고, 포트는 굳이 바꿀 필요가 없겠다.

OpenLDAP select features

OpenLDAP optional settings

DB 백엔드는 BDB로 선택한다.

OpenLDAP select backend

암호는 설치를 마친 후 다시 바꿀 것이므로 기본값을 그대로 사용하고 DB 모니터링 기능도 선택한다(뭐가 좋은지는 모르겠다).

OpenLDAP root password

마지막으로 Install 버튼을 눌러 설치한다. 설치를 마치면 Kerberos에 대한 경로를 환경 정보에 설정하는데 사용하지 않는다면 굳이 재부팅할 이유는 없겠다.

OpenLDAP Ready to Install


2. OpenLDAP 설정

먼저 관리자 암호를 설정한다. OpenLDAP 설치 디렉터리에 있는 slappasswd.exe를 명령행에서 실행한 후 사용할 암호를 입력하면 그 내용을 암호화해 출력한다. 이 내용은 아래 slapd.conf 파일에서 rootpw에 사용한다.

OpenLDAP Slappasswd

slapd.conf 파일은 다음 내용처럼 설정한다. suffix, rootdn, rootpw, index 내용과 접근 권한에 주의한다.

# BDB Backend configuration file
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
ucdata-path ./ucdata
include ./schema/core.schema
include ./schema/cosine.schema
include ./schema/nis.schema
include ./schema/inetorgperson.schema
include ./schema/openldap.schema
include ./schema/dyngroup.schema

pidfile ./run/slapd.pid
argsfile ./run/slapd.args

# Enable TLS if port is defined for ldaps

TLSVerifyClient never
TLSCipherSuite HIGH:MEDIUM:-SSLv2
TLSCertificateFile ./secure/certs/server.pem
TLSCertificateKeyFile ./secure/certs/server.pem
TLSCACertificateFile ./secure/certs/server.pem
#######################################################################
# bdb database definitions
#######################################################################
database monitor

database bdb
suffix "dc=plab,dc=net"
rootdn "cn=Manager,dc=plab,dc=net"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}iiKbwrlrUoOkzk6Zvqm20k4qvmkREExP
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory ./data
dirtyread
searchstack 20
# Indices to maintain
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub

# Users can authenticate and change their password
access to attrs=userPassword
by dn="cn=Manager,dc=plab,dc=net" write
by self write
by anonymous auth
by * none
# All other attributes are readable to everybody
access to *
by dn="cn=Manager,dc=plab,dc=net" write
by self write
by * read

기본 구조를 만들기 위해 OpenLDAP 설치 디렉터리에 base.ldif 파일(이름은 상관 없다)을 만들고 내용은 다음처럼 한다. 기본 구조를 만들지 않으면 정보를 추가할 수 없다. 계정과 그룹만 관리할 것이므로 ou=People, ou=Groups 두 가지로 구성했다.

dn: dc=plab,dc=net
dc: plab
objectClass: top
objectClass: domain

dn:ou=People,dc=plab,dc=net
objectClass: top
objectClass: organizationalUnit
ou: People

dn:ou=Groups,dc=plab,dc=net
objectClass: top
objectClass: organizationalUnit
ou: Groups

실제 정보를 추가하기 전에 OpenLDAP 서비스를 중지하고 명령행에서 다음을 실행한다.

slapadd -f slapd.conf -l base.ldif

OpenLDAPdata 디렉터리에 DB가 만들어 진 것을 확인한 후 서비스를 다시 실행한다.

3. 계정 추가

참고: 윈도 클라이언트로 LDAP Admin을 사용한다.

툴바 아이콘에서 Connect 또는 메뉴에서 Start > Connect를 선택한다.

LDAP Admin Connect Menu

Connections 창이 뜨면 New Connection을 선택한다.

LDAP Admin Connections

Connection name에는 설정을 저장할 이름, Host에는 OpenLDAP을 설치한 서버 이름을 지정한 후 Fetch DNs 버튼을 누르면 Base DN을 보여준다. Base에 해당 내용을 선택하고 Username과 Password를 입력한 후 Test connection으로 연결을확인할 수 있다. 만약 연결되지 않으면 방화벽 설정(Inbound 규칙)에 OpenLDAP 서비스인 slapd.exe를 추가해 포트를 열어준다.

Username에 root 계정을 사용할 때는 slapd.conf에 있는 rootdn을 그대로 지정하면 되지만 일반 계정이라면 다음처럼 한다. 예를 들어 sandbox 계정이 ou=People에 속할 때 Username에는 uid=sandbox,ou=People,dc=plab,dc=net처럼 Base DN을 사용해 지정한다.

LDAP Admin Connection Properties

LDAP 서버에 접속 후 계정을 만든다. Home Directory는 특별히 사용하지 않으므로 적절히 지정하면 되겠다. 실제 계정을 만드는 것이 아니므로 Shadow Account를 선택하는 것에 주의한다. 암호는 해당 계정을 선택한 후 마우스 오른쪽 버튼을 누를 때 나오는 팝업 메뉴에서 Set Password…를 선택해 지정하면 되며 SHA를 기본으로 사용하면 된다.

LDAP Admin Account

You may also like...