다음 이전 차례

6. 부가적 정보와 특징

이 절은 디렉토리를 질의하는데 사용할 수 있는 LDAP 클라이언트인 Netscape Address Book에 관한 정보를 다룬다. 또한 넷스케이프 네비게이터 버전 4.5 또는 그 이상과 LDAP 서버를 이용하여 로우밍 엑세스(roaming access)를 수행하는 방법에 대한 세부사항도 설명한다. 로우밍 엑세스는 다 수행되지는 않기 때문에 OpenLDAP 메일링 리스트에 매우 많이 논의되고 있는데 대부분의 사용자들은 LDAP 서버에 다운로드 및 업로드를 하는 반면 넷스케이프 네비게이터가 LDAP 서버와 함께 작동되는 방식을 좋아하지 않는다. 따라서 절을 읽은 후 로우밍 엑세스가 원하는 방식대로 작동하지 않는다 하더라도 괘념치 말기를 바란다. 많은사람들이 이러한 과정을 이미 거쳐 왔다. 이 절은 사람들에게 LDAP 프로토콜의 가능성에 대한 아이디어를 제공하기 위해 이런 특징을 소개한다. slapd 프로세스를 안전하게 종료하는 것과 slapd 로그에 대한 다소의 정보가 제공된다.

6.1 로우밍 엑세스(Roaming Access)

로우밍 엑세스를 사용하면 넷상의 어디에 있던지 넷스케이프 네비게이터와 LDAP서버를 이용하여 북마크, preference, 메일 필터 등을 가져올 수 있는데 이는 매우 멋진 특징이다. 어디서 웹에 엑세스하던지 브라우저에 대한 고유의 설정을 가질 수 있다고 상상해보라. 여행중에 로컬 북마크에 저장된 통화 사이트에 엑세스할 필요가 있다면 걱정하지 마라. 북마크와 다른설정 파일들을 LDAP 서버에 업로드해서 추후 어느 장소에 있던지 그들을 다 가져올 수 있다.

로우밍 엑세스를 수행하기위해 다음 단계를 따라야 한다:

- 새로운 스키마 파일 포함하기: 밑의 부분을 복사 및 붙여넣기 한후 .schema 확장자를 갖는 텍스트 파일로 저장한다. 대개 이 파일은 /usr/local/etc/openldap/schema 디렉토리내에 저장될 것이다. 원한다면 파일을 http://home.kabelfoon.nl/~hvdkooij/mull.schema로부터 다운받을 수 있다. slapd.conf 파일에 다음과 같이 core.schema 정의 파일을 포함해야 함을 명심하라:

include /usr/local/etc/schema/core.schema
#       이 스키마는 core 스키마가 적재되는 것을 전제로 한다

# 넷스케이프 로우밍 프로파일 정보를 OpenLDAP v2 내로 저장하는데 사용
# 이는 실제 프로파일 이름을 데이타베이스내로 저장한다.
attributeType ( 1.3.6.1.4.1.7081.1.1.1
         NAME 'nsLIProfileName'
         DESC 'Store Netscape Roaming Profile name'
         EQUALITY caseIgnoreMatch
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

# 넷스케이프 로우밍 프로파일 정보를 OpenLDAP v2 내로 저장하는데 사용
attributeType ( 1.3.6.1.4.1.7081.1.1.2
         NAME 'nsLIPrefs'
         DESC 'Store Netscape Roaming Profile preferences'
         EQUALITY caseExactIA5Match
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

# 넷스케이프 로우밍 프로파일 정보를 OpenLDAP v2 내로 저장하는데 사용
attributeType ( 1.3.6.1.4.1.7081.1.1.3
         NAME 'nsLIElementType'
         DESC ''
         EQUALITY caseIgnoreMatch
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

# 넷스케이프 로우밍 프로파일 정보를 OpenLDAP v2 내로 저장하는데 사용
attributeType ( 1.3.6.1.4.1.7081.1.1.4
         NAME 'nsLIData'
         DESC 'Store the actual data blocks'
         EQUALITY bitStringMatch
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

# 넷스케이프 로우밍 프로파일 정보를 OpenLDAP v2 내로 저장하는데 사용
attributeType ( 1.3.6.1.4.1.7081.1.1.5
         NAME 'nsLIVersion'
         DESC 'Store Netscape Roaming Profile version'
         EQUALITY integerMatch
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )

# 넷스케이프 로우밍 프로파일 정보를 OpenLDAP v2 내로 저장하는데 사용
# 이는 로우밍 프로파일의 기본 사용자로 LDAP 데이타베이스내에 정보를 
# 저장하기전에 생성되어야 한다.
objectClass ( 1.3.6.1.4.1.7081.1.2.1
         NAME 'nsLIProfile'
         DESC 'Base holder of the NetScape Roaming Profile'
         SUP top
         MUST ( objectClass $ nsLIProfileName )
         MAY ( nsLIPrefs $ uid $ owner )
         )

# 넷스케이프 로우밍 프로파일 정보를 OpenLDAP v2 내로 저장하는데 사용
# 이 객체 클래스는 실제 데이타를 저장할 것이다.
objectClass ( 1.3.6.1.4.1.7081.1.2.2
         NAME 'nsLIProfileElement'
         DESC 'Contains the actual Roaming Profile data'
         SUP top
         MUST ( objectClass $ nsLIElementType )
         MAY ( owner $ nsLIData $ nsLIVersion )
         )

# EOF

- 변경 필드 설정하기: 넷스케이프가 프로파일 데이타의 지역적 복사본을 LDAP 서버와 비교할 수 있음을 확인하기 위해 데이타베이스내의 변경 시간을 설정할 필요가 있다. slapd.conf 파일의 데이타베이스 부분에 다음과 같은 간단한 라인을 첨가하는 것으로 충분하다:

lastmod on

- Ldif 파일 변경하기: 넷스케이프의 로우밍 엑세스 특징을 이용하려고 하는 각 사용자들은 Ldif 파일에 프로파일 엔트리를 필요로 한다. 프로파일 엔트리를 갖는 간단한 Ldif 파일의 예를 보라:

dn: o=myOrg,c=NL 
o: myOrg 
objectclass: organization 

dn: cn=seallers,ou=People,o=myOrg,c=NL 
cn: seallers 
userpassword: myPassword 
objectclass: top 
objectclass: person 

dn: nsLIProfileName=seallers,ou=Roaming,o=myOrg,c=NL 
nsLIProfileName: seallers
owner: cn=seallers,ou=People,o=myOrg,c=NL 
objectclass: top 
objectclass: nsLIProfile

이 엔트리들은 ldapadd 프로그램을 이용하여 추가할 수 있다. 아마도 단지 로우밍 프로파일 (dn: nsLIProfileName=...)과 일치하는 엔트리만 추가할 필요가 있을 것이다.

- 넷스케이프 네비게이터 설정하기: 다음 단계는 LDAP 서버에 대한 로우밍 엑세스가 작동되도록 넷스케이프를 설정하는 것이다. 다음 순서를 따르라:

Go to Menu Edit -> Preferences -> Roaming User

이 옵션에 해당하는 체크박스를 클릭함으로써 이 프로파일에 대해 처음으로 로우밍 엑세스를 작동시켜야한다.

적절한 값을 username 박스에 쓰는데 이는 LDIF 파일의 사용자 프로파일 엔트리의 nsLIProfileName= 부분과 일치해야 한다. 예: sealers

로우밍 엑세스의 하위 옵션을 보기 위해 Preferences Window 왼편에 있는 로우밍 사용자 옵션 화살표를 클릭한다.

서버 정보를 클릭하고 LDAP 서버 옵션을 활성화시키며 다음 정보를 박스에 쓴다.

Address: ldap://myHost/nsLIProfileName=$USERID,ou=Roaming,o=myOrg,c=NL

User DN: cn=$USERID,ou=People,o=myOrg,c=NL

IMPORTANT: 넷스케이프는 브라우저를 실행시키기 전에 자동적으로 $USERID를 선택한 프로파일 이름으로 대체한다. 그래서 프로파일 sealler을 선택하면 $USERID를 sealler로 대체하고 프로파일 gonzales를 선택하면 $USERID를 gonzales로 대체한다. 프로파일에 익숙치 않다면 넷스케이프 커뮤니케이터 패키지에 있는 프로파일 매니저 어플리케이션을 실행시켜라. 이는 동일 머신에서 여러사람이 브라우저를 사용할 수 있도록 설계된 어플리케이션으로 브라우저에 대해 각자 자신의 고유한 설정을 가질 수 있다.

마지막은 서버를 재시작하는 것이다. 이를 안전하게 하는 방법과 다시 시작하는 방법은 각각 4.2절4절을 보길 바란다.

6.2 넷스케이프 주소록

LDAP 서버를 구동하고 있다면 여러가지 많은 클라이언트(예를들어 ldapsearch command line utiltity)를 이용하여 서버에 엑세스할 수 있는데 매우 흥미로운 것이 넷스케이프 주소록이다. 이는 넷스케이프 4.x 버전부터 이용할 수 있지만 LDAP 서버와의 안정된 상호운영을 위해서는 4.5 또는 그 이상의 버전을 사용해야 한다.

다음 순서를 따르라:

Open Netscape Navigator -> Go to Communicator Menu -> Address Book

넷스케이프 주소록은 어떤 default LDAP 디렉토리와 함께 시작될 수 있는데 각자의 LDAP 디렉토리를 추가해야 한다.

Go to File Menu -> New Directory

서버 정보를 박스에 쓴다. 예를들면:

- Description: TUDelft

- LDAP Server: dutedin.et.tudelft.nl

- Server Root: o=TUDelft, c=NL

Default LDAP 포트는 389인데 서버를 구축할때 이 옵션을 변경하지 않았다면 이를 변경하지말기 바란다.

box Show Names Containing를 이용해 간략한 질의 또는 Search for button을 이용해 진보된 질의를 해봐라.

6.3 LDAP Migration Tools

LDAP 이동 도구는 설정 파일을 LDIF 포맷으로 변환하는데 사용되는 펄 스크립트 모음인데 PADL 소프트웨어 회사에서 제공된다. 저자는 이를 사용하기전에, 자유로이 사용할 수 있음에도, 라이센스를 읽어 보길 권한다. 사용자를 인증하기 위해 LDAP 서버를 이용할 계획이라면 이 도구는매우 유용할 것이다. NIS 또는 password 아카이브들을 LDAP 서버와 호환되게 하는 LDIF 포맷으로 변환하기 위해 이동 도구를 사용하라. 또한 사용자, 그룹, 앨리어스(aliases), 호스트, 넷그룹, 프로토콜, RPCs와 서비스를 기존 네임 서비스(NIS, flat 파일과 NetInfo)로부터 LDIF 포맷으로 이동하기 위해 스크립트를 적용하라. LDAP 이동 도구의 다운로드와 더욱 많은 정보를 얻기 위해서 다음 주소로 가라:

http://www.padl.com/tools.html

패키지에 README 파일이있는데 스크립트 파일 이름은 직관적인데 우선 README 파일을 읽고 난후 스크립트를 실행하길 바란다.

6.4 LDAP를 사용한 인증

LDAP 서비스를 사용하기 위해 LDAP 클라이언트는 서비스에 대해 인증을 받아야한다. 즉, 클라이언트가 보기 및 작업이 허용된 것이 무엇인지를 서버가 결정할 수 있도록 클라이언트는 서버에게 데이타를 엑세스하려고 한다라고 말을 해야한다. 클라이언트가 LDAP 서버에 대해 성공적으로 인증받는다면 서버가 후에 클라이어트로부터 요청을 받을때 클라이언트가 요청을 수행하도록 허용되었는지 여부를 검사할 것이다. 이 프로세스를 엑세스 제어라 한다.

LDAP에서 인증은 "bind" 연산에서 지원되는데 Ldapv3는 anonymous, simple 및 SASL의 세가지 유형의 인증을 지원한다."bind" 연산없이 LDAP 요청을 보내는 클라이언트는 anonymous 클라이언트로 처리된다. Simple 인증은 LDAP 서버에 클라이언트(사용자)의 FQDN(Fully Qualified Domain Name)과 암호화되지 않은 패스워드를 보내는 것으로 이루어진다. 이 기구는 패스워드를 네트워크상에서 읽을 수 있기 때문에 보안 문제를 갖고 있다. 이러한 패스워드 노출을 피하기 위해 LDAP 서버에 의해 지원된다면 SSL과 같은 암호화된 채널내에서 simple 인증 기구를 사용할 수 있다.

마지막으로 SASL은 Simple Authentication and Security Layer (RFC 2222)로 인증 및 그 다음의 통신이 수행되는 보안 계층의 확립을 위해 데이타가 클라이언트와 서버간에 교환이 이루어지는 요구-응답 (challenge-response) 프로토콜을 지정한다. SASL을 사용함으로써 LDAP는 LDAP 클라이언트와 서버에 의해 합의된 모든 유형의 인증을 지원할 수 있다. SASL 사용은 Cyrus SASL 라이브러리의 설치가 중요하기 때문에 이 하우투 문서의 다음 버전에 설명될 것이다.

더구나 디렉토리 트리의 정보를 엑세스하는 사용자를 인증함과 동시에 LDAP 서버는 다른 서비스 (Sendmail, Login, Ftp, 등등)에 대해 사용자를 인증할 수 있다. 이는 특정 사용자 정보를 LDAP 서버로 옮겨 PAM (Pluggable Authentication Module) 기구를 사용하여 수행된다.

유닉스 초창기 이후로 사용자 인증은 사용자가 패스워드를 입력하고 입력된 패스워드를 시스템이 /etc/passwd 파일에 저장되어 있는 암호화된 공식 패스워드에 해당하는지 검사하는 방법을 통해 이루어졌다. 이러한 방법은 초창기에 행해졌는데 그 후 /etc/passwd 파일의 보다 복잡한 대체 및 스마트 카드라 불리는 하드웨어 디바이스를 포함하여 인증하는 많은 새로운 방법이 통용되었다. 그러나 새로운 인증 스키마가 개발될때마다 모든 필요한 프로그램(login, ftp 등)이 이를 지원하기 위해 새로 작성되어야 하는 것이 문제점이여다. PAM은 인증 계획에 상관없이 프로그램을 개발할 수 있는 방법을 제공한다. 이러한 프로그램들이 작동하기 위해 런타임시 프로그램에 부착되는 인증 모듈을 필요로 한다.

LDAP에 대한 인증 모듈은 다음 주소에서 tar ball 형태로 이용할 수 있다:

http://www.padl.com/pam_ldap.html

저자는 리눅스 배포판에 PAM이 설치되어 있다고 가정한다. 이렇지 않은 경우 다음 주소 http://www.kernel.org/pub/linux/libs/pam 보길 바란다. 다양한 리눅스 배포판들은 PAM과 관련하여 서로 다른 표준 설정을 사용한다. 대개 PAM 설정 파일은 /etc/pam.d 디렉토리내에 존재한다. 이 디렉토리에서 리눅스 박스에서 운영되고 있는 각 서비스에 대한 파일을 발견할 수 있다. 예를들어 리눅스가 부팅된 후 사용자들의 로그인에 LDAP 서버를 사용하길 원한다면 LDAP PAM 모듈을설치하고 /etc/pam.d 디렉토리내 login 파일에 다음 내용을 편집하길바란다:

#%PAM-1.0
auth            required     /lib/security/pam_securetty.so
auth            required     /lib/security/pam_nologin.so
auth            sufficient   /lib/security/pam_ldap.so
auth            required     /lib/security/pam_unix_auth.so try_first_pass
account         sufficient   /lib/security/pam_ldap.so
account         required     /lib/security/pam_unix_acct.so
password        required     /lib/security/pam_cracklib.so
password        required     /lib/security/pam_ldap.so
password        required     /lib/security/pam_pwdb.so use_first_pass
session         required     /lib/security/pam_unix_session.so

6.5 그래픽 LDAP 도구

6.6 로그

Slapd는 로그를 발생시키기 위해 syslog(8)를 사용하는데 이 유틸리티의 default 사용자는 LOCAL4 이지만 LOCAL0, LOCAL1에서 LOCAL7까지의 값이 허용된다.

로그 발생을 동작시키기 위해 대개 /etc 디렉토리내에있는 syslog.conf 파일을 편집해야 한다.

다음과 같은 라인을 추가하길 바란다:

local4.* /usr/adm/ldalog

이는 syslog에 대해 LOCAL4 default 사용자를 이용할 것이다. 위 라인의 구문에 익숙치않다면 syslog, syslog.conf 와 syslogd man 페이지를 보라. Default 사용자 변경 및 생성되는 로그 레벨을 지정하길 원한다면 slapd를 구동할때 다음 옵션을 지정하길바란다.

-s syslog-level 옵션은 slapd에게 어떤 레벨의 디버깅 보고서가 syslog(8)로 로그되어야 하는 지를 말해준다. 레벨은 메시지의 엄밀정도를 기술하는데 다음의 정열된 리스트(높은 수준에서 낮은 수준)의 키워드이다: emerg, alert, crit, err, warning, notice, info, and debug. 예: slapd -f myslapd.conf -s debug

-l syslog-local-user syslog(8)의 로컬 사용자를 선택한다. LOCAL0, LOCAL1,..., LOCAL7 까지의 값을 가질 수 있다. 디폴트는 LOCAL4 이다. 그러나 이 옵션은 로컬 사용자에게 syslogd(8)를 지원하는 시스템에만 단지 허용된다.

생성된 로그를 보라. 이들은 질의, 갱신, 바인딩 등과 관계된 문제를 해결하는데 상당한 도움을 제공할 것이다.


다음 이전 차례