Solaris for ISPs 관리 설명서

5장 디렉토리 서비스 사용

SolarisTM for ISPsTM는 SunTM Directory Services를 사용하여 SunTM Internet AdministratorTM와 몇몇 서비스의 로그인 정보와 구성 요소 소프트웨어 정보를 저장합니다. 정보에는 Solaris for ISPs 기능을 지원하는 새로 정의한 객체와 표준 객체 클래스가 포함됩니다.

이 장에서는 Solaris for ISPs 정보 트리 구조, 명령줄에서 트리 항목 작성 및 필수 액세스 제어에 관한 정보를 제공합니다. 스키마 자체의 확장은 제 6 장을(를) 참조하십시오.

Sun Directory Services에서는 디렉토리 사용과 관리를 위해 다음 도구를 제공합니다.

Sun Directory Services 관련 서적 Sun Directory Services 3.1 Administration GuideSun Directory Services 3.1 User's Guide는 이런 도구의 시작과 사용에 관한 완전한 정보를 제공합니다. 지침서는 제품 CD-ROM에서 AnswerBook2 형식으로 제공합니다. 명령줄 프로그램은 1절(/opt/SUNWconn/man)에서 man 페이지로 수록하였습니다.

Solaris for ISPs 디렉토리 구조

Solaris for ISPs는 설치 및 구성할 때 만드는 DIT(directory information tree)에 특정한 구조가 있어야 합니다. 이 구조는 두 개의 컨텍스트 명명으로 구성되며, OSI(Open Systems Interconnection) 트리와 DC(Domain Component) 트리로 부릅니다. 두 트리의 위치는 병렬로 되어 있습니다. 병렬 구조는 DNS가 요청한 도메인 이름을 DC 트리를 통해 OSI 트리의 실제 컨텐트 항목으로 쉽게 매핑합니다.

OSI 트리 구조

OSI 트리에는 Solaris for ISPs, 그 구성 요소 서비스, 서비스 관리자 및 서비스 가입자의 실제 항목이 있습니다. 그림 5-1에서 필요한 구조를 보여줍니다.

그림 5-1 Solaris for ISPs OSI 트리

Graphic

OSI 트리에서 도메인 sun.com 항목은 고유 이름 o=sun,c=us 항목으로 표시합니다. 이 항목은 루트 도메인이라 부르며 Solaris for ISPs 고객의 업무를 나타냅니다. 디렉토리 서비스 설치 중에 루트 도메인 이름을 정합니다.

루트 도메인 아래에 다음과 같은 필수 organizationalUnit 항목 네 가지가 있습니다.

People, GroupsServices 노드는 정의한 각 도메인 항목에 있어야 합니다. Administrators 노드는 루트 도메인에만 있습니다.

그림 5-2에서 각 구성 단위의 일반적인 항목 집합을 예시합니다.

그림 5-2 OSI 트리 항목

Graphic

organizationalUnit 항목 engdomain 항목의 예입니다. 이 항목은 ISP 기업 고객이거나, ISP 가상 도메인 호스트 서비스를 가진 사람입니다. 도메인은 항목 두 개를 가져야 하는데 하나는 여기 OSI 트리에, 다른 하나는 도메인 이름 매핑을 위해 DC 트리에 있습니다. 두 항목을 올바르게 작성하는 자세한 내용은 "도메인 항목 작성"을(를) 참조하십시오.

루트 도메인과 마찬가지로 도메인에는 특정 organizationalUnit 항목이 필요합니다. 그림 5-3에서 보듯이 People, GroupsServices 항목이 루트 아래의 도메인에도 역시 필요합니다.

그림 5-3 OSI 트리의 도메인 구조

Graphic

OSI 트리에 도메인 항목을 작성할 때 People, GroupsServices 항목도 작성해야 합니다. 도메인의 서비스를 구성할 때 Services 구성 단위에 서비스 항목을 만듭니다. 도메인의 가입자 정보는 People 구성 단위에 ispSubscriber 항목으로 만듭니다.


주 -

관리자 항목은 Solaris for ISPs 현재 버전에서는 루트 도메인에만 만듭니다. GUI로 항목을 지정할 때 Sun Internet Administrator에서 작성합니다.


DC 트리 구조

DC(도메인 구성 요소) 트리는 sun.com과 같은 도메인 이름 형식을 OSI 트리의 해당 항목 고유 이름에 매핑합니다. 그림 5-4에서 보듯이 DC는 대개 OSI 트리에 비해 구조가 평이하고 단순합니다.

그림 5-4 Solaris for ISPs DC 트리

Graphic

그림 5-4에서 dc=sun,dc=com 항목은 OSI 트리의 o=sun,c=us 항목에 해당합니다. eng 도메인은 여기에 도메인 이름 서버(DNS) 형식 eng.sun.com을 매핑합니다.

도메인 항목 두 개를 만드는 방법에 대한 자세한 내용은 "도메인 항목 작성"을(를) 참조하십시오.

명령줄에서 디렉토리 항목 작성

디렉토리 서비스 항목 작성 방법에 관한 일반 정보는 Sun Directory Services 3.1 Administration Guide의 5장 "디렉토리 정보 로드와 유지 보수,"에 있습니다. 이 절에서는 Solaris for ISPs에 필요한 특정 항목을 작성하는 방법을 다룹니다.

Deja 도구로 디렉토리 항목을 작성하는 방법은 SunTM Internet AdministratorTM 온라인 도움말을 참조하십시오.

디렉토리 항목 작성: 일반 절차

Sun Directory Services에서는 다음과 같은 명령줄 유틸리티로 디렉토리 항목을 작성 및 수정합니다.

루트로 액세스해야 디렉토리 서비스 명령줄 유틸리티를 사용할 수 있습니다. 1절 참조 매뉴얼 페이지에 자세한 설명이 있습니다.

ldapaddldapmodify는 명령줄이나 지정된 파일에서 입력을 받습니다. 항목 정보가 비교적 길고 복잡할 수도 있기 때문에 다음 절에서 텍스트 파일이 필요한 형태들을 설명합니다.

각각의 경우, 다음 단계를 거쳐 항목 또는 항목들을 작성합니다.

  1. 디렉토리에 만들 항목 또는 항목들을 지정하는 파일을 작성합니다. 파일의 형식은 ldif(4) 참조 매뉴얼 페이지에 지정되어 있습니다.

  2. 루트로 액세스하여 ldapadd로 항목을 작성하고, 항목 정보 파일을 지정합니다.

ldapadd 명령의 형태는 항상 다음과 같아야 합니다.

# ldapadd -D "BindDN" -w password -f file

BindDN은 디렉토리에 바인딩하는 고유 이름(DN)으로 디렉토리 트리의 해당 부분에 쓰기 액세스를 가지며, password는 바인딩 암호입니다. file 옵션은 먼저 작성한 ldif 파일 이름으로 바꿉니다.

ldif(4) 파일의 구조

명령줄로 추가한 각 항목의 항목 정보를 보유한 ldif 형식의 파일을 만듭니다. 이 파일은 단순한 텍스트 파일로 빈 줄 한 칸으로 구분한 디렉토리 항목을 하나 이상 갖고 있습니다. 각 항목의 구조는 다음 예와 같습니다.


주 -

예에는 필수 속성만 나와 있습니다. 대체로 객체 클래스는 항목의 특별한 용도에 맞게 설정한 선택 속성을 많이 가집니다.


dn: ou=wcgate1,ou=eng,o=sun,c=US 
ou: wcgate1 
associateddomain: wcgate1.eng.sun.com  
objectclass: organizationalUnit 
objectclass: domainRelatedObject

설명

dn

은 작성한 항목의 고유 이름을 나타냅니다.

ou

는 작성한 항목의 명명 속성입니다. 공통 명명 속성에는 commonName, organizationalUnit(ou) 및 domainComponent(dc)가 있습니다.

associatedDomain

은 DC 트리에 있는 해당 항목의 도메인 이름(점 표기법의)입니다. OSI 트리와 DC 트리의 상호 작용에 관한 자세한 내용은 "Solaris for ISPs 디렉토리 구조"을(를) 참조하십시오. 도메인의 상호 참조 항목 두 개를 작성하는 방법은 "도메인 항목 작성"을(를) 참조하십시오.

이 위치에는 한 쌍의 값인 속성이 한 줄에 하나씩 많을 수도 있습니다.

objectClass

는 항목의 객체 클래스(유형)입니다. objectClass 항목이 많을 수도 있으나 여기에선 두 가지 예만 보여 줍니다.

사용 가능한 객체 클래스와 속성에 관한 자세한 내용은 이 지침서의 제 6 장와(과) Sun Directory Services 3.1 Administration Guide의 8장 "디렉토리 스키마 구성,"을 참조하십시오.

도메인 항목 작성

디렉토리에 도메인을 작성하려면 병렬 도메인 항목 두 개를 OSI 트리와 DC 트리에 각각 하나씩 작성합니다. 그런 다음, OSI 트리의 도메인 항목 아래에 필수 organizationalUnit 항목을 작성합니다.

eng.sun.com 아래 wcgate1 도메인을 작성하려면 다음 단계를 수행합니다.

  1. 텍스트 파일(예를 들면 domain.ldif)을 편집하여 OSI 트리 항목 데이터를 입력합니다.

    dn: ou=wcgate1,ou=eng,o=sun,c=US 
    ou: wcgate1 
    associateddomain: wcgate1.eng.sun.com 
    objectclass: organizationalUnit 
    objectclass: domainRelatedObject 

    항목의 associatedDomain 속성이 점 표기법(DNS 스타일)의 DC 트리 항목 이름이란 점에 유의하십시오.

  2. DC 트리 항목 데이터를 domain.ldif에 추가합니다.

    dn: dc=wcgate1,dc=eng,dc=sun,dc=com 
    dc: wcgate1
    associatedname: ou=wcgate1,ou=eng,o=sun,c=US 
    description: DNS-to-DN Mapping for wcgate1.eng.sun.com 
    labeleduri: ldap:///ou=wcgate1,ou=eng,o=sun,c=US??sub 
    objectclass: domain 
    objectclass: labeledURIObject

    항목의 associatedName 속성이 OSI 트리 항목의 고유 이름이란 점에 유의하십시오. RFC 2255에 지정되었듯이 labeledURI 속성도 같은 정보입니다.

  3. 필수 Services 구성 단위 항목의 데이터를 domain.ldif에 추가합니다.

    dn: ou=Services,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: Services 
    objectclass: organizationalUnit
  4. 필수 People 구성 단위 항목의 데이터를 domain.ldif에 추가합니다.

    dn: ou=People,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: People 
    objectclass: organizationalUnit 
  5. 필수 Groups 구성 단위 항목의 데이터를 domain.ldif에 추가합니다.

    dn: ou=Groups,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: Groups 
    objectclass: organizationalUnit
  6. domain.ldif를 저장하고 닫습니다.

  7. 루트로 액세스하여 자신의 바인드 DN과 암호로 다음 명령을 실행하여 디렉토리에 항목을 추가합니다.

    # ldapadd -D "cn=admin,o=sun,c=US" -w password -f domain.ldif

ldapadd가 완료되면 디렉토리는 그림 5-5처럼 됩니다.

그림 5-5 추가 도메인이 있는 디렉토리 구조

Graphic

가입자 항목 작성

Solaris for ISPs 가입자 형태는 다양합니다.

다음 절에서 간단한 항목을 작성한 후 여기에 항목을 추가하여 복잡한 가입자 항목을 구축하는 방법을 설명합니다.

기본 가입자 항목 작성

가입자 항목을 작성하려면 도메인과 People 조직 단위 항목이 먼저 있어야 합니다. 일단 이 항목들을 작성하면 텍스트 파일(예를 들면 people.ldif)을 편집하여 가입자의 데이터를 입력할 수 있습니다. 기본 가입자 항목에는 단일 객체 클래스 ispSubscriber와 매우 적은 필수 속성이 있습니다. 기본 가입자의 파일은 아래와 같습니다.

dn: cn=Jane Doe (jldoe),ou=People,ou=wcgate1,ou=eng,o=sun,c=US 
commonname: Jane Doe (jldoe) 
sn: Doe
uid: jldoe 
userpassword: hidden 
objectclass: ispSubscriber 

설명

dn

가입자 항목의 고유 이름입니다.

commonName

(객체 클래스가 (ispSubscriber인) 가입자 항목의 명명 속성입니다. Solaris for ISPs 가입자와 관리자의 commonName 속성의 값은 Firstname Lastname(userid) 형태입니다.

sn

가입자의 성입니다.

uid

가입자의 로그인 이름입니다.

userPassword

암호로, UNIX 계정과 암호를 공유할 경우 여덟 자로 제한됩니다. 디렉토리 서비스 관리 콘솔에서 설정한 암호화 방법으로 생성합니다.

objectClass: ispSubscriber

가입자 항목의 객체 클래스 유형입니다.

다른 속성 값의 데이터 블록을 파일에 추가하여 가입자 항목을 몇 개든지 작성할 수 있습니다. 작업이 완료되면 people.ldif를 저장하고 닫습니다. 루트로 액세스하여 자신의 바인드 DN과 암호로 다음 명령을 수행하여 가입자 항목을 디렉토리에 추가합니다.

# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif

FTP와 웹 가상 호스팅 정보 추가

SunTM Internet FTP ServerTM와 SunTM WebServerTM (SWS)를 함께 사용하도록 특수하게 구성한 가상 호스팅에 필요한 정보는 데이터 파일에 세 가지 속성만 추가하면 됩니다.

gidnumber: 60001 
uidnumber: 60001 
ispcontentdirectory: jldoe

설명

gidNumber

는 FTP와 웹 서비스용 가상 호스트 도메인에서 사용자에게 지정한 UNIX 그룹 ID입니다.

uidNumber

는 FTP와 웹 서비스용 가상 호스트 도메인에서 사용자에게 지정한 UNIX 사용자 ID입니다.

ispContentDirectory

는 가입자 컨텐트 파일의 위치로, 연관 도메인의 문서 루트에 상대적인 위치입니다.


주 -

uidNumbergidNumber 속성의 값을 설정하려면, 기존 UNIX 계정을 가상 FTP 도메인 액세스를 공유하도록 적절히 설정하였어야만 합니다. 가상 호스트 구성 정의에 관한 자세한 내용은 Sun Internet FTP Server 온라인 도움말을 참조하십시오.


데이터 블록을 파일에 추가하여 가입자 항목을 몇 개든지 작성할 수 있습니다. 작업이 완료되면 people.ldif를 저장하고 닫습니다. 루트로 액세스하여 자신의 바인드 DN과 암호로 다음 명령을 수행하여 가입자 항목을 디렉토리에 추가합니다.

# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif

이 항목들을 이미 작성했다면 ldapmodify를 실행해야 합니다. ldapmodify(1) 매뉴얼 페이지를 찾아 지침을 따르십시오.

원격 사용자 정보 추가

RADIUS 서버를 통해 ISP 서비스에 액세스하는 가입자 항목은 객체 클래스(remoteUser)를 추가해야 하며 여러 속성을 항목 정보에 추가합니다.


주 -

기본 Solaris for ISPs 구성에서는 루트 도메인을 RADIUS 가입자 항목의 검색 기반으로 지정합니다. 구성이 다르면 디렉토리 서비스 관리 콘솔로 RADIUS를 구성하고 검색 기반에 맞는 값을 입력합니다.


ldif 파일에 추가한 행은 다음과 같습니다.

objectclass: remoteUser
authsuffixname: @ispxpress
grpcheckinfo: authSuffixName
grpcheckinfo: userPassword
authserviceprotocol: Framed-User
framedrouting: None
framedprotocol: PPP
grpreplyinfo: authServiceProtocol
grpreplyinfo: framedProtocol
grpreplyinfo: framedRouting 

설명

objectClass: remoteUser

는 RADIUS 서버로 서비스에 액세스하는 가입자의 필수 객체 클래스입니다.

authsuffixname: @ispxpress

는 서로 다른 도메인에 있는 동일한 uid 항목을 RADIUS 서버가 구분할 수 있도록 가입자의 사용자 이름에 추가한 접미사 입니다. 적당한 접미사를 특정 사용자 항목에 입력합니다.

grpcheckinfo: authSuffixName

RADIUS 서버가 인증할 항목을 선택하기 전에 authSuffixName 속성 값을 확인해야 함을 나타냅니다.

grpcheckinfo: userPassword

RADIUS 서버가 인증할 항목을 선택하기 전에 userPassword 속성 값을 확인해야 함을 나타냅니다

authserviceprotocol: Framed-User

기본 RADIUS 구성을 사용하는 경우 속성을 예와 똑같이 입력합니다. 네트워크 액세스 서버 구성에서 맞는 값을 정합니다.

framedrouting: None

기본 RADIUS 구성을 사용하는 경우 속성을 예와 똑같이 입력합니다. 네트워크 액세스 서버 구성에서 맞는 값을 정합니다.

framedprotocol: PPP

기본 RADIUS 구성을 사용하는경우 속성을 예와 똑같이 입력합니다. 네트워크 액세스 서버 구성에서 맞는 값을 정합니다.

grpreplyinfo: authServiceProtocol

응답 메시지에 authServiceProtocol 속성 값을 포함하도록 RADIUS 서버에게 알립니다.

grpreplyinfo: framedProtocol

응답 메시지에 framedProtocol 속성 값을 포함하도록 RADIUS 서버에게 알립니다.

grpreplyinfo: framedRouting

응답 메시지에 framedRouting 속성 값을 포함하도록 RADIUS 서버에게 알립니다.

데이터 블록을 파일에 추가하여 가입자 항목을 몇 개든지 작성할 수 있습니다. 작업이 완료되면 people.ldif를 저장하고 닫습니다. 루트로 액세스하여 자신의 바인드 DN과 암호로 다음 명령을 수행하여 가입자 항목을 디렉토리에 추가합니다.

# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif

이 항목들을 이미 작성했으면 ldapmodify를 실행해야 합니다. ldapmodify(1) 매뉴얼 페이지를 찾아 지침을 따르십시오.

완성된 ldif 파일

복잡한 사용자의 완성된 ldif 파일은 다음과 같습니다.

dn: cn=Jane Doe (jldoe),ou=People,ou=wcgate1,ou=eng,o=sun,c=US 
commonname: Jane Doe (jldoe) 
sn: Doe
uid: jldoe 
userpassword: hidden 
gidnumber: 60001 
uidnumber: 60001 
objectclass: ispSubscriber 
objectclass: remoteUser
ispcontentdirectory: /home/users/jldoe
authsuffixname: @ispxpress
grpcheckinfo: authSuffixName
grpcheckinfo: userPassword
authserviceprotocol: Framed-User
framedrouting: None
framedprotocol: PPP
grpreplyinfo: authServiceProtocol
grpreplyinfo: framedProtocol
grpreplyinfo: framedRouting 

그룹 항목 작성

그룹 항목을 작성하려면 여러 항목들이 먼저 있어야 합니다.

일단 이 항목들을 작성하면 텍스트 파일(예를 들면 groups.ldif)을 시작하여 그룹의 데이터를 입력합니다. 일반적인 데이터 집합은 다음과 같습니다.

dn: cn=isp-gp1,ou=Groups,ou=wcgate1,ou=eng,o=sun,c=US 
cn: isp-grp1
objectclass: groupOfNames
member: cn=Ed Anchor (anchor),ou=People,ou=wcgate1,ou=eng,o=sun,c=US
member: cn=April Shower (showers),ou=People,ou=wcgate1,ou=eng,o=sun,c=US
member: cn=Chili Jones (relleno),ou=People,ou=wcgate1,ou=eng,o=sun,c=US

설명

dn

작성한 그룹의 고유 이름입니다.

cn

그룹 항목의 상대 고유 이름입니다.

objectClass

객체 클래스 groupOfNames가 이 항목 유형을 구분합니다.

member

member 속성은 기존 가입자 항목의 고유 이름입니다.

파일에 데이터를 추가하여 그룹 항목을 몇 개든지 작성할 수 있습니다. 작업이 완료되면 groups.ldif를 저장하고 닫습니다. 루트로 액세스하여 자신의 바인드 DN과 암호로 다음 명령을 수행하여 그룹을 디렉토리에 추가합니다.

# ldapadd -D "cn=admin,o=sun,c=US" -w password -f groups.ldif

Solaris for ISPs 액세스 제어

Solaris for ISPs에서는 디렉토리 서비스에 대한 액세스 제어를 설정하여 다른 사용자의 액세스를 막아 보안을 유지하고, 디렉토리 서비스가 필요한 소프트웨어 부분이 적절하게 액세스하도록 합니다. 액세스 제어의 일반적인 원칙은 읽기 액세스는 되지만 쓰기 액세스는 제한한다는 것입니다. 절대로 기존 액세스 제어를 변경하면 안되며, 변경할 경우엔 보안 위험을 야기하거나 Solaris for ISPs 오류가 발생합니다.

액세스 제어 규칙은 순서에 민감하다는 점을 명심합니다. Sun Directory Services에서 액세스를 확인할 때 요청에 적용되는 첫째 규칙을 사용합니다. 나머지 다른 규칙은 모두 무시합니다. 그러므로 파일에 있는 규칙의 순서를 바꾸면 안됩니다. 새 규칙을 만들 때, 실수로 기존 Solaris for ISPs 정보에 적용하거나 파일 안의 액세스 제어 규칙을 무효로 만들지 않도록 주의합니다.


주 -

디렉토리에 관리자로 바인딩하면 액세스 제어 확인이 해제됩니다.


일반적으로 Solaris for ISPs에 특별한 정보는 Solaris for ISPs 스키마 확장에서 정의한 객체 클래스의 항목에 저장되어 있습니다. 각각의 클래스 이름은 "isp" 문자열로 시작합니다. 이런 객체 클래스(또는 속성)를 포함한 액세스 구성 파일의 규칙은 Solaris for ISPs 규칙과 비슷하며 마찬가지로 변경에 주의해야 합니다. 액세스 제어 규칙은 /etc/opt/SUNWconn/ldap/current/dsserv.acl.conf에 정의되어 있습니다.

Sun Directory Services 액세스 제어에 관한 완전한 정보는 Sun Directory Services 3.1 Administration Guide의 1장, "디렉토리 개념 소개"와 4장, "디렉토리 서버 구성,"을 참조하십시오.

다음 절에서 Solaris for ISPs 액세스 제어가 보장하는 일반 작용을 설명합니다. "has access"구는 항목의 DN과 암호로 디렉토리에 바인딩하면 지시된 형식의 액세스가 가능함을 표시합니다.

Sun Internet Administrator 기능 활성화 규칙

Sun Internet Administrator에서는 작업할 때 다음 유형의 액세스가 필요합니다.

서비스 기능 활성화 규칙

다양한 Solaris for ISPs 서비스는, 하위 도메인 및 가상 도메인의 Services 노드에 위치한, 자신의 서비스 항목에 저장된 구성 정보를 기록하고 액세스할 수 있어야 합니다. 따라서 각 서비스에는 자체의 서비스 항목을 포함하여 DIT 해당 부분 항목을 작성 및 수정할 때 필요한 쓰기 액세스와 정보가 있습니다.

적합한 사용자 액세스 활성화 규칙

사용자(가입자 및 관리자)는 자신의 암호 속성 쓰기 액세스를 가지지만 항목의 다른 부분을 변경할 수는 없습니다. 그러나 Sun Internet Administrator 관리 액세스가 있는 관리자는 전역 액세스를 가지므로 모든 부분을 변경할 수 있습니다.