달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2008. 11. 23. 01:36

13-4-3. AD관리-사이트(Sites) Windows Networking2008. 11. 23. 01:36

사이트를 관리하기 위해서는 관리도구의 "Active Directory 사이트 및 서비스"를 이용한다. 기본적으로 Forest환경의 모든 도메인 컨트롤러들은 Default-First-Site-Name 이라는 기본사이트에 소속이 된다. 기본적으로는 아무리 도메인 컨트롤러의 수가 많고 이들 도메인 컨트롤러가 지역적으로 각각 배치되어 있다고 하더라도 하나의 사이트에 묶여 있다. 예제에서는 서울과 부산이라는 두 개의 지역으로 나뉜 회사 환경에서 사이트를 생성하는 방법을 다루도록 한다. 이 회사에서는 서울과 부산 2군데의 지역으로 사용자가 배포되어 있고 각 지역에는 별도의 서버센터가 운영되고 있어서 각각 도메인 컨트롤러 1대씩을 지역에 배치했다고 가정한다.


<그림13-61. 새 사이트 만들기>

관리콘솔의 Sites를 클릭하고 "새 사이트"를 선택한다.

 


<그림13-62. 사이트 이름 지정 및 사이트 링크 지정>

이름항목에는 "Busan"이라고 입력하였다. 사이트와 사이트를 연결하기 위한 기본 사이트 링크인 "DEFAULTIPSITELINK"를 선택하고 [확인>을 누른다.


<그림13-63. 알림 메시지>

[확인>을 누르니 앞으로의 절차에 대해서 설명을 해 주는 메시지가 팝업된다. 읽어보자.


<그림13-64. 새로운 서브넷 만들기>

Subnets에 마우스를 두고 "새 서브넷"을 클릭한다. IP Subnet을 생성해 주기 위한 과정이다.


<그림13-65.서브넷 추가>

실제 물리적인 네트워크의 구조를 반영하여 네트워크 ID를 이용하여 서브넷을 추가한다.


<그림13-66.서브넷이 추가된 것을 보여주는 콘솔>

예제에서는 BUSAN사이트가 192.168.101.0192.168.100.0, 192.168.102.0 이라는 3개의 네트워크 ID, 기본사이트가 1개의 네트워크ID를 사용하고 있는 것을 보여준다.

 


<그림13-67. 서버의 이동>

사이트를 설정했으면 기본 사이트에 있는 서버중에서 부산에 있는 서버를 찾아서 "이동"시켜 준다.

 


<그림13-68. 서버를 이동할 사이트 선택 그림>

GOGUMA라는 이름의 서버를 Busan사이트로 이동시키고 있다.

:
Posted by 새벽예찬
2008. 11. 23. 01:32

13-4-2. AD관리-권한 위임 Windows Networking2008. 11. 23. 01:32

Active Directory의 권한위임 기능은 관리작업에 대한 효율성을 극대화 시킬 수 있는 방법이다. 앞에서 OU의 용도에 대해서 언급한 바 있다. 이 하나의 단위 덕분에 NT4.0에서 여러 개의 도메인으로 어쩔수 없이 구성해야만 했던 많은 상황들이 Active Directory에서는 하나의 도메인으로 통합을 할 수도 있는 환경을 제공하게 되었다.

 

상황은 다음과 같다. Windowsnetwork.msft은 미국, 일본 등지에 지사를 가지고 있는데, 미국지사에 인사권이 별도로 있어서 직원의 인사가 직접 이루어지고 있다. 서울의 본사에서는 미국에서 근무하는 사용자들에 대한 계정관리를 미국에 있는 담당자 하나를 임명해서 맡기고자 한다. 새로운 직원이 들어오면 계정을 만들어 주고, 직원이 퇴사하면 계정을 삭제하고, 사용자들이 몇 차례 패스워드를 잘못 입력하여 잠긴 계정을 풀어주는 등의 계정관리를 미국지사에서 처리하도록 하고자 하는 것이다. 이와 같은 작업을 처리하기 위해서 NT4.0때는 미국지사를 위한 별도의 도메인을 생성해야만 했다. 계정관리를 할 수 있도록 미국지사의 사용자 하나를 ‘Account operators’ 그룹의 멤버로 포함시켜 주면 미국의 계정관리를 하게 할 수는 있었지만, 문제는 이 사용자가 관리자가 원하지 않는 일본지사나 본사의 계정까지도 관리가 가능해 지기 때문에 제한적인 권한을 부여하는 것이 불가능했기 때문이다. 계층적인 관리구조가 제공되지 못했기 때문이었다.

 

권한위임의 방법은 이와 같은 경우에 최상의 솔루션이 될 수 있다. 다음과 같은 절차를 거쳐서 접근할 수 있다. <그림13-55>을 보면 전체조직이라는 OU가 있고 하위에는 미국’OU를 포함한 몇 개의 지사별로 구분해 놓은 OU들이 있다. 미국OU를 열어보니 몇 개의 그룹과 사용자계정이 보인다. 예제의 상황에서는 미국OU에 있는 수용이라는 사용자에게 미국지사에 대한 사용자 계정관리를 위임하고자 한다.


<그림13-55. 권한 위임 구성 1>

ADUC관리콘솔을 통해 관리를 위임하고자 하는 곳을 클릭한다.

 


<그림13-56. 권한 위임 구성 2>

미국’OU를 마우스 오른쪽 클릭하여 제어위임메뉴를 선택한다.


<그림13-57. 권한 위임 구성 3>

사용자 또는 그룹화면에서 [추가]버튼을 눌러서 관리를 위임받을 사용자 또는 그룹을 찾아서 추가한다.

 

다음의 위임할 작업화면에서는 다음 일반 작업을 위임위임할 사용자 정의 작업 만들기의 두개의 라디오 버튼을 볼 수 있다. 기본선택된 위의 버튼은 이미 정의된 많이 사용할 만한 관리작업들이 나열되어 있다.


<그림13-58. 권한 위임 구성 4>

위의 작업만으로 만족할만한 관리의 위임을 시키지 못할 경우, 예를 들면 사용자 계정을 생성할 수 있게 하고 싶지만 삭제는 하지 못하게 하기를 원한다거나 하는 경우는 아래의 위임할 사용자 정의 작업 만들기를 클릭하고 [다음]으로 진행하여 직접 보다 제한적인 작업을 결정해 줄 수도 있다. 예제에서는 기본설정을 두고 [다음]버튼을 눌렀다.


<그림13-59. 권한 위임 구성 5>

제어 위임 마법사가 완료되었음을 보여주는 화면이다. 내용을 잘 살펴보면 정보를 잘 요약해 주고 있다.

 

 

위와 같이 권한 위임을 마친다음 테스트를 해 보았다. 권한을 위임받은 김수용이라는 사용자로 로그온을 해서 Active Directory 사용자 및 컴퓨터 관리콘솔을 열어서 미국’ OU를 클릭하고 새로만들기를 누르니 사용자를 생성할 수 있는 메뉴가 나타난다. 위에서 관리자로 로그온했을 때 모든 개체를 생성할 수 있었던 것과 비교해 보라.


<그림13-60. 권한 위임 구성 6>


:
Posted by 새벽예찬
2008. 11. 23. 01:29

13-4-1. AD관리-개체생성하기 Windows Networking2008. 11. 23. 01:29

Active Directory Database에 저장할 수 있는 하나하나의 단위를 가리켜서 Object(개체)라고 부른다. 종류로는 컴퓨터, 연락처, 그룹, 조직단위, 프린터, 사용자, 공유폴더 등이 있다. Active Directory를 설치한 후 생성되는 관리도구의 ‘Active Directory 사용자 및 컴퓨터를 통해서 접근한다.


<그림13-50. Active Directory Object 생성하기>

 

<그림13-50>에서 볼 수 있듯이 새로 만들기라는 메뉴를 통해서 Active Directory에 생성할 수 있는 개체들은 9가지가 있다. 각각이 무엇인지를 간단하게 정리를 해 보자.

 

    사용자 (User Account) : 네트워크상에서 자원을 관리하기 위해 컴퓨터를 사용하는 사람에 해당하는 계정이다. 기본적으로 사용자는 네트워크 활동을 하는 사람이 이를 테면 회사의 직원인지 아닌지 등을 판단하는 근거가 되며 그 사용자의 진위여부를 가리기 위해 암호라는 기본보안조치를 취해 놓게 된다. 그런 이유로 우리가 네트워크 상에서 다른 서버에 접근하고자 할 때는 사용자이름과 암호가 필요한 것이다.

 

    컴퓨터 (Computer Account) : Windows 9x 컴퓨터들과는 달리 NT기반의 컴퓨터들은 컴퓨터 계정이라는 것을 가진다. 사용자와 구분하여 컴퓨터를 네트워크에서 하나의 자원으로 관리하기 위한 방법이다. 도메인 환경에서 NT기반의 시스템들을 도메인에 참여시켜 사용(멤버서버)하기 위해서는 반드시 도메인의 Active Directory에 컴퓨터 계정을 가져야 한다.

 

    그룹 (Group Account) : 사용자들을 효율적으로 조직하여 자원관리를 용이하게 하기 위해 사용된다. 글로벌 그룹, 도메인 로컬 그룹, 유니버설 그룹이 있다.

 

    프린터 : 공유된 프린터를 Active Directory의 목록에 포함시킴으로써 사용자들이 프린터 자원에 보다 쉽게 접근하도록 제공한다.

 

    연락처 (Contact) : 사용자계정과 구분해야 한다. 연락처는 사용자의 E-mail 주소를 저장할 목적으로 사용된다. Exchange Server 2000 버전은 이전의 5.5 버전과는 달리 별도로 디렉터리 데이터베이스를 유지하지 않는다. 완전하게 Active Directory와 통합이 되었는데, 회사에서 계정을 가진 사용자와 구분하여 도메인의 계정은 할당하지 않고 메일주소록에만 리스트 시킬 수 있는 형태의 연락처를 제공하고 있는 것이다. 이 연락처로써 계정이 생성되면 그 계정으로는 도메인에서 로그온을 한다거나 자원에 대한 권한을 가질 수는 없고 아웃룩에서 주소록으로 확인할 수 있을 뿐이다.


<그림13-51. 사용자와 연락처의 비교>

 

<그림13-51>을 보면 ‘wssong’이라는 이름의 사용자계정과 ‘thkim’이라는 이름의 연락처를 만들어 둔 것을 구분할 수 있다. 이름 옆의 아이콘이 서로 다른 것을 기억하자. ‘thkim’이라는 이름은 도메인에서 로그온을 한다거나 하는 것과는 무관하다. 다만 메일 클라이언트 프로그램으로 Outlook을 사용하는 클라이언트가 Exchange Server 에 연결하여 주소록을 클릭했을 때 ‘thkim’이라는 이름을 확인할 수 있게 할 것이다.


<그림13-52. Outlook 의 주소록 화면>

 

    InetOrgPerson : Microsoft LDAP X.500 디렉터리 서비스에서 조직 내의 사람을 나타내는 데 사용되며 다른 LDAP디렉터리로부터 Active Directory로의 효율적인 마이그레이션을 지원하기 위해 Windows Server 2003 Active Directory에서 추가되었다.

 

    MSMQ 대기열 별칭 : InetOrgPerson과 같이 Windows Server 2003 Active Directory에서 추가된 개체이다. MSMQ를 사용하는 서버들이 설치시 특정개체를 생성하고 Message Queuing과 관련된 다양한 정보를 저장할 용도로 사용한다.

 

    공유폴더 (Shared Folder) : 공유폴더를 Active Directory에 게시(publishing)함으로써 사용자들에게 자원을 쉽게 찾을 수 있도록 제공한다. 구체적인 사항에 대해서는 AD의 장점을 이야기 하면서 언급한 바 있다.

 

    조직단위(Organizational Unit; OU) : 그룹과 많이 혼돈하여 사용하는 경향이 있는데 구분해야 한다. 그룹이 사용자를 관리하기 쉽도록 부서, 직급 등으로 조직화하는 것에 반하여 OU IT관리조직이 회사의 시스템을 보다 효율적으로 관리하도록 나누는 관리단위이다. 사용자와는 무관하다. 사용자들은 자신이 어떤 조직단위에 소속되었는지 알 지도 못하고 알 필요도 없다. 다만 IT관리자는 회사의 조직을 OU로 나눔으로써 그룹정책, 관리권한의 위임 등의 방법을 통하여 관리의 최적화를 이뤄낼 수가 있다.

 

이상으로 Active Directory에서 생성되는 9가지 개체들에 대해서 간단히 설명하였다. 지금부터는 간단한 예제를 통해서 개체를 생성해 보도록 하겠다. 예제에서 windowsnetwork.msft 도메인의 하위에는 Bulitin, Computers, Domain Controllers, ForeignSecurityPrincipals, Users 라는 5개의 서브폴더가 보인다. 각각 Active Directory에서 기본생성되는 로컬그룹, 멤버서버로 등록되는 컴퓨터계정, 도메인컨트롤러들, 트러스트관계를 맺었을때의 외부 컴퓨터들, 기본제공되는 글로벌 그룹과 Administrator 등과 같은 사용자들의 기본적인 저장위치가 된다. 이 기본적인 폴더는 그대로 두고 추가의 작업을 해 본다.

 

제일 먼저 조직단위(OU)를 먼저 추가할 것을 권장한다. 시행착오를 겪으면서 이해가 되겠지만 관리가 상당히 편해진다. 필자 개인적인 생각으로는 NT4.0의 도메인과 Active Directory 도메인과의 관리적인 측면에서 큰 변화라면 바로 이 조직단위(OU)의 유무를 이야기 하고 싶다. Active Directory에서는 이 OU를 제공함으로써 계층적인 도메인의 관리를 가능하게 만들었고, 관리의 효율성을 극대화 시키고, 도메인의 구조를 간소화 시키는 등 Active Directory가 돋보이게 만드는데 크게 기여를 하고 있기 때문이다. OU를 적절히 사용하는 것은 원활한 관리와 직결된다고 하겠다.

 

Active Directory사용자 및 컴퓨터 관리도구를 열고 도메인이름을 클릭한후 새로만들기 에서 조직단위를 클릭하여 OU를 생성한다.


<그림13-53. 새 개체 만들기 조직단위>

 

예제에서 전체조직이라는 이름을 할당했다. ‘전체조직이라는 이름의 OU를 먼저 생성한 다음 차례대로 그 아래에는 서울, 미국, 대전, IT관리등의 하위OU를 생성했다.


<그림13-54. OU 관리 예제>

 

일단은 위와 같이 조직을 관리할 수 있도록 구성을 먼저 하고 그 다음에 사용자 및 그룹들을 생성하는 것이 바람직하다. 같은 방법으로 각각의 OU에서 사용자, 그룹 등의 개체들을 생성할 수 있다.


:
Posted by 새벽예찬
2008. 11. 22. 08:55

13-3. Active Directory 설치 Windows Networking2008. 11. 22. 08:55

13-3-1. 첫 번째 도메인의 첫 번째 도메인 컨트롤러 설치 (포리스트 루트 도메인 생성)

 

Windows Server 2003에서는 NT4.0과 비교하여 도메인의 구성 측면에서 많은 변화를 보인다. Active Directory의 설치 역시 그러하다. NT Server 4.0을 셋업할 때 PDC, BDC, 독립실행형 서버등으로 역할을 미리 결정해야 했던 것과는 달리 Windows Server 2003에서는 OS의 설치와 도메인컨트롤러서비스의 설치가 분리되어 있다. 그렇기 때문에 모든 Windows Server 2003은 기본적으로 독립실행형 서버이고 나중에 Active Directory를 설치함으로써 도메인 컨트롤러로 동작하게 된다. 반대로 도메인 컨트롤러에서 Active Directory를 제거하면 언제든지 그 서버는 일반서버로 동작을 하게 된다.

 

Windows Server 2003Windows 2000 Server와 마찬가지로 이것을 가능하게 만들어주는 유틸리티인 "dcpromo"를 제공한다. dcpromo Domain controller promotion을 의미한다. 셋업을 시작하기 전에 먼저 고려해야 할 사항이 있다. 도메인이름과 DNS서버의 위치를 결정해야 한다. 도메인이름을 결정하는 일과, DNS는 아주 밀접한 관계가 있지만 이러한 사항들은 14장을 통해서 살펴보도록 하자. 지금부터 도메인을 구축해 보고자 한다. TCP/IP설정을 살펴서 DNS서버의 IP Address가 현재 셋업을 하는 컴퓨터의 IP Address로 되어 있도록 확인한다.


먼저 시작
à실행창에 "dcpromo "를 입력하고 실행하면 Active Directory 설치마법사가 실행된다.


<그림13-15. Active Directory설치 마법사>

 

마법사를 실행하면 몇 가지 옵션을 결정하고 입력해 주어야 하는데 복수도메인 환경을 셋팅하기 위해서는 잘 이해해야 할 옵션이다. 이것을 명확히 이해하기 위해서는 먼저 Active Directory의 논리적인 구조에 대해서 잘 이해를 하고 있어야 한다. 아래의 <그림13-16>에서는 dcpromo.exe를 실행하여 Active Directory설치를 하는 동안에 선택해야 하는 옵션을 <그림13-6>의 도메인 구조와 연계하여 정리했다.


<그림13-16. Active Directory설치시 옵션 선택>

 

회사에서 도메인환경을 구축하고자 결정하고 첫 번째 도메인컨트롤러를 셋업하고 있다면 기본설정으로만 계속 넘어가면 그만이다. 새도메인의 도메인컨트롤러이고, 새로운 포리스트를 만드는 것이기 때문이다. 포리스트 루트 도메인의 첫 번째 도메인컨트롤러가 셋업되면 트리와 포리스트까지 함께 만들어 진다는 것을 생각하자. 이 점을 염두에 두면 추가로 도메인을 확장하는데 있어서 도메인 컨트롤러를 설치하는 것이 쉽다.


<그림13-17. Active Directory설치마법사-운영 체제 호환성 정보>

 

Windows Server 2003의 보안강화로 Windows 95, Windows NT 4.0 SP3 이전 버전에서는 로그온을 하지 못한다는 메시지를 보여준다.


<그림13-18. Active Directory설치마법사-도메인컨트롤러의 종류>

 

도메인 컨트롤러의 종류를 결정해야 한다. 새로운 도메인 컨트롤러인지, 추가 도메인 컨트롤러인지를 묻는다. 당연히 처음 도메인을 만들 때는 기본옵션을 선택해야 할 것이고, 이미 만들어진 도메인에서 만일의 경우를 대비한 백업을 위해 혹은 성능향상을 위해 추가 도메인 컨트롤러를 셋업하고 있다면 두 번째 옵션을 선택한다.

 


<그림13-19. Active Directory설치마법사-새 도메인 만들기>

 

다음의 그림은 "새 도메인 만들기" 선택 사항이다. 앞에서 첫 번째 도메인을 만들 때 새로운 트리가 만들어진다고 설명했다. 회사에서 설계된 최초의 도메인을 만들고 있는 과정이라면 첫번째 옵션인 새 포리스트에 있는 도메인을 선택한다. 이미 포리스트 루트 도메인이 있는 상황에서 추가로 복수도메인 환경을 요구할 때 트리로 확장할 것인지 포리스트로 확장할 것인지 둘중의 하나를 결정해야 한다. 포리스트 루트 도메인의 도메인 이름과 연속된 이름을 사용하는 트리레벨로 도메인을 추가한다면 "기존 도메인 트리에 자식 도메인"을 선택한다. 포리스트 루트 도메인의 도메인 이름과 연속되지 않은 독립된 도메인 이름을 사용하는 환경인 포리스트 레벨로 도메인을 추가하고자 한다면 세 번째 옵션인 "기존 포리스트에 있는 도메인 트리"를 선택한다. 예제에서는 첫 번째 도메인의 첫 번째 도메인 컨트롤러를 셋업하고 있으므로 첫 번째 옵션인 새 포리스트에 있는 도메인을 선택했다.

 


<그림13-20. Active Directory설치마법사-새 도메인 이름 결정>

 

도메인 이름을 결정한다. 대부분의 회사는 도메인 이름을 가지고 있다. 만일 회사를 대표할 만한 DNS도메인이름이 없다면 미리 도메인을 등록할 것을 권장한다. Active Directory 도메인 이름은 DNS도메인 이름을 사용한다. 그렇기에 DNS Active Directory와 아주 밀접한 관계가 있다. Active Directory 환경에서 DNS는 필수적인 요소가 된 것이다. 클라이언트가 도메인 컨트롤러를 찾고자 할 때 DNS는 도메인 컨트롤러 역할을 하고 있는 서버의 이름(Hostname)과 위치(IP Address)를 제공한다.

 


<그림13-21. Active Directory설치마법사-NetBIOS 도메인 이름>

 

다음엔 NetBIOS도메인 이름을 입력해야 한다. 이것은 Windows2000 이전버전인 NT4.0, Windows9x등의 시스템에서 사용되는 도메인 이름을 의미한다. 하위호환성을 위해서 Active Directory 도메인은 2가지의 이름을 유지하고 있다. DNS도메인 이름이 windowsnetwork.msft이지만 NetBIOS도메인이름은 windowsnetwork이 아니어도 상관없다. 전혀 다른 이름을 사용해도 되지만 아무래도 그것은 사용자들에게 상당한 혼란을 유발할 것이다.

 


<그림13-22. Active Directory설치마법사-데이터베이스 및 로그위치>

 

Active Directory Database를 저장할 저장위치와 로그파일을 저장할 위치를 결정해 준다. 기본위치는 OS가 설치된 "WINDOWS"의 하위폴더인 NTDS 폴더이지만 최적의 성능 및 복구기능을 위해서는 이들을 각각 다른 하드디스크에 저장할 것을 권장한다.

 


<그림13-23. Active Directory설치마법사-공유시스템 볼륨>

 

<그림13-23>에서는 공유시스템볼륨을 저장할 폴더의 위치를 결정한다. 한 도메인에 여러대의 도메인 컨트롤러를 둘 수가 있는데 Active Directory를 제외하고서도 이들은 그룹정책, 로그온스크립트 등의 몇가지 정보를 공유해야 할 필요가 있다. 이러한 공용파일을 저장하는 위치가 Sysvol이라는 이름의 폴더인데 이것을 어느 위치에 저장할 것인지를 묻는 것이다. Sysvol폴더는 NTFS 파티션에서만 생성될 수 있다.

 


<그림13-24. Active Directory설치마법사-DNS서버 관련 메시지>

 

Active Directory설치 마법사는 지금 셋업하는 windowsnetwork.msft도메인 이름서비스를 해 주는 DNS서버를 찾을 수 없다는 메시지를 보여주고 있다. DNS서비스가 없거나, DNS서비스가 있더라도 해당 도메인이 구성이 되어 있지 않다면 이러한 메시지가 나타난다. 두번째 옵션인 이 컴퓨터에 DNS서버를 설치하여 구성하고 이 DNS서버를 컴퓨터의 기본 DNS서버로 설정을 선택하고 계속 진행한다. 최초의 도메인 컨트롤러 설치시 가장 쉽고 완벽하게 설치할 수 있는 방법이기도 하다.

 


<그림13-25. Active Directory설치마법사-사용권한 설정>

 

<그림13-25> Active Directory를 읽을 수 있는 퍼미션을 결정하는 "사용권한"그림이다. Windows2000 이전버전의 서버에서 실행되는 RAS서비스 등의 프로그램이 Active Directory에 접근을 해야 하는 환경이라면 첫 번째 옵션을 선택한다. Windows2000, 2003서버로만 구성된 도메인 환경[1]이라면 기본값인 두 번째 옵션을 선택하는 것이 좋다. 이것은 도메인 컨트롤러에 보다 향상된 보안을 제공한다.

 


<그림13-26. Active Directory설치마법사-디렉터리 서비스 복원 모드 Administrator 암호>

 

백업받은 Active Directory Database를 이용해서 복구를 해야 할 경우, 시스템 시작시 [F8]키를 이용해서 "Active Directory Restore Mode"로서 시스템을 시작할 수 있는 옵션을 지원한다. 이 경우 사용할 Administrator암호를 입력한다. 이것은 정상적인 경우 관리자가 사용하는 암호와는 별도의 암호이다. 백업을 위해서 잘 관리해 두어야 한다. 물론 관리자의 암호와 같은 암호를 사용할 수도 있다.

 


<그림13-27. Active Directory설치마법사-요약>

 

이제 설치를 위한 준비과정을 완료했다. <그림13-27>에서는 당신이 선택한 옵션을 보여주고 셋업이 끝났을 때 어떤 구성을 가지게 될 것인지를 보여주고 있다. 확인하고 잘못 설정한 부분이 있다면 [뒤로]버튼을 이용하여 옵션을 수정하는 것이 가능하다.

 


<그림13-28. Active Directory설치마법사-설치 마법사 완료>

 

5~10분 정도의 시간 동안 Active Directory 설치작업이 진행되고 나면 완료되었음을 알리는 설치완료 화면을 만날 수 있다. 에러가 발생하지 않았다면 설치는 잘 된 것이다.

 

설치를 마치면 반드시 시스템을 다시 시작해야 한다. 설치를 마치고 처음 재시작시 상당한 시간이 걸릴 수가 있다. 보통 15분여 정도면 최초 로그온 화면을 만날 수 있다. 로그온 화면이 나올 때까지 참고 기다리자.

 

13-3-2. 설치 후 확인, 문제해결

 

13-3-2-1. DNS SRV레코드 등록 확인

 

설치가 완료된 후 처음 로그온을 한 다음, Active Directory가 제대로 설치되었는지 확인할 필요가 있다. 차근 차근 살펴보자.


<그림13-29. DNS관리콘솔-SRV Record>

 

먼저 DNS관리콘솔을 열어서 Active Directory설치시 입력했던 도메인 영역을 찾아본다. <그림13-29>에서 보면 windowsnetwork.msft 영역이 있고, 이 영역으로부터 위임된 _msdcs.windowsnetwork.msft 영역이 보인다. _msdcs.windowsnetwork.msft 영역아래에서 dc, domains, gc, pdc라는 네 개의 서브도메인이 보인다. 이들은 SRV(Service)레코드를 담고 있는 서브도메인들이다. 이들이 없다면 클라이언트들이 로그온을 위해 도메인에 접근할 수 없다. 이들의 생성을 확인해 주어야 한다. 만일 위와 같은 DNS영역을 찾을 수 없다면 다음과 같은 순서로 접근해 보자.

 

TCP/IP등록정보를 살펴서 DNS서버의 IP가 자신의 IP Address로 되어 있는지 확인한다.

DNS관리콘솔을 열고, 도메인이름을 마우스 오른쪽 클릭하여 등록정보로 접근한 다음 "동적업데이트 " ""이거나 "보안된 업데이트만"으로 되어 있는지 확인한다. <그림13-30>


<그림13-30. DNS 동적 업데이트 구성확인>

 

③ 명령프롬프트를 열고 <그림13-31>에서처럼 netlogon service를 재시작하고, ipconfig/registerdns를 이용해서 DNS에 자신의 IP를 동적업데이트하도록 시도한다.

 


<그림13-31. Netlogon Service 재시작>

 

위의 ①②③ 절차를 진행한 후 다시 DNS관리콘솔을 열고 [F5]키를 사용하여 새로고침을 해 보면 업데이트된 레코드를 확인할 수 있을 것이다.

 

13-3-2-2. Active Directory 관리도구 생성 확인

 

관리도구를 열어 Active Directory 관리도구가 생성되었는지 확인한다. 만일 생성되지 않았다면 서버의 %windir%\System32폴더나 Windows Server 2003 원본CDi386폴더 아래에 있는 "Adminpak.msi"를 통하여 관리도구를 설치할 수 있다.


<그림13-32. Active Directory 관리도구>

 

13-3-3. 첫 번째 도메인의 추가 도메인 컨트롤러 설치 (Replica)

 

도메인에 하나의 도메인 컨트롤러(DC)만 있어서는 아무래도 불안하다. 규모가 작은 회사라고 하더라도 적어도 하나의 추가 도메인컨트롤러는 있어야 만일의 경우에 문제가 없다. , 회사가 본사가 서울이고, 지사가 부산쯤 있는 두 지역으로 나뉘어진 조직구조라면 서울에 하나만 DC를 둬서는 부산의 사용자들에게 빠른 응답시간을 제공하기 어렵다. 이럴 경우에는 부산에 추가 DC를 두는 것도 하나의 방법이다. 추가 도메인 컨트롤러를 설치하는 방법에 대해서 알아본다. 역시 dcpromo를 이용하지만 몇가지 옵션이 달라지게 된다. 먼저 추가DC가 되고자 하는 시스템의 TCP/IP설정을 살펴서 DNS IP Address를 확인한다. DNS는 첫 번째 도메인의 정보를 담고 있어야만 설치가 진행될 수 있다. 예제에서는 windowsnetwork.msft 도메인의 추가도메인컨트롤러를 셋업하는 그림을 보여준다.

 


<그림13-33. 추가 도메인 컨트롤러 설치 - 도메인 컨트롤러의 종류>


"
도메인 컨트롤러 종류화면에서 "기존도메인의 추가 도메인 컨트롤러"옵션을 선택한다.

 


<그림13-34. 추가 도메인 컨트롤러 설치 - 네트워크 자격(Credential) 제공>


추가도메인 컨트롤러가 되기 위해서는 기존 도메인의 관리자계정과 암호가 필요하다. 암호가 맞지 않다면 역시 더 이상 셋업을 진행할 수 없다.

 

 


<그림13-35. 추가 도메인 컨트롤러 설치 도메인 선택>

 

도메인 컨트롤러로서 참여하고자 하는 도메인의 이름을 입력한다. [찾아보기>버튼을 이용할 수도 있다. 예제에서는 windowsnetwork.msft 라는 먼저 설치된 도메인의 이름을 입력했다. [다음]버튼을 클릭하면 DNS서버에 연결해서 도메인을 확인하게 되는데 여기서 DNS서버상에 문제가 있다면 더 이상 셋업을 진행할 수 없다. DNS를 먼저 확인해 봐야 한다.

 


<그림13-36.추가 도메인 컨트롤러 설치 -요약>

 


다음 과정부터는 첫 번째 DC의 셋업과 크게 다르지 않다. 두 가지만 주의하면 문제가 없을 것이다. 바로 DNS서버와 정확한 관리자계정과 암호이다.
설치마법사가 선택한 옵션들을 보여주고 있다. 내용을 읽어서 첫 번째 도메인 컨트롤러의 설정과 비교해 보자.


<그림13-37.추가 도메인 컨트롤러 설치 -요약>

 

추가 도메인 컨트롤러가 설치되는 과정이 보인다. <그림13-37>을 보면 첫번째 도메인 컨트롤러로부터 디렉터리를 복제해 오고 있는 것을 볼 수 있다. 이 과정을 마치면 추가 도메인 컨트롤러 설치는 완료된다.


<그림13-38. Active Directory Users and Computers 관리콘솔 >


추가도메인 컨트롤러의 설치가 완료되면 Active Directory 사용자 및 컴퓨터(ADUC) 관리콘솔의 Domain Controllers 컨테이너를 확인하면 추가 도메인 컨트롤러인 Goguma가 도메인 컨트롤러로 추가된 것을 확인할 수 있다.

 

 

13-3-4. 자식(Child) 도메인 설치

 

지금까지 위에서 설명한 두가지 설치만 하더라도 단일도메인을 구성하는데는 충분하겠지만 추가로 보다 확장된 도메인을 구성하기 위한 설치방법이라도 익혀두자는 의미로 확장되는 도메인의 설치를 다루었다. 아직 도메인모델 자체를 쓰지 않고 있다거나, 전반적인 공부를 위해서 책을 읽는 독자라면 아래의 설치는 일단 넘어가자.

 

다음에는 포리스트 루트 도메인의 트리로서 확장하는 자식도메인을 구축하기 위한 Active Directory설치옵션을 살펴본다. 역시 두가지 조건이 필요하다. 올바른 DNS서버의 IP Address와 포리스트 루트도메인의 관리자계정과 암호를 알고 있어야 한다. 예제에서는 windowsnetwork.msft 이라는 이름의 루트도메인에 china라는 지사의 도메인을 만드는 과정이다. 


<그림13-39. Child domain 설치 - 도메인 컨트롤러의 종류 결정>


자식 도메인을 만들기 위해서는 "새 도메인의 도메인 컨트롤러"를 선택해야 한다. 트리라는 형태로 만들어지기는 하지만 엄연히 새로운 도메인이 생성되는 것이다.

 


<그림13-40. Child domain 설치 - 트리 또는 자식도메인 만들기>


새 도메인 만들기 화면에서 "기존 도메인 트리에 자식 도메인"을 선택한다. Windowsnetwork.msft의 트리에 연결하겠다는 것을 의미한다.

 


<그림13-41. Child domain 설치 - 네트워크 자격>


이 작업을 할 수 있는 권한이 있는 사용자계정과 패스워드를 요구하고 있다. 루트도메인의 관리자계정과 패스워드, 그리고 루트도메인의 도메인이름을 입력한다. 여기서 계정이 맞지 않다거나 DNS에 제대로 연결이 되지 않는다면 더 이상 셋업이 진행될 수 없다. 대부분의 경우 DNS에서 문제점이 발견된다. DNS설정을 살펴보아야 할 것이다.

 


<그림13-42. Child domain 설치 - 자식 도메인 설치>
 


부모 도메인이름이 " windowsnetwork.msft "이다. 자식 도메인에는 "china"를 입력했다. 세 번째 창을 보면 새로운 도메인의 이름이 "china.windowsnetwork.msft"이 됨을 보여준다. 이것은 windowsnetwork.msft 루트 도메인과 연속된 이름을 사용함을 보여준다.

 


<그림13-43. Child domain 설치 - NetBIOS도메인 이름>


NetBIOS
도메인이름을 입력한다. 필수적인 것은 아니지만 DNS의 도메인 이름과 일치하는 이름을 사용하는 편이 좋을 것이다. 예제에서는 "china"를 사용했다. 다음 과정부터는 첫 번째 도메인과 다를바가 없다.

 


<그림13-44. Child domain 설치 -요약>


요약된 정보를 확인한다.

  

 13-3-5. 포리스트(Forest) 도메인 설치

 

다음에는 포리스트 레벨의 도메인을 설치하는 과정이다. 회사에서 Windowsnetwork.msft라는 루트도메인을 설치한 후에 추가로 secure.pe.kr이라는 도메인을 구성하려고 한다 


<그림13-45. Forest domain 설치 -도메인 컨트롤러의 종류>


역시 새로운 도메인을 만드는 것이므로 "새 도메인의 도메인 컨트롤러"를 선택한다.

 


<그림13-46. Forest domain 설치 -트리 또는 자식도메인 만들기>


Windowsnetwork.msft
포리스트 루트도메인에서새로운 트리를 만드는 과정이므로, 세번째 옵션인 기존 포리스트에 있는 도메인 트리를 선택한다.

 

 


<그림13-47. Forest domain 설치 - 네트워크 자격 제공>


이러한 작업을 할 수 있는 네트워크 자격증명을 요구하고 있다. 포리스트 루트 도메인인 windowsnetwork.msft 도메인의 관리자계정과 암호, 도메인 이름을 입력한다.


<그림13-48. Forest domain 설치 - 새 도메인 트리>

다음 과정부터는 첫 번째 도메인의 첫 번째 도메인 컨트롤러를 셋업하는 것과 동일하다.


<그림13-49. Forest domain 설치 - NetBIOS 도메인 이름>


NetBIOS
도메인 이름으로 SECURE를 입력했다.

 

첫 번째 도메인을 셋업하고 추가의 작업들을 진행하다 보면 종종 설치가 잘 되지 않는 경우가 발생하는데, 필자의 경험으로는 문제의 거의 대부분은 DNS SRV레코드 미등록, 잘못된 네트워크 자격증명에 있다. 이들을 먼저 살펴볼 것을 권장한다. 이상으로 Active Directory의 셋업을 마치고 다음 장에서는 Active Directory의 몇가지 관리방법에 대해서 이야기한다.



[1] 도메인 컨트롤러만 Windows 2000, 2003 으로 구성됨을 의미하는 것이 아니라, 도메인에 가입하는 멤버서버들이 Windows 2000 이상인 경우를 말한다.


:
Posted by 새벽예찬
2008. 11. 22. 08:42

13-2. Active Directory의 구조 및 이름 Windows Networking2008. 11. 22. 08:42

13-2-1. Active Directory의 구조

 

13-2-1-1. 도메인

 

이번 장에서는 Active Directory가 어떻게 구성이 되어 있는지를 살펴보고, 각각의 구성요소에 대해서 이해를 필요로 하는 내용들을 설명하도록 한다. 가장 먼저 생각할 수 있는 구성요소는 Active Directory환경에서 핵심이 될 수 있는 "도메인"을 들 수 있다.

 

도메인은 Active Directory의 영향이 미치는 범위를 논리적으로 정의한 단위이다. 도메인에 소속된 서버 및 클라이언트 컴퓨터들은 도메인에 존재하는 Active Directory가 제공하는 디렉터리 서비스의 영향권 안에 놓이게 된다. 기본적으로 Active Directory는 도메인 내에서 제공되며 사용되고 유지된다. 회사의 필요에 의해 여러개의 도메인이 생성되었다면 각각의 도메인마다 자신들의 고유한 Active Directory를 가지게 되는 것이다.

 

그렇다면 도메인은 어떻게 만들 수가 있을까? 도메인을 관리하는 특별한 서버가 제공된다. 바로 "도메인 컨트롤러(Domain Controller; DC)"라는 이름으로 불리우는 서버이다. Microsoft의 도메인을 구현하기 위해서 가장 먼저 해야 할 일은 도메인컨트롤러를 셋업하는 일이다. 도메인 컨트롤러가 하나 셋업이 되었다는 것은 "도메인"이 하나 생겼다는 것과 동일한 의미이다. 도메인 컨트롤러는 Active Directory라는 이름의 데이터베이스를 가지고 있으며 이것은 도메인의 영역내에서 쓰일 수 있는 공통의 정보를 담고 있게 된다. 만일 도메인이 구성되고 나서 도메인 컨트롤러가 손상되는 일이 생긴다면 도메인의 Active Directory는 심각한 문제가 생길 수밖에 없다. 이를 대비하기 위하여 우리는 한 도메인에 추가 도메인컨트롤러를 셋업하는 것이 가능하다. 이렇게 추가되는 도메인 컨트롤러 역시 개별적인 Active Directory를 가지기는 하지만, 새로운 Active Directory를 가지는 것이 아니라 첫 번째 생성된 도메인 컨트롤러의 Active Directory에 대한 복제본을 가지게 된다. 결국 한 도메인에는 하나의 Active Directory만 있게 된다. 이 경우 두 개의 도메인 컨트롤러들은 Active Directory에 새롭게 생성되는 내용이 있을 경우 다른 도메인 컨트롤러에 그 내용을 전파하여 도메인내에서의 일관성을 보장해 주어야 한다. 이러한 작업을 가리켜 "Active Directory 복제"라고 부른다. 이러한 복제도 도메인 내에서 행해지는 작업이다. [1]

 

정리하면, 도메인은 디렉터리 서비스의 영향이 미치는 보안의 경계이며 한 도메인내의 도메인 컨트롤러들이 복제라는 프로세스에 의해 Active Directory의 일관성을 유지해 주는 단위가 된다. 회사가 한국, 미국, 일본 등 다국적 기업환경에 있다고 하더라도 하나의 도메인으로 구성하는 것이 가능하다. 도메인은 철저하게 논리적인 관점의 단위이다.

 

13-2-1-2. OU (Organizational Unit)

 

한 회사에서 네트워크 환경을 도메인으로 구성하여 전체 리소스에 대한 집중화된 관리가 가능하다. 도메인의 관리자는 도메인 내에서 모든 리소스에 대해서 완전한 통제권한을 가지고 있다. 조직이 관리자 혼자서 관리하기에 벅찰 정도로 규모가 크다거나, 혹은 지역적으로 멀리 떨어진 환경의 회사여서 상황에 대처하는데 효율성이 떨어진다거나, 관리업무 자체를 보다 세분화시켜서 여러 관리자가 전문화된 관리영역 등을 가지게 하고자 한다면 OU라는 논리적 구조를 이용할 수 있다.

 

OU Active Directory에 존재하는 사용자계정, 컴퓨터계정, 프린터, 폴더 등의 리소스등을 논리적으로 그룹화하여 관리하게 하기 위한 Active Directory의 또 하나의 구성요소이다. 예를 들면 관리자는 서울, 부산, 대전으로 나뉘어진 회사의 조직구조를 그대로 반영하여 서울OU, 부산OU, 대전OU 라는 형식으로 리소스를 조직화할 수 있다. 또한 부서를 반영하여 영업부OU, 관리부OU, 개발팀OU등의 OU를 이용할 수도 있다. 이것은 도메인이라는 커다란 단위를 사용함과 동시에 내부적으로 보다 작은 단위로써 유연한 관리방법을 제공하는 것이다.

 

실제로 OU를 사용하는 큰 이유중의 하나는 부서별, 지역별, 사용자유형별로 차별적인 그룹정책을 구현하기 위한 목적때문이다. AD의 그룹정책을 적용하기 위한 최소 단위가 OU이기 때문에 사용자 및 컴퓨터를 OU로 조직하면 원하는 차별화된 그룹정책을 구현할 수 있다. 물론 이렇게 OU로 구분한 경우에도 OU가 속한 도메인 전체적인 정책은 유지된다.

 

<그림13-5. Active Directory Domain의 구조>

 

13-2-1-3. Object (개체)

 

도메인의 Active Directory에 저장되는 하나하나의 구성요소를 object라고 부른다. 잘 알고 있는 사용자 계정, 컴퓨터 계정 등이 그것이다. NT4.0의 디렉터리 데이터베이스에 비해서 Active Directory에는 사용자, 그룹, 컴퓨터 외에도 연락처, 공유폴더, 프린터 등의 다양한 자원들까지도 Object로서 포함될 수가 있다. 이것은 큰 의미가 있다. 도메인이 구축된 기업환경에서 생각할 수 있는 많은 요소가 Active Directory에 저장됨으로써 사용자들을 Active Directory를 통해서 다양한 검색기능을 이용해서 자원에 훨씬 쉽게 접근할 수 있는 환경이 제공된다.

 

13-2-1-4. Tree, Forest (트리, 포리스트)

 

필요에 의해서 하나의 도메인만 가지고는 회사의 요구에 만족하지 못할 경우가 있다. 이런 경우 두 개 이상의 도메인을 사용하게 될 수도 있는데 아무래도 하나의 도메인만 사용할 때에 비해서는 고려해야 할 것이 많다. 도메인이 보안의 경계영역이라고 했으니 두 개의 도메인이면 서로 다른 보안의 영역이 생기는 것이 된다. 하지만 회사에서는 도메인과 도메인간의 자원들을 공유해야 할 필요성이 생기게 되고 이러한 것을 완전히 만족시켜야만 제대로 된 도메인 환경을 만들 수가 있게 되는 것이다. 가장 추천하는 도메인 모델은 "단일도메인(Single Domain)"이다. 하지만 단일 도메인 모델로서 회사의 환경과 요구를 충족시킬 수 없다면 당연히 복수 도메인 모델(Multi Domain Model)을 사용할 수밖에 없다. 처음 하나의 도메인이 있는 상태에서 새로운 도메인을 추가할 때 어떻게 추가하느냐에 따라서 트리와 포리스트라는 2가지 구조를 사용할 수 있다.


<그림13-6. Active Directory의 구조 트리 & 포리스트>

 

한 회사에서 서울에 secure.pe.kr 이라는 이름을 가진 첫 번째 도메인이 있다고 가정한다<그림13-5>. 이렇게 첫 번째 만들어진 도메인을 가리켜서 "포리스트 루트 도메인(Forest Root Domain)"이라고 한다.

 

회사에서 새롭게 대전지역에 지사를 하나 냈는데 그곳에는 별도의 IT관리조직이 있는 독립된 성격의 회사라고 가정을 한다. 대전지사를 위해서 하나의 도메인을 구축하려고 할 때 무작정 만들 수는 없는 노릇이다. 서울에 있는 포리스트 루트 도메인과 연관성을 가져야 할 것이다. IT관리는 분리가 되었다고 하지만 한 회사이고 그러다 보면 서울과 대전간의 수많은 자원의 교류가 있어야 할 것이기 때문이다. 서울의 직원이 대전으로 파견을 나온다던가 하는 형태의 업무환경 역시 얼마든지 생길 것이다. 이러한 요구를 필요로 할 때 당신은 Forest Root Domain처럼 전혀 새로운 도메인을 만드는 것이 아니라 포리스트 루트 도메인과 특별한 관계인 트러스트(Trust relationshop)를 가지는 도메인을 만들 것을 고려해야 한다. 그 방법으로서 두 가지 방법이 제시된다. 트리와 포리스트가 그것인데, 이들의 가장 두드러진 차이점은 도메인이름의 연속성에서 찾아볼 수 있다. 추가 도메인을 만들 때 기존의 포리스트 루트 도메인이 사용하는 이름과의 연속적인 이름을 선택했다면 트리구조가 되는 것이고 포리스트 루트 도메인과 다른 도메인 이름을 사용했다면 포리스트구조가 된다.

 

트리에 대한 이해는 "본사와 지사"의 형태로 이해하면 쉽다. Secure.pe.kr이라는 이름의 본사 도메인이 있는데 추가로 지사에 도메인을 설치하고자 할 때 Secure.pe.kr의 이름을 연속해서 사용하는 Daejun.Secure.pe.kr이라는 이름을 선택했다면 secure.pe.kr 도메인의 하위도메인이 생성되는 것이다. 이 경우는 Secure.pe.kr이라는 이름의 포리스트 루트 도메인의 하위 도메인으로서 도메인을 확장하는 것을 의미한다. Active Directory에서는 이것을 "포리스트 루트 도메인의 트리에 자식 도메인(Child Domain)을 추가했다"라고 표현한다. 이때 Secure.pe.kr도메인은 부모 도메인(Parents domain), Daejun.secure.pe.kr은 자식 도메인이 된다. 말 그대로 부모, 자식간의 관계로서 도메인을 확장하는 것을 트리구조라고 부르는 것이다. 이들은 한 나무(Tree)에서 뻗어나온 것이기 때문에 당연히 이름을 같이 사용한다.

 

회사가 Secure.pe.kr 도메인 외에 이미 확보한 DNS도메인이 있어서 반드시 그것을 사용해야 한다면, 혹은 최근에 다른 회사 하나를 M&A에 의해서 취득을 했는데 그 회사의 대외적인 인지도를 이용하기 위해서 기존의 이름을 그대로 사용해야 할 필요성이 있다면, 이런 경우 당신은 트리 구조로 도메인을 확장한다는 것이 적합하지 않다는 것을 알 수 있다. 트리 구조의 도메인 이름 연속성이 현재의 요구사항에 부합되지 않는다는 것을 알기 때문이다. 이 경우 포리스트 루트 도메인의 트리에 새로운 도메인을 추가하는 것이 아니라 포리스트에 새로운 트리를 만드는 것으로 도메인을 추가하는 것이 가능하다. 이것은 트리와는 달리 포리스트 루트 도메인의 이름에 대해 연속성을 가지지 않는다. 예를 들어 회사에서 가지고 있는 또 하나의 이름이 windowsnetwork.msft라면 추가 도메인의 이름으로서 windowsnetwork.msft를 그대로 사용할 수 있다. 이러한 구조를 가리켜서 포리스트라고 부른다. 포리스트 루트 도메인의 트리에 도메인을 추가한 것이 아니라 새로운 트리를 만들어 낸 것이다. 결국 회사의 환경에서 두 개의 트리가 생긴 것이니 "나무(tree)가 여러 그루 모여 있으니 바로 숲(forest)을 이룬다"라는 것이다. 재미있는 용어선택이다. 트리와 포리스트는 단일 도메인 환경이 아닌 복수 도메인환경에서 사용되는 용어이다. 만일 회사가 Single Domain Model만으로 조직의 요구를 충분히 만족시킬 수 있다면 이것은 전혀 필요가 없는 구조가 될 것이다.

 

정리하면, Active Directory는 여러개의 도메인을 지원하기 위한 방법으로 트리(tree)와 포리스트(forest)라는 두가지 구조를 제공하고 있는데 이들의 가장 큰 차이점은 첫번째 도메인인 포리스트 루트 도메인의 이름과의 연속성의 유무에 있다고 할 것이다.

 

회사에 secure.pe.kr이라는 이름의 포리스트 루트 도메인이 하나 있고, daejun.secure.pe.kr japan.secure.pe.kr이라는 이름을 사용하는 자식도메인이 각각 있고 windowsnetwork.msft라는 이름의 도메인이 하나 있다면 이 회사에는 총 4개의 도메인이 있는 복수도메인 환경에 있는 것이다. 4개의 도메인들은 각각 트리와 포리스트라는 특별한 구조로서 묶여 있지만 엄연히 별개의 도메인이다. 이 회사에서는 도메인마다 하나씩 총 4개의 Active Directory를 가지게 된다. 이 각각의 Active Directory는 자신의 도메인 내에서 복제프로세스에 의해서 도메인 컨트롤러마다 복제를 하게 되고, 자신의 도메인 내에서 리소스에 할당되어 사용되게 된다. 하지만 이 4개의 도메인은 어디까지나 논리적인 개념일 뿐이다. 지역적으로는 한군데에 있다고 하더라도 여러개의 도메인으로 구성이 되어 있을 수 있기 때문에, 그러다 보니 서로 다른 도메인에 속해 있는 사용자들끼리의 자원의 교류가 필수적으로 따라오기 마련이다. 이것은 결국 도메인과 도메인간의 보안의 경계 영역을 넘게 되는 것을 의미한다. 바로 이러한 점 때문에 우리는 4개의 도메인을 만드는데 완전하게 독립된 도메인을 만든 것이 아니라 트리나 포리스트 등의 구조를 이용해서 도메인을 확장했던 것이다. 그렇다면 이러한 구조를 이용해서 도메인을 확장하면 뭔가 특별한 점이 있다는 것일텐데, 그것이 무엇일까?

 

기본적으로 디렉터리 서비스는 도메인 내에서 동작한다. 서로 다른 도메인으로 디렉터리 서비스를 확장시켜 주는 것이 바로 도메인과 도메인간의 관계인 "트러스트 관계(Trust Relationship)"이다. 트리나 포리스트 구조로써 도메인을 확장했을 때는 자동적으로 이들 도메인간에는 "양방향 전이 트러스트 관계 (Two-way transitive trust relationship)"이 맺어지게 된다.

 

 

 ☞ 양방향 전이 트러스트 관계 (Two-way transitive trust relationship)

Windows NT 4.0 도메인 환경에서는 도메인과 도메인간의 트러스트 관계를 수동으로 맺어야만 했다. A B라는 두 개의 도메인이 있을 때 A도메인의 회사의 모든 사용자들이 있고, B도메인에는 파일서버,프린트서버등의 리소스를 가진 서버들이 있다고 가정하면 A도메인의 사용자가 B도메인의 자원에 접근하도록 하기 위해서 B도메인에서는 A도메인으로 트러스트 관계를 설립해야 한다. 이 경우 B도메인은 "Trusting Domain"이 되고 A도메인은 "Trusted Domain"이 된다. B도메인이 A도메인을 트러스트(trust)하고 있는 것이다. 이것은 단방향 트러스트 관계(One way trust relationship)이다.


<그림13-7. Trust Relationship>

이러한 상황에서 거꾸로 B도메인의 사용자가 A도메인에 있는 자원에 접근을 하고자 한다면 반대로 A도메인에서도 역시 B도메인으로 트러스트를 해야 한다. 그렇게 되면 양방향 트러스트 관계가 설립된다.

 

만일 하나의 도메인이 더 있다고 가정을 해 보자<그림13-8>.

<그림13-8. Non-transitive Trust relationship>


B
도메인이 A도메인을 트러스트하고, A도메인이 C도메인을 trust하고 있다고 하더라도 B도메인과 C도메인은 아무런 연관성이 없다. 만일 B도메인과 C도메인간의 자원의공유를 위해서는 별도의 트러스트 관계를 맺어야만 하는 것이다. 바로 Non-transitive(비전이)하다는 것이다. 이것이 NT4.0에서의 도메인의 트러스트 관계이다.


Active Directory
도메인은 다르다. <그림13-8> B도메인과 C도메인간에도 자원의 공유가 가능하다. 바로 트러스트 관계가 전이(transitive)되는 것이다. 위에서 설명한 트리나 포리스트관계로 도메인을 확장하게 되면 그들 도메인 사이에는 자동으로 양방향 전이 트러스트 관계가 설립된다.

 

 

13-2-1-5. Global Catalog

 

도메인의 Active Directory는 도메인 내에서 사용된다. 회사가 여러개의 도메인으로 구성되어 있는 환경을 고려해 보면 사용자가 Active Directory에서 특정한 Object를 찾고자 할 때 그러한 쿼리를 처리해 주는 것이 문제가 될 수 있다. A라는 도메인에 소속된 사용자가 "원석"이라는 이름을 이용해서 Active Directory에 쿼리를 던져서 wssong이라는 Object를 찾고자 할 때, 그러한 정보를 가지고 있는 A도메인의 도메인 컨트롤러는 "원석"이라는 이름을 검색해야 할 것이다. 만일 없다면 그 다음에 요청은 "B"도메인으로 가야 할 것이고 없다면 다시 "C"도메인으로 가야만 한다. 그렇게 해야만 사용자는 전체 도메인 환경에서 원하는 정보를 검색하는 것이 가능하다. 이러한 일들을 처리하기 위해 Active Directory는 포리스트 레벨의 도메인의 모든 Active Directory에 대한 Object들의 부분 복제본(전체 디렉터리 복제본이 아님)을 하나의 서버에 집중시켜 둔 별도의 저장소를 가지게 되었다. 그것을 가리켜서 "글로벌 카탈로그(Global Catalog)"라고 부른다.

 


<그림13-9. Active Directory 검색>

 

<그림13-9>를 보면 사용자는 "송원석"이라는 이름만으로 Active Directory에서 "wssong"이라는 이름의 object(개체)를 검색하였다. 이때 이 검색을 처리해 준 서버는 글로벌 카탈로그를 가진 서버이다. , 글로벌 카탈로그 서버가 사용자의 검색요청을 처리한다는 것을 의미한다. 포리스트 환경에서 첫 번째 도메인의 첫 번째 도메인 컨트롤러는 글로벌 카탈로그 서버역할을 맡고 있다.


<그림13-10. Active Directory 사이트 및 서비스 관리콘솔>

 

관리도구의 "Active Directory사이트 및 서비스"를 통해서 글로벌 카탈로그 서버를 확인하는 것이 가능하다. 관리도구를 실행한 다음, “SitesàDefault First Site NameàServersà서버이름àNTDS Settings”의 속성을 연다<그림13-10>

 


<그림13-11. 글로벌 카탈로그 확인>

 

등록정보를 열어보면 "글로벌 카탈로그"가 체크되어 있음을 확인할 수 있다. 추가로 글로벌 카탈로그 서버를 지정할 때도 같은 방법을 사용해서 접근한다.

 

앞에서 설명한 구조는 논리적인 관점의 Active Directory구조였다. 이것만으로는 부족하다. 실제 환경에서는 훨씬 더 다양한 요구가 있기 마련이기 때문이다. 한가지 상황을 가정해 보자. A회사는 서울에 본사를 두고 대전과 부산에 각각 지사를 두고 있다. 이 회사는 secure.pe.kr이라는 하나의 도메인을 구축했고 서울, 대전, 부산에 각각 5, 3, 3대씩 총 11개의 도메인 컨트롤러가 설치되어 있다. 서울과 대전, 부산간에는 WAN으로 연결이 되어 있고 모든 클라이언트는 Windows2000 Professional을 사용하고 있다. 관리자는 도메인 컨트롤러간의 복제, 사용자들의 도메인 로그온, Active Directory의 검색요청에 대한 빠른 응답시간 등 회사 전체의 네트워크 환경을 최적화하고자 한다. 각각의 지역간에 상대적으로 느린 WAN환경에서 어떤 방법을 고려해야 할까? 이때 다음의 사이트라는 물리적인 구조가 필요해진다.

 

13-2-1-6. 사이트 (Sites)

 

도메인이라는 논리적인 단위로는 해결할 수 없는 부분이 바로 이러한 것이다. 마이크로소프트는 Active Directory에 사이트(Sites)라는 물리적인 단위를 제공함으로써 해결해 주고 있다. 결국 회사의 지리적인 측면을 반영하여 도메인과 사이트를 적절히 활용하여 논리적,물리적인 측면에서 최적화된 네트워크 환경을 제공하고 있는 것이다. 위와 같은 예제에서 우리는 회사 전체를 하나의 도메인으로 묶을 수 있고, 서울, 대전, 부산 등 각 지역을 각각의 사이트로 설정할 수 있다. 그렇게 설정을 하면 클라이언트들은 DNS통해서 자신의 사이트에 있는 도메인컨트롤러를 찾을 수 있게 되고, 사이트내에서와 사이트간에서의 도메인 컨트롤러간의 리플리케이션은 각각 다른 방법을 사용함으로써 최적화를 이뤄낼 수가 있게 된다.

 

사이트(Sites)는 잘 연결된 IP Subnet들의 집합이다. "잘 연결된"의 뜻은 "충분한 대역폭이 확보되는"이라는 뜻으로 해석하는 것이 좋겠다. 도대체 얼마큼 대역폭이 확보되어야 잘 연결되었다는 표현을 할 수 있을 것인가? 이것에 대한 정답은 없다. 회사마다 주관적인 설정이 가능할 것이기 때문이다. 56K모뎀으로 연결된 라인이더라도 쓰는데 불편함이 없다면 그 둘의 지역과 지역을 묶어서 하나의 사이트로 만들 수도 있는 것이다. 설사 T1으로 연결되어 있더라도 사용자가 많고 인터넷 액세스가 많아서 지역과 지역간에 제대로 연결이 되기 어렵다면 그들은 두 개의 사이트로 구분이 될 수도 있다. 어디까지나 관리자의 판단이 가장 중요한 요소가 될 수 있다.


<그림13-12. Active Directory 사이트 관리콘솔>

 

13-2-2. Active Directory의 이름

Active Directory에서 사용하는 이름체계에 대해서 공부할 필요가 있다. Active Directory를 처음 접하는 관리자라면 Active Directory의 몇 가지 이름이 다소 생소할 수도 있을 것이다. Active Directory를 쿼리하는데는 LDAP프로토콜을 사용한다. 이름을 짓는 방법 역시 LDAP의 표준에 맞게 구현되어 있다. 다만 Microsoft Active Directory Object들의 이름을 짓는데 정통 LDAP이 아닌 특별한 방법을 따라서 구현했다. LDAP Name DNS Name체계를 결합시킨 것이다. Active Directory내에서는 LDAP체계를 이용하고, 회사를 구별하는 방법으로는 DNS Name을 이용했다.


13-2-2
-1. DN (Distinguished Name) :   Active Directory내에서 User, Computer등 각각의 Object를 유일하게 구분해 줄 수 있는 이름이다.


  (
1) CN=송원석,OU=미국,OU=전체조직,DC=windowsnetwork,DC=msft à windowsnetwork.msft 도메인의 전체조직’OU하위의 미국’OU에 저장된 "송원석"이라는 Displayname을 사용하는 Object.

  (2) CN=Kildong Hong,CN=Users,DC=secure,DC=pe,DC=kr à secure.pe.kr 도메인의 Users 기본 컨테이너에 저장된 "Kildong Hong"이라는 Displayname을 사용하는 Object.


<그림13-13. ADSI Editor를 통해서 확인한 CN>

 

ADSI Editor를 통해서 Active Directory를 들여다 보면 명확한 DN을 확인할 수 있다. ADSI Edit Windows Server원본CD에서 제공되는 Support tool을 설치하면 얻을 수 있다. "Windows Server 원본CD\SUPPORT\TOOLS\setup.exe"를 통해서 설치할 수 있다.


13-3-2
-2. RDN (Relative Distinguished Name) : DN은 디렉터리 전체에서가 아닌 특정 컨테이너에서 Object를 구별할 수 있는 이름이다. 위의 (2)에서 kdhong계정의 RDN "Kildong Hong"이다.


13-3-2
-3. UPN(User Principal Name) : Active Directory에서의 로그온 이름. 전자메일주소의 이름형태와 동일하다. 사용자계정에 "@secure.pe.kr"이라는 형태의 접미사가 붙어서 하나의 이름을 만들어 낸다. () wssong@secure.pe.kr


<그림13-14. Active Directory Object의 이름>


13-3-2
-4. SamAccountName : Window 2000 이전버전의 OS사용자들이 사용할 로그온 이름이다. UPN의 이름과 달라도 상관없지만 상당한 혼란이 있을 것이다.


13-3-2
-5. 전체이름(displayName) : 성과 이름이 결합된 이름을 의미한다. 사용자 계정과는 분명히 다르다. 로그온 할 때 사용하는 이름이 아닌, Active Directory에서 보여지기 위한 이름이다. 자원관리를 할 때 사용자 계정이 보이는 것이 아니라 이 전체이름을 가지고 사용자를 구별해서 관리를 하게 된다. <그림13-14>의 예제에서 "송 원석"이라는 이름의 사용자는 "wonsuk"이라는 로그온 이름을 통해서 도메인에 로그온을 하지만, 관리자는 "송 원석"이라는 이름으로서 관리업무를 수행하게 된다.



[1] 복수도메인 환경에서는 도메인과 도메인간에 도메인 컨트롤러들이 복제를 해야 할 경우도 있다. 이 경우 도메인내에서의 복제와 도메인간의 복제는 모두 필요하다.

:
Posted by 새벽예찬
2008. 11. 22. 08:30

13-1. Active Directory 개요 Windows Networking2008. 11. 22. 08:30

Active Directory를 단적으로 표현한다면 'Windows Server 2003 이상의 서버에서 제공하는 디렉터리 데이터베이스'[1]라고 할 수 있다. Active Directory를 하나의 메이커 형태로 생각하면 이해가 쉽다. 이를 테면 'Active Directory는 마이크로소프트가 Windows Server에서 제공하는 디렉터리'라고 정의를 하자.

 

그렇다면 디렉터리라는 것이 마이크로소프트만 제공하는 것도 아니고 SUN, IBM, Novell등 다양한 벤더가 모두 지원하고 있는데 왜 유독 Active Directory가 많은 관리자들에게 회자되고 있는 것일까? AD는 무엇인가에 대한 원론적인 개념은 단순하지만 AD를 가지고 무엇을 할 수 있는가? 여러분들은 AD를 가지고 무엇을 할 것인가? 라는 측면은 상당히 고민스러운 부분이다.

 

Active Directory를 사용해야 할까?

 

네트워킹에서 디렉터리라고 하는 것은 필수적인 요소이다. 서버가 자신의 자원에 접근을 원하는 사용자들에게 권한을 부여하고자 한다면 서버는 디렉터리를 필요로 한다. 사용자가 네트워크상의 자원에 접근을 하고자 한다면 역시 디렉터리를 필요로 한다. 디렉터리는 정보저장소의 역할을 제공한다.

 

Active Directory는 디렉터리로서 어떤 정보를 저장하고 있을까? Active Directory는 사용자, 그룹, 컴퓨터, 공유폴더, 프린터, 연락처, 조직구성단위(OU) 등의 다양한 정보를 Object(개체)로 저장할 수 있다. 컴퓨터, 공유폴더, 프린터 등까지 디렉터리에 포함하고 있음을 주목하자. 이것은 관리자에게 상당한 편의성을 제공하는 기반이 된다.


<그림13-1. Active Directory에 저장되는 개체의 종류>

 

Active Directory에 자원을 가진 서버나 자원에 접근하기를 원하는 사용자가 네트워크에서 이들 자원을 찾고자 한다면 사용자들은 Active Directory를 검색함으로써 원하는 자원의 위치정보를 얻어낼 수 있다.

 

그렇구나. 유용한 디렉터리인 것 같긴 하구나.’ 하지만 이 정도 가지고는 특별히 다른 디렉터리와의 차별화된 장점을 제공한다고 보기는 어렵다.

 

관리편의성과 확장성 2가지 측면에서 AD의 장점을 살펴보자.

 

Active Directory가 주는 장점 중 가장 큰 부분이라고 할 수 있는 것이 관리편의성 측면이다. <그림13-1>에서 Active Directory에 저장되는 정보중에는 사용자, 컴퓨터가 포함되어 있음을 확인했다. 여기서 컴퓨터라 함은 우리가 사용하는 데스크톱PC뿐이 아니라 서버들도 포함된다. 이것은 무엇을 의미할까?

 

Active Directory는 마이크로소프트에서 제공하는 디렉터리 서비스이고, 우리가 업무를 위해 사용하는 PC의 대다수 운영체제는 역시 마이크로소프트의 Windows운영체제이다. 필자는 Active Directory가 많은 기업의 핵심 인프라로 자리할 수 있는 배경의 가장 큰 힘이라면 Active Directory가 컴퓨터 정보를 포함함으로써 사용자 및 컴퓨터에 대한 효율적인 관리를 제공할 수 있는 기반을 제공하고, 그 기반위에서 적절하게 사용할 수 있는 수많은 정책들을 함께 제공함으로써 최상의 관리방안을 제시하고 있기 때문이라고 말하고 싶다.

 

그 관리방안의 핵심은 Active Directory가 제공해 주는 기능중의 꽃이라고 할 수 있는그룹정책(Group policy)’에 있다. 그룹정책은 참으로 많은 능력을 가지고 있다. 도메인환경에서 다수의 컴퓨터, 다수의 사용자들에 대한 상당부분의 관리 및 지원기능을 그룹정책 하나를 가지고 자동화시킬 수 있어서 이러한 그룹 정책을 잘 사용하는 것은 관리자의 업무부담을 상당부분 줄여줄 수 있다. 그룹정책을 이용해서 할 수 있는 일을 간단히 정리하였다.

 

-          사용자의 데스크탑 환경 설정

-          사용자의 데스크탑 제어 (Lock down)

-          레지스트리 수정

-          스크립트 자동 실행 (로그온, 로그오프, 시작, 종료)

-          보안설정

-          소프트웨어 관리 (설치, 업그레이드, 제한, 재설치, 복구, 삭제)

 

그룹정책을 적용할 수 있는 Active Directory 구조단위는 사이트, 도메인, OU이며, OU(조직단위)는 그룹정책을 적용할 수 있는 최소단위이다. 마이크로소프트는 Windows Server 2003 Active Directory에서 무려 1,300가지 이상의 그룹정책설정 항목을 제공함으로써 관리자의 편의를 돕고 있다. 스크립트 자동실행 기능이 제공되기 때문에 기본정책만으로 부족하다면 개발자의 프로그래밍 능력에 따라 얼마든지 커스터마이징된 그룹정책을 배포할 수도 있다.

 

또한 그룹정책은 기본적으로 상속성을 가지고 있다. 도메인의 그룹정책은 OU에 속한 모든 사용자 및 컴퓨터에 적용되고, 상위OU에 설정된 그룹정책은 하위OU에 상속된다. 이를 통해 관리자는 전사적인 레벨의 보안설정 등의 관리항목은 도메인에 그룹정책으로 설정하고, 부서별, 위치별, 업무성격별로 OU에 설정함으로써 차별적인 정책기반의 사용자 및 컴퓨터 관리가 가능하다.

 

사용자 및 컴퓨터를 정책으로 관리하기 위해서는 이미 기본인프라는 갖춰져 있다는 것을 가정한다. 기본인프라라고 하면 AD가 구성되고 디렉터리에는 사용자가 생성되어야 하며, 컴퓨터는 AD도메인에 참여함으로써 디렉터리에 개체로서 포함되어 있는 것을 의미한다.

 

이번에는 Active Directory의 확장성 측면을 살펴보자. 먼저 Active Directory가 지원하는 프로토콜에 대해 살펴보면 Active Directory는 대부분의 산업표준 프로토콜을 채택했다. 이것은 큰 의미가 있다. 산업 표준 프로토콜을 채택했다는 것은 마이크로소프트의 솔루션이 아닌 다른 벤더의 OS 및 제품들과의 호환성 측면이 한층 강화되었다는 것을 의미하기 때문이다.

 

Active Directory가 지원하는 프로토콜

 

DNS (Domain Name System) : 평면적인(flat) 형태의 NetBIOS 도메인 이름은 하위호환성을 위해서만 제공하고 도메인의 이름서비스로서 DNS를 채택했다. 또한 도메인 컨트롤러를 찾는 요청에 WINS가 아닌 DNS서버가 사용되게 된다.

 

TCP/IP (Transmission Control Protocol / Internet Protocol)  : TCP/IP를 기본프로토콜로 채택함으로써 인터넷 통신에 최적화된 시스템운영을 가능하게 한다.

 

DHCP (Dynamic Host Configuration Protocol) : Active Directory로부터 승인을 얻지 못한 DHCP서비스를 stop시킴으로써 잘못된 DHCP서버로 인한 클라이언트의 IP획득 실패등의 오류를 해결했다.

 

Kerberos : 도메인 환경에서 이전의 NTLM을 대체할 보안 인증 프로토콜이다. 이것은 Single Sign On과 상호인증을 제공한다.

 

X.509 : 이것은 PKI (Public Key Infrastructure)기반 인증서(Certificate) 서비스의 표준 프로토콜이다. Active Directory X.509 표준을 지원하며 인증서와 사용자계정의 매핑을 통하여 사용자를 인증할 수 있도록 제공하고 있다.

 

SNTP (Simple Network Time Protocol) : Windows 2000에서 로그온을 할 때 사용자가 로그온하는 시간정보가 사용된다. 로그온 서버와 클라이언트의 시간이 일치하지 않는다면 사용자는 로그온을 실패하게 된다. 도메인 컨트롤러는 Time Server 로 동작하고 도메인의 멤버인 클라이언트들의 시간과 동기화를 제공하게 된다. 그때 SNTP 프로토콜이 사용된다. 필자 역시 이 서비스를 깜박하고 노트북의 CMOS 배터리를 교환하는 실수를 했던 적이 있다.

 

LDAP (Lightweight Directory Access Protocol) : Active Directory 에 접근할 때 사용하는 프로토콜이다. Active Directory LDAP 프로토콜에 근간을 두고 있다. 역시 사용자가 Active Directory에 쿼리를 하고자 한다면 LDAP 프로토콜을 필요로 한다. 이때 도메인 컨트롤러는 LDAP서버이고 사용자의 컴퓨터는 LDAP 클라이언트가 된다.

 

LDIF (LDAP Data Interchange Format) : 도메인 컨트롤러 간의 Active Directory Database Replication시 사용되는 프로토콜이다.

 

디렉터리라고 하는 것은 마이크로소프트뿐만이 아니라 모든 벤더가 고려해야할 부분이 될 것이므로 한 기업이 전체 기업환경에서의 '글로벌 디렉터리(Global Directory)'를 필요로 한다면 여러 가지 시스템이 섞여 있는 이기종(異機種)에서도 Active Directory는 만족할만한 성능을 발휘해 줄 것이다. 또 다른 측면으로는 기업내에서 개발되는 인트라넷 어플리케이션의 경우 역시 디렉터리를 필요로 하는데, Active Directory는 표준 프로토콜을 채택함으로써 이러한 경우에도 예전에 비해 보다 용이하게 기업이 Active Directory를 선택하도록 유도할 것이다.

 

Active Directory로 구현할 수 있는 그리고 현재 기업들이 구현하고 있는 확장성을 그림으로 표현해 보았다.


<그림13-2. Active Directory의 확장성>

 

<그림13-2>에 언급된 하나하나의 요소들을 살펴보면 우리가 기업네트워크에서 필요로 하는 대부분의 업무 및 시스템들이 Active Directory와의 연관성을 가진 것을 알 수 있을 것이다. 바꿔 말하면 Active Directory는 이러한 업무들과 연계하는 기업의 통합디렉터리 서비스를 제공함으로써 핵심 인프라가 될 수 있으며 관리자는 통합 디렉터리의 장점을 최대한 활용할 수 있을 것이다.

 

 이처럼 Active Directory는 단지 Windows 서버 및 PC 만을 관리하기 위한 것은 아니다. 기업의 IT인프라의 핵심 디렉터리 역할을 충분히 제공할 만한 무한한 확장성을 가지고 있다. Active Directory가 인프라로서 다방면에 걸쳐 연관성을 가지고 있기 때문에 도대체 AD가 무엇인가? AD를 가지고 무엇을 할 수 있을 것인가? 에 대한 해답을 찾는 것이 오히려 어려운 일이 되었다는 생각도 든다.

 

현재 AD를 사용하고 있다면 이것을 어떻게 더 확장해 볼 것인가에 대해 고민을 해야 할 것이고, AD를 사용하고 있지 않다면 먼저 기본인프라를 구축하는 것이 다른 어떠한 솔루션을 도입하는 것보다는 선행되어야 할 첫번째 과제이다.

 

이를 테면 그룹웨어가 도입 또는 재구축되는 시점이라면 당장은 AD가 관리적인 측면에서 도입되지 않더라도 그룹웨어용 디렉터리를 선정함에 있어 Active Directory를 물망에 올려야 할 것이라는 것은 관리자의 당연한 선택이다.



[1] 마이크로소프트는 Windows 2000 Server에서부터 Active Directory를 제공하고 있다.


:
Posted by 새벽예찬
2008. 11. 22. 08:26

13장. Active Directory Windows Networking2008. 11. 22. 08:26

시스템 관리자 K씨는 요즘 Active Directory에 대해 다음의 고민을 하고 있다.

우리 회사는 PC보안관리, 윈도우 패치 관리, S/W자원관리 등에 대한 이슈 있어서 이들을 관리할 수 있는 효율적인 방안을 찾고 있어. 가급적이면 단일 관리지점을 통해 최대한 수작업을 배제하여 불필요한 반복적 단순업무를 줄일 수 있으면 좋겠어. 방안을 찾다보니 Active Directory(이하AD)를 도입하는게 해결책이라는 이야기들이 많이 나와. 뭐라고? AD라면 마이크로소프트의 Exchange Server를 도입할 때 필요한 서버 정도로만 알았는데 이걸 가지고 무슨 보안, 자산, S/W관리? 이걸 어떻게 받아들여야 하지?

 

K씨는 AD에 대해서 전혀 모르지는 않지만 고민스럽기만 하다. AD에 대해서 자료를 찾아보았지만 막연함을 커지고 확신이 서질 않는다. 그러다 보니 K씨는 당면한 문제를 해결하기 손쉬운 해결을 하려고 한다. 00사의 00만 깔면 보안관리가 된다더라. △△사의 △△를 구매하면 윈도우 패치관리가 된다더라이렇듯 몇 가지 솔루션을 도입하여 당장 문제점을 해결한 듯 하지만 솔루션 도입후 채 1년이 지나지 않아 많은 돈을 들여서 도입한 솔루션이 그다지 제기능을 해 주지 못함을 알게 되는 경우가 많다. 그러는 와중에 또 다른 이슈를 해결하기 위해 검토하는 과정에서 AD 는 또 다시 언급이 될 것이다. 이제 K씨는 또 다시 같은 고민을 해야 한다.

 

지금 K씨에게는 단일문제점을 그때 그때 해결해 줄 포인트 솔루션과는 차별적으로 인프라측면의 인식이 필요한 것이며, 이를 위해서 AD에 대해 보다 명확한 이해가 필요한 상황이다.

 

이것은 비단 K씨의 경우만이 아니다.  “AD가 뭔가요? 우리 회사에 AD를 도입하면 어떤 효과를 가져다 줄까요? “ 요즘 필자가 고객들을 만나면서 가장 많이 듣는 질문중 하나이다. 간단한 듯 하지만 참 답을 내리기는 쉽지 않아서 늘 고민인 질문이기도 하다.

 

사실 이러한 질문을 하는 회사의 실무자들은 상당수가 AD에 대해서 비교적 이해를 잘 하고 있는 경우가 많다. 이 질문에 대한 배경에는 AD를 도입하기 위해서는 우선 담당자가 AD를 도입했을 때 과연 효과적일 것인지에 대한 확신이 있어야 하고, AD구축을 추진하기 위해서는 의사결정권자의 결재를 얻어야 할 것인데 그럴 수 있을만큼 AD를 잘 이해하기는 쉽지 않기 때문인 것으로 보인다.

 

이번 장에서는 Active Directory의 개요부터 설치, 관리에 필요한 몇가지 기술들에 대해서 알아보도록 한다. 기업환경에서 AD를 도입하여 어떻게 사용할 것인지에 대한 기능적인 측면들은 14장에서 예제 시나리오를 가지고 구현을 통해서 접근해 보도록 할 것이다.
:
Posted by 새벽예찬

1. 관리자 계정과 암호는 안전한가?

 

Windows NT계열의 OS에서의 마스터 계정은 Administrator 이다. 이 계정을 기본적인 상태로 그냥 두는 것은 바람직하지 않은 일이다. 많은 관리자들이 기본계정을 그대로 쓰고 있다. 결국 이것은 제3자에게 시스템을 컨트롤하는 계정이 누구라는 것을 그냥 알려주는 결과가 된다. 기본적으로 계정을 변경하여야 한다. Administrator, Admin, Root, Webmaster 등 흔히 알수 있는 계정을 사용하여서는 안 된다. 또한 관리자의 실명을 근거로 하는 계정을 사용해서도 안 될 일이다. 특별한 계정을 사용하도록 하자. 계정 자체가 어려울 필요는 없다. 다만 쉽게 추측하지 못할만한 계정을 사용하는 것이 좋다.

 

계정을 새롭게 만드는 것이 아니고 Administrator계정을 다른 이름으로 변경해서 사용하면 된다. 도메인 컨트롤러라면 “Active Directory 사용자 및 컴퓨터를 통해서 작업하고 그밖의 서버라면 컴퓨터관리도구를 통해서 이름을 변경할 수 있다.

 

또한 작업을 마친후에 Administrator라는 일반 사용자 권한을 가진 계정을 하나 만들고 아주 어려운 패스워드를 할당해 두라. 패스워드를 기억할 필요도 없다. 당신이 사용할 계정이 아니다. 이 계정은 실제로 사용되기 위한 계정이 아니라 감사(Audit)”를 통해서 모니터링 할 대상이다. 감사를 통해서 누군가가 이 계정을 공격하는 것을 발견했다면 당신은 해킹의 흔적이 있었음을 알 수 있을 것이다. 


2
. 서비스팩, 핫픽스 패치에 인색하지 않는다.

 

Windows 계열의 OS가 사용자 인터페이스의 편리성 때문에 많은 사용자를 가지고 있기는 하지만 그만큼 많은 위험에 시달리고 있는 것도 사실이다. 하지만 상대적으로 소스가 공개되지 않은 OS이기 때문에 OS에서 동작하는 소프트웨어들의 결함을 통해서 많은 공격이 있기는 하지만 OS자체에 대한 공격은 오히려 어려운 OS이기도 하다. 하지만 OS역시 하나의 덩지큰 소프트웨어인 만큼 수많은 버그가 발견이 되고 있는데 그러한 버그를 이용한 취약점 공격 툴들이 시스템을 위태롭게 하는 위험요소가 되고 있는 것이다.

 

다행스럽게 마이크로소프트는 각종 버그가 발견될때마다 적극적으로 이것에 대한 해결을 위해 패치를 제공하고 있다. OS가 발표되고 정책적으로 서비스팩이라는 통합패치가 출시되며 서비스팩의 출시 사이에 있는 긴급한 보안상의 위험요소를 해결하기 위한 목적으로는 핫픽스를 발표하고 있다. 관리자라면 이러한 패치를 명확히 판단하여 설치하는 것에 인색하지 말아야 한다. 사실 너무나 잦은 패치의 발표 때문에 짜증나는 일이 아닐 수 없지만 이미 잘 구축된 시스템의 추가의 위험에 대한 해결은 이 패치에 의존할 수 밖에 없는 것이 Windows관리의 현실이라고 생각한다.

 

하나의 서버에 웹서비스, Exchange서버, SQL서버 등이 운영되고 있다면 위험은 상대적으로 더 커지게 된다. 먼저 OS자체에 대한 위험, 웹서버에 대한 위험, Exchange, SQL 서버에 대한 위험요소가 제각각 발생되고 있기 때문에 패치를 할 때도 이러한 전체적인 부분들에 대해서 고려해야 한다. 하지만 SQL서버가 운영되지 않은 시스템에 SQL서버 관련 패치를 설치한다거나 하는 작업은 명백히 시간낭비일 뿐이다. 수없이 발표되는 핫픽스들 중에서 현재 당신이 운영하고 있는 시스템과 관련된 핫픽스들을 판단해 내고 그들을 설치하여 시스템의 건강을 챙기는 작업. 그것은 보안관리에 있어서 핵심적인 작업이라고 생각해야 한다. 대부분의 핫픽스들이 시스템 재시작을 요구하는 만큼 패치를 설치하는 시기는 서버유지관리시 고려해야 할 요소이다.

 

3. 서버용 백신 프로그램을 설치한다.

 

바이러스는 데스크탑의 전용이 아니다 서버에게도 바이러스는 잘 동작한다. 그것도 아주 잘. 보통 흔히 구할 수 있는 백신프로그램들은 서버에서 동작하지 않는 경우가 많다. 서버용 백신 프로그램을 구입해야 할 것이다. 백신 프로그램의 특성상 지속적인 업데이트가 이루어지지 않으면 무용지물인 경우가 많으므로 신중하게 선택해야 한다. 트렌드마이크로, 안철수연구소, 하우리 등의 회사들이 개발한 백신 소프트웨어가 많이 사용된다.

 

4. 익명액세스 허용하지 말 것

 

당신의 서버에 대해서 다른 컴퓨터를 통해서 아래의 테스트를 해 보자. 아래의 내용은 명령프롬프트를 통해서 192.168.10.1 IPAddress를 사용하는 서버에 접근해 본 것이다.

C:\>net view \\192.168.10.1  (192.168.10.1 의 공유자원을 보여달라고 요청했다.)

시스템 오류 5() 생겼습니다.

액세스가 거부되었습니다.

 

C:\>net use \\192.168.10.1 “” /user:”” (익명(Anonymous)의 계정으로 세션을 맺는다.)

명령을 잘 실행했습니다.

 

C:\>net view \\192.168.10.1 (192.168.10.1 의 공유자원을 보여달라고 요청했다.)

\\192.168.10.1의 공유 리소스

 

공유 이름   종류   다음으로 사용  설명

----------------------------------------------------------------

networking  Disk

public      Disk

source      Disk

명령을 잘 실행했습니다. (앞에서와는 달리 서버는 자신의 공유자원을 보여준다. 결국 이 서버는 익명의 계정에 대한 연결을 허용하고 있다는 것을 의미한다. 우리가 남의 서버를 이렇게 들여다 보는 것은 흥미있는 일일지는 모르지만 당신의 서버를 누군가 이렇게 보고 있다고 생각하면 기분나쁜 일이다. )

C:\>

 

-- 레지스트리에서 익명액세스 허용하지 않도록 설정을 바꾼 후 테스트

C:\>net view \\192.168.0.1

시스템 오류 5() 생겼습니다.

액세스가 거부되었습니다.

 

C:\>net use \\192.168.0.1 “”/user:””(익명으로 접근을 시도하지만 허용되지 않는다.)

시스템 오류 5() 생겼습니다.

액세스가 거부되었습니다.

 

서버에서 익명액세스를 허용하지 않기 위해서는 레지스트리를 편집함으로써 가능해진다. 레지스트리 편집기(regedt32.exe)를 열고 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 키로 접근한다. 오른쪽 패널에서 Restricanonymous 값을 찾은다음 “0”으로 되어 있는 데이터를 “2”로 변경한다. (Windows NT 4.0 = 1, Windows 2000, 2003 = 2 를 사용)


 <그림10-122. 레지스트리 수정을 통한 널 세션 허용 않음>

 

5. 반드시 NTFS 파일시스템을 사용하자.

 

Windows NT기반의 시스템에서는 FAT NTFS파일시스템을 지원한다. FAT파일시스템에 비해서 NTFS파일시스템은 여러가지 장점을 제공한다. 또한 NTFS파일시스템의 퍼미션은 로컬에서 사용하는 파일서버 등에서만 적용되는 것이 아니다. 사용자가 HTTP FTP를 이용해서 웹을 통한 접근을 하더라도 IIS서버는 가장 마지막에 서버의 파일에 접근하는 사용자가 NTFS퍼미션이 있는지를 체크하기 때문에 보다 안전한 서버를 운영할 수 있도록 해 준다. 특정폴더의 모든 파일은 공개되지만 특별한 파일 몇 개는 접근을 거부시키는 방법은 바로 NTFS 퍼미션을 통해서 가능하다는 것을 상기하라.

 

<참고> 웹서비스와 관련된 폴더 및 파일에 대한 보안설정

1. 웹 애플리케이션(ASP, CGI ) 파일에는 Everyone 의 퍼미션을 제거하고, 그밖의 파일들에는 Everyone에 대해서 읽기 권한만 가지도록 설정한다.

2. 웹폴더의 각 파일을 파일형식별로 분류하는 것이 좋다. 파일에 대한 퍼미션 관리가 용이하기 때문이다. 예를 들면, 아래와 같은 형식으로 폴더를 구분한다.

-C:\inetpub\wwwroot\mscs.co.kr\static (.html)

-C:\inetpub\wwwroot\ mscs.co.kr\include (.inc)

-C:\inetpub\wwwroot\ mscs.co.kr \script (.asp)

-C:\inetpub\wwwroot\ mscs.co.kr \executable (.dll)

-C:\inetpub\wwwroot\ mscs.co.kr \images (.gif, .jpeg)

 

3. FTP폴더와 SMTP폴더 권한설정

기본적으로 FTP루트폴더는 C:\inetpub\ftproot 이고, SMTP루트폴더는 C:\inetpub\mailroot 이다. 이 두 폴더에 대한 NTFS권한은 Everyone에게 모든 권한이 부여되어 있다. 필요한 만큼만 퍼미션을 가지도록 구성해야 할 것이다.

쓰기를 지원하도록 하기 위해서 IIS 서버가 설치된 볼륨과 다른 볼륨으로 이동하거나, 또는 Windows 2000의 디스크 할당량을 사용하여 업로드 크기를 제한하는 것은 좋은 방법이다.

 

4. IIS 로그 파일에 대한 권한설정

해커가 서버에 침입했다면 그는 마지막 작업으로 IIS서버의 로그파일을 지워 자신의 흔적을 없애려는 시도를 할 것이다. IIS에서 생성하는 로그 파일(%Systemroot%\system32\LogFiles)에 대한 NTFS 퍼미션을 아래와 같이 구성한다. - Administrators (모든 권한) , System (모든 권한) , Everyone (RWC)

* 참고자료 : 마이크로소프트 테크넷 홈페이지 (http://www.microsoft.com/korea/technet/security/tools/iis5cl.asp#165330a)

 

6. 서버에 불필요한 소프트웨어는 설치하지 않는다.


서버는 서버용도로 사용해야 할 것이다. 서버에서 관리자가 일부 작업을 한다고 해서 관리자가 개인적으로 필요한 소프트웨어를 사용한다든가 하는 등의 일은 서버를 아프게 해서 빨리 죽게 하는데는 좋은(?) 방법이다.

 

7. DNS서버의 보안을 고려하자.


DNS
서비스를 등한시 하는 경우가 있다. DNS서버가 문제가 발생하면 웹서비스, 메일서비스 등 전반적인 서비스가 동작하는데 문제가 생긴다. DNS에서 고려해야 할 보안을 제대로 챙기는 것도 전반적인 서버의 건강과 직결되는 문제이다.

 

-DNS 영역전송 보안 : 기본적으로 Windows 2000 DNS서버는 아무 서버에게나 영역전송이 허용되도록 되어 있다. 이것은 DNS가 가진 전체 레코드를 한꺼번에 외부로 유출시키는 결과를 초래할 수 있다. DNS영역전송을 보조DNS서버로만 제한하는 것이 필요하다. Windows Server 2003 DNS의 기본설정은 영역전송 허용안함이다. 좋은 설정이다.

 

-DNS 동적 업데이트 허용 않음 : DNS 동적업데이트는 관리상 유용한 기능인 것은 분명하지만 외부에 공개된 DNS서버가 동적업데이트를 허용하도록 구성되어 있으면 물리적인 방법에 의해 외부의 제3자가 의도하는 레코드로 업데이트가 일어날 수 있다. 회사의 www 호스트레코드가 엉뚱하게도 음란사이트가 운영되는 서버의 IP로 바뀌었다고 생각해 보라. 어처구니 없는 노릇이지만 얼마든지 일어날 수 있는 일이다. 외부DNS서버는 동적 업데이트를 허용하지 말아야 할 것이다.

 

-, 외부 DNS영역설정 : DNS서버에 있어서는 최상위의 보안을 제공할 수 있는 방법이다. 외부에서 접근해야 하는 리소스들의 레코드를 가진 외부DNS와 내부의 사용자들만이 접근하는 리소스들의 레코드를 가진 내부DNS서버를 분리시킴으로써 보다 안전하게 DNS서버를 운영하는 방법이 될 수 있다.

 

8. 반드시 필요한 서비스만 오픈시킨다.

 

이것은 중요한 의미를 가진다. 웹서버를 구동중이라면 웹서비스를 정상적으로 운영하는데 필요하지 않은 그밖의 서비스들은 돌고 있지 않아야 한다. 웹서버를 철통같이 방어했다고 하더라고 해커가 다른 서비스에서 발견된 버그를 통해서 접근한다면 결국 서버는 안전하지 못하기 때문이다.


<참고> 일반적으로 시작되어 있는 서비스들중 꼭 필요하지는 않은 서비스들


Aleter Service

Computer Browser Service
DHCP Client

DHCP Server

Distributed File System

FTP Publishing Service

Messenger

Indexing Service
Remote Registry Service
Routing and Remote Access Service
Server Service
Simple TCP/IP Service
SMTP Service

SNMP Service

Task Scheduler Service
Telnet Service
Terminal Service
Windows Media Services

 

* 서비스별 역할 및 사용하지 않을 때의 영향 참고 자료

http://www.microsoft.com/korea/technet/prodtechnol/windows2000serv/deploy/prodspecs/win2ksvc.asp )

 

9. IIS SQL서버는 분리시킨다.

 

많은 관리자들이 IIS에 대한 보안을 상당히 신경쓰면서도 그밖의 서비스에 대해서는 무관심한 경우가 있다. IIS에서 ASP를 사용하고 SQL서버가 하나의 서버에서 동작하고 있다면 IIS가 아닌 SQL서버에 대한 공격이 시도될 수 있다. 데이터베이스가 공격을 받게 되었을 때 그 영향은 상당히 치명적이다. IIS SQL서버를 분리시키고 SQL서버는 개인네트워크로 구성하면 그만큼 SQL서버에 대한 직접적인 공격에 대한 위험요소가 감소한다.

 

10. 웹서비스 폴더에서 불필요한 파일들을 제거한다.

 

- IISLockDown을 통하여 IIS의 반드시 필요하지 않은 서비스나 가상디렉터리를 삭제한다.

- 웹서비스 폴더내에 불필요한 파일을 삭제한다.(, *.bak ) 웹저작도구로써 많이 사용하는 몇몇 프로그램들은 html 파일을 생성하면 자동적으로 *.bak 라는 백업파일을 만들게 되는데, 이것을 그대로 방치하면 IIS서버에서 SQL서버의 ODBC연결에 사용되는 SQL로그인ID와 암호 등의 정보를 너무나 쉽게 알려주는 결과를 초래한다. IIS LockDown 툴은 IIS서버에서 사용하지 않는 서비스들과 폴더 등을 제거하여 보안에 도움을 줄 수 있는 도구이다.(관련자료 : http://www.microsoft.com/korea/technet/security/tools/locktool.asp ) 파일을 다운로드 받은 다음 테스트해 보자.

 

11. 계정 및 자원에 대한 감사정책을 구현하자.


소잃고 외양간 고치는 경우가 많은데 그중에 하나가 바로 감사정책이다. 시스템이 엉망이 된 후에 도대체 누가 언제 이런 일을 한 것인지 알고자 하지만 뒤늦은 후회일 뿐이다. 감사정책은 그러한 위험요소를 사전에 점검해 보고, 문제발생시 이벤트뷰어를 통한 보안로그를 통해서 로깅된 정보를 확인할 수 있다.

 

12. FTP서버 운영시 신중을 기하자.


- FTP
를 사용하는 경우 쓰기권한을 제한하여 업로드를 하지 못하도록 설정한다.

- FTP를 사용하는 경우는 익명 계정 서비스만 권장한다. FTP 로그온 인증에 암호화가 이루어지지 않음을 고려해야 한다.

- FTP를 사용하는 경우 VPN 사용을 고려한다.

 

13. 주기적으로 점검하는 것을 잊지 않는다.

MBSA(Microsoft Baseline Security Analyzer)는 보안관련된 각종 구성정보들을 점검하고 대비할 수 방법을 제공하는 효율적인 도구이다. 시스템을 전체적으로 점검해 볼 수 있는 좋은 도구이니 활용할 수 있도록 한다.(참고: http://www.microsoft.com/korea/technet/security/tools/tools/mbsahome.asp)


<
그림10-123. Microsoft Baseline Security Analyzer (MBSA) 도구>


서버에서 동작하고 있는 서비스를 모니터링 한다. 관리자가 의도하지 않은 서비스나 프로그램이 동작하고 있어서 서버에서 동작하는 프로세스가 있다면 바이러스나 백도어 해킹프로그램일 확률이 높다.

è  작업관리자, Fport ( http://www.foundstone.com http://www.securityfocus.com )

 

14. 무엇보다 가장 중요한 것은?

당신이 관리하는 서버에 대해 끊임없는 관심만이 상대적으로 안전한 서버를 운영할 수 있는 유일한 방법이라는 생각이 필요하다. 당신이 회사의 서버를 관리하는 동안 한차례도 해킹 등의 사고가 없었다면? 자랑할만한 기분 좋은 일이다.

:
Posted by 새벽예찬
2008. 11. 21. 09:21

10-8.FTP Server 구현 Windows Networking2008. 11. 21. 09:21

10-8-1. FTP서비스

 

FTP(File Transfer Protocol)서비스는 대용량 파일전송을 위해 지원되는 서비스이다. 주로 사용자들은 웹호스트팅을 받는 서버에 자신의 홈페이지 데이터를 업로드 한다거나 자료실을 관리하는 용도로 사용하고 있다. 마이크로소프트의 IIS서버는 FTP서비스를 포함하고 있다. FTP서비스는 꼭 필요하지 않다면 보안상의 이유로 서비스를 제거하는 것이 바람직하다고 생각한다. IIS서버의 FTP서비스에 대한 기본구성을 살펴보도록 하자.


<그림10-105. FTP서버 등록정보1 >

인터넷 서비스 관리자 (ISM)를 열고 기본FTP사이트의 등록정보를 열었다. 몇가지 정보가 보인다. 인터페이스는 기본 웹사이트와 유사하므로 쉽게 접근할 수 있을 것이다. FTP서비스의 기본포트인 TCP포트21번이 설정되어 있다. FTP서버에서 이 TCP포트를 변경하였다면 FTP사용자는 바뀐 포트를 알아야만 FTP서버에 연결할 수 있다.


<그림10-106. FTP서버 등록정보 2 >

보안계정탭을 열어보니 익명연결허용이 선택되어 있는 것이 보인다. 기본적으로 FTP서버에는 어느 누구나 접근하도록 설정되어 있다. 이것을 해제시키라는 것이 아니다. FTP사용을 할 때 보안을 필요로 하다면 디렉터리 보안탭을 이용하여 Access List 를 관리하는 것이 바람직하다.


<그림10-107. FTP서버 등록정보 3 >

메시지탭에는 간단한 설정을 할 수 있도록 해 준다. 사용자가 로그인했을때의 메시지, 로그오프할때의 메시지, 허용된 연결을 초과했을때의 메시지 등을 설정한다.


<그림10-108. FTP서버 등록정보 4 >

홈 디렉터리탭에서는 FTP서비스를 제공할 폴더를 지정할 수 있고, 해당 디렉터리에 대해서 어떤 권한이 할당되었는지를 보여준다. ‘쓰기권한은 기본적으로 없다. FTP사용자가 파일 업로드를 할 수 있도록 하기 위해서는 쓰기를 허용해 주어야 한다. ‘쓰기허용이 되어 있다고 무조건 FTP사용자가 파일 업로드를 할 수 있는 것은 아니다. FTP사용자는 최종적으로 NTFS파일시스템에 주어진 권한을 따르게 되기 때문에 NTFS파일시스템에 쓰기 권한이 없다면 파일 업로드는 불가능하다.

 

쓰기권한을 설정할때는 신중을 기해야 한다. NTFS허가, 디스크 할당량 관리 등을 통해서 피해를 최소화할 기본방안은 마련이 되어야 할 것이다.


<그림10-109. FTP서버 등록정보 5>

마지막으로 디렉터리 보안탭에서는 접근하는 클라이언트의 IP주소에 대해 접근제어를 관리할 수 있다.

 

FTP클라이언트로 접근하여 FTP서버에 접근해 보자. WS_FTP, CUTE_FTP등 사용자 인터페이스가 편리한 많은 FTP 클라이언트가 존재하지만, Windows2000에서 기본제공되는 클라이언트 유틸리티도 사용법을 익혀두는 것이 좋다. 어차피 모든 클라이언트 유틸리티는 결국 이러한 명령어 들을 보다 쉽게 구현하도록 만들어진 것이니 테스트 환경에서 편리하다.

 

D:\> ftp (기본제공되는 ftp 클라이언트 유틸리티를 실행했다.)

ftp> open ftp.windowsnetwork.msft (ftp.windowsnetwork.msft 이름의 FTP서버와 연결을 하고자 한다.)

Connected to ftp.windowsnetwork.msft.

220-Microsoft FTP Service

220 WindowsNetwork FTP Server

User (ftp.windowsnetwork.msft:(none)): anonymous (익명의 사용자로 접속하겠다는 것이다.)

331 Anonymous access allowed, send identity (e-mail name) as password.

Password: (패스워드로써 E-mail 주소를 요구하지만 강제사항은 아니다. 이곳에 기록되는 정보는 FTP서버의 로그에 기록된다.)

230-FTP서버에 성공적으로 접속하셨습니다.

230 Anonymous user logged in.

ftp> ls (FTP서버의 폴더의 목록을 보여달라고 요청하고 있다.)

200 PORT command successful.

150 Opening ASCII mode data connection for file list.

data

ftproot.txt

notice.txt

226 Transfer complete.

ftp: 31 bytes received in 0.01Seconds 3.10Kbytes/sec.

ftp> get notice.txt (notice.txt 파일을 다운로드 하고자 한다.)

200 PORT command successful.

150 Opening ASCII mode data connection for notice.txt(0 bytes).

226 Transfer complete. (다운로드가 완료되었다)

ftp> lcd (FTP클라이언트가 실행되고 있는 로컬경로를 보여준다.)

Local directory now D:\.

ftp> put report.doc (이번에는 로컬디렉터리에 있는 report.doc파일을 FTP서버에 업로드하고자 한다.)

200 PORT command successful.

550 report.doc: Access is denied. (서버로부터 거부되었다. FTP서버의 기본권한은 읽기만 있던 것을 기억하라. )

ftp> put report.doc (FTP서버에서 쓰기 권한을 준 후 다시 시도하였다.)

200 PORT command successful.

150 Opening ASCII mode data connection for report.doc.

226 Transfer complete. (성공적으로 파일이 업로드 되었다.)

ftp> lcd c:\driver (로컬 경로를 변경한다.)

Local directory now C:\driver.

ftp> cd data (로그인한 FTP서버의 현재 위치를 변경한다.)

250 CWD command successful.

ftp> disconnect (FTP서버와의 연결을 끊고 있다.)

221 행복한 하루 되세요.

ftp> bye (FTP클라이언트 유틸리티를 마치고 있다.)

D:\>

 

10-8-2. FTP서버로 계정 서비스

 

IIS서비스에 포함된 FTP서버를 이용해서 회사의 직원들에게 각각 특정용량의 디스크 공간을 할당하고, FTP 클라이언트로서 접근해서 파일을 업로드할 수 있도록 하기를 원한다. 당연히 각각 자신의 데이터에만 접근할 수 있어야 하며 다른 사용자들은 접근할 수 없도록 해야 할 것이다. 많은 인터넷 서비스 회사들이 가입을 하면 사용자 계정별로 홈페이지 공간을 할당 받고, 자신의 홈페이지 관리를 위해서 FTP를 이용해서 파일을 업로드 하는 경우가 있다. 그러한 서비스를 별도의 써드파티툴을 이용하지 않고, IIS 의 기본기능으로 제공할 수 있다.

 

몇 가지 설정만 한다면 방법은 간단하다. 차근차근 접근해 보자.

일단 FTP사용자를 생성해 보자. 일반서버라면 '관리도구à컴퓨터관리'를 이용하고 도메인 컨트롤러라면 '관리도구àActive Directory 사용자 및 컴퓨터'를 이용하게 된다. 예제에서는 길동이라는 이름의 사용자를 'kdhong' 이라는 계정으로 생성하였다. 테스트 환경에서 사용자가 도메인컨트롤러에 구성된 FTP서버로 로그인을 하기 위해서는 서버측의 로컬정책을 수정해 주어야 한다. 이 내용에 대해서는 13장의 대화형으로 로그온 할 수 없습니다.” 를 참고하라.

FTP 사용자들이 접근하게 될 폴더는 NTFS 파티션에 존재해야 한다. 만일 NTFS파티션이 없다면 새롭게 만들거나, 기존의 FAT 파티션을 NTFS 로 변경해야 한다. 명령프롬프트에서 convert 명령을 사용하여 변경할 수 있다. 테스트 환경에서 D: NTFS 파티션으로 포맷이 되어 있다.


<그림10-110. FTP 계정서비스3> 

FTP서버의 FTP루트 폴더는 기본적으로 C:\Inetpub\ftproot 폴더이다. Ftproot NTFS퍼미션을 조정하여 Users 그룹을 제거시킨다. 이것은 사용자들이 자신의 FTP홈폴더로 접근한 다음 상위로 이동하여 FTP루트에 접근하는 것을 막아준다.

 

먼저 NTFS 파티션으로 포맷된 드라이브에 각 사용자별로 폴더를 생성하기 전에 FTP에서 사용자 홈폴더 저장소로 사용될 폴더를 하나 생성한다. 예제에서는 "ftpuser"라는 이름으로 폴더를 생성하였다.


<그림10-111. FTP 계정서비스4> 

[확인]을 눌러서 설정을 마친다음 'ftpuser'아래에 FTP 사용자 계정과 같은 폴더이름을 생성한다. 홍길동의 사용자 계정이 'kdhong'이었으므로 폴더이름도 'kdhong'이 되어야 한다. 이것이 일치하지 않으면 사용자는 홈폴더를 사용할 수 없게 된다.

 


<그림10-112. FTP 계정서비스5> 

위에서 생성한 사용자의 홈폴더인 kdhong의 등록정보를 열어서 모든 기본 사용권한을 제거하고, 홍길동(kdhong@windowsnetwork.msft)에게만 '모든 권한'이 주어질 수 있도록 사용권한 설정을 한다.


<그림10-113. FTP 계정서비스6> 

폴더설정을 마쳤다. 이제는 IIS FTP 서비스 설정을 해야 한다. 관리도구-인터넷 서비스 관리자(ISM)을 실행하고, 기본 FTP사이트를 클릭한 다음 '새로 만들기à가상 디렉터리'를 선택한다.


<그림10-114. FTP 계정서비스7> 

가상 디렉터리 별칭을 입력한다. 예제에서는 홍길동의 사용자 계정에 해당하는 kdhong을 입력했다.


<그림10-115. FTP 계정서비스8> 

'FTP사이트 컨텐트 디렉터리'창에서 사용자를 위해 설정했던 물리적인 폴더가 있는 경로를 [찾아보기]를 이용하여 지정해 준다.


<그림10-116. FTP 계정서비스9> 

가상 디렉터리에 대한 기본 권한은 '읽기(R)'로 되어 있다. 사용자가 파일을 업로드 할 수 있도록 '쓰기(W)'옵션을 체크해 준다. NTFS 퍼미션이 '모든 권한'으로 되어 있더라도 가상 디렉터리에 대한 액세스 권한이 '읽기(R) '만 지정되어 있으면 사용자가 FTP로써 서버에 접속하면 읽기 권한만 가지게 된다.


<그림10-117. FTP 계정서비스10> 

구성이 완료되었다. [마침]을 눌러서 마법사를 마친다.

 


<그림10-118. FTP 계정서비스11> 

마법사를 완료하면 기본 FTP 사이트 아래에 kdhong 의 가상 디렉터리가 생성된 것을 확인할 수 있다. FTP 사이트는 기본적으로 '익명 연결 (Anonymous Access)'을 허용하고 있다. 사용자별로 계정관리를 하려고 하기 때문에 익명연결을 허용하지 않도록 구성해야 한다. 기본 사이트의 등록정보로 접근하여 '보안계정'탭을 누른후 '익명 연결 허용'옵션의 체크박스를 해제한다.


<그림10-119. FTP 계정서비스12> 

암호화를 하지 않는다는 메시지를 보여준다. 아쉽지만 그렇다. 네트워크 채널 보안을 위해서는 IPSec, VPN 등의 구현을 검토해야 한다. 계속해서 []를 선택한다.

 

이제 테스트를 해 보자. 이번에는 인터넷 익스플로어를 통해서 FTP 서버로 연결해 보자. 간단하게 웹 브라우저를 가지고 접근해 보자. 인터넷 익스플로러를 실행하고 ftp://ftp.windowsnetwork.msft 로 접근을 시도했다. 익명 연결이 허용되지 않으므로 사용자 인증을 위한 창이 뜬다. kdhong 으로서 로그인을 시도해 보았다.


 <그림10-120. Internet Explorer를 위한 FTP 서버 접속1>

 

인증이 마쳐지고, 화면에는 testftp.txt 파일이 보인다. kdhong의 홈폴더인 kdhong 폴더가 열린 것이다.


<그림10-121. Internet Explorer를 위한 FTP 서버 접속2>

 

예제에서 확인해 본 바와 같이 서버측에서 NTFS 퍼미션 설정을 하고, FTP서비스를 구성했더니 사용자는 자신의 홈폴더를 가지게 되었다. NTFS퍼미션이 해당 사용자에게만 허용되었기 때문에 다른 사용자들은 이 폴더에는 접근을 할 수 없다. 처음의 시나리오를 만족하는 설정이 완료된 것이다.

  

이렇게 사용자의 FTP 홈폴더는 생성되었고, 사용자별로 용량제한은 어떻게 해야 할까? 이전 버전에서는 이러한 기능이 제공되지 않아서 많은 관리자들이 아쉬워 하던 점 중의 하나였다. Windows 2000 부터 디스크 할당량을 관리할 수 있도록 향상된 파일시스템을 제공한다. 자세한 설명은 ‘12.파일서버관리를 참고하라.

 

위와 같은 작업들을 대량으로 작업을 하기 위해서는 스크립팅 언어를 이용해 프로그래밍이 되어야 한다. 웹사이트를 통해서 가입자를 받고, 그 사용자들에게 자동적으로 계정서비스를 하도록 구성을 할 수가 있을 것이다. 응용하기에 따라서 얼마든지 원하는 방향을 끌어낼 수가 있을 것이다.


:
Posted by 새벽예찬
2008. 11. 21. 09:10

10-7. SSL 보안 웹서버 구현 Windows Networking2008. 11. 21. 09:10

앞에서 잠깐 언급을 한 바는 있지만, 웹사이트의 등록정보에서 디렉터리 보안탭의 익명 액세스 및 인증제어에서 다루는 인증이라는 것은 클라이언트가 웹서버에 접근할 때 어떠한 인증을 지원하는지에 관련된 내용이었다. Windows 통합인증의 경우는 사용자가 서버로 제시하는 사용자 계정과 암호정보를 Kerberos, NTLM 등의 보안 인증 프로토콜을 통하여 처리하기 때문에 상대적으로 안전하다고 할 수 있지만, 그것은 어디까지나 인증에 한정된 개념일 뿐이다. 일단 인증이 이루어지고 나면 그때부터 서버와 클라이언트간의 데이터는 암호화되지 않은 트래픽으로 네트워크로 전송된다. 3자에 대해 도청의 위험에 노출된다는 것을 의미한다.

 

또한 인터넷쇼핑몰이나 여러 커뮤니티 사이트등은 웹사이트에 접근하는 사용자들이 로그인을 해서 자신의 메일을 확인한다거나, 개인정보를 변경하는 등의 작업을 할 수 있도록 하고 있는데, 그렇다면 과연 이러한 로그인 정보를 제3자가 도청했다면 어떻게 할까? 또 만일 로그인 정보뿐만이 아니라, 인터넷 쇼핑몰에서 상품을 주문하고 자신의 신용카드 정보를 입력하여 결제를 하고 있는 상황이라면 웹서버로 전송되는 개인의 중요한 데이터가 안전하게 보내지고 있다고 믿을수 있을 것인가?

 

이름만 들으면 누구나 알 수 있을 만한 유명한 웹사이트들에서도 사용자들의 로그인 정보에 암호화를 지원하기 시작한 것은 그리 오랜일이 아니다. 늦었지만 바람직한 일이다. 아직 이러한 기본적인 고객정보보호에 대해서 무관심한 사이트가 너무도 많다. 또 우습게도 인터넷 쇼핑몰을 운영하고 있는 회사에서 고객들의 신용카드 번호와 같은 민감한 트래픽을 암호화조차 없이 인터넷을 통해서 데이터를 전송받고 있는 경우도 어렵지 않게 찾아볼 수 있다.

 

웹브라우저로부터 웹서버로 보내는 데이터, 그것은 로그인 정보일 수도 있고, 신용카드 번호, 유효기간, 게시판에 포스팅하는 글 등일수 있다. 이렇게 송신측에서 보내는 모든 데이터를 안전하게 전송하고자 할 때 암호화(Encryption)’를 사용한다고 이야기한 바 있다. 3.PKI 단원을 건너뛰었다면 잠시 책을 앞으로 돌려 3장의 내용을 먼저 이해하고 넘어오길 바란다.

 

이번 예제에서는 웹서버가 인증기관(CA)으로부터 발급받은 인증서(Certificate)’를 이용해서 SSL서버를 구성하여 클라이언트가 https 프로토콜을 이용해서 안전한 통신을 할 수 있도록 네트워크 채널에 대한 보안의 기반을 마련하고자 하는 작업을 해 보도록 한다.

 

SSL서버 설치는 다음과 같은 순서로 진행된다.

(1)   CSR (Certficate Signing Request) 생성

(2)   서버 인증서 발급 요청 및 인증서 설치

(3)   SSL 서버 구성

 

10-7-1. CSR(Certficate Signing Request) 생성

 

SSL서버구성을 위해서 첫번째로 해야 할 일은 인증서를 발급받는 작업인데, 인증서를 발급받기 위해서는 SSL서버로 구성하고자 하는 웹서버에서 CSR (Certificate Signing Request; 인증요청서)을 생성하는 것이 선행되어야 한다. 이 과정은 어떠한 인증기관(CA)을 이용하든지 동일한 방법이다. 인증기관과는 무관하게 웹서버에서 이루어지는 작업이기 때문이다. 먼저 CSR을 생성해 보자. CSR을 가지고 인증서를 발급해줄 CA에 접근하여 인증서를 발급받을 수 있다.


<그림10-57. CSR(인증 요청서) 생성 1 >

웹서버에서 SSL을 적용하고자 하는 웹사이트의 등록정보를 연다.


<그림10-58. CSR(인증 요청서) 생성 2 >

등록정보의 디렉터리 보안탭을 확인한다. [인증서 보기]가 비활성화되어 있음을 기억하자. [서버인증서]를 클릭한다.


<그림10-59. CSR(인증 요청서) 생성 3 >

웹 서버 인증서 마법사가 실행된다. [다음]을 누른다.


<그림10-60. CSR(인증 요청서) 생성 4 >

서버 인증서 화면에서는 새 인증서를 만듭니다.’를 선택한다.


<그림10-61. CSR(인증 요청서) 생성 5 >

요청을 지금 준비하지만 나중에 보냅니다.’를 선택한다. 이 옵션이 CSR을 생성하게 해 준다.


<그림10-62. CSR(인증 요청서) 생성 6 >

인증서 이름을 입력하고, 인증서 요청에 포함시킬 공개키의 길이를 결정한다. 필자는 1024비트를 선택했다. [다음]으로 진행한다.


<그림10-63. CSR(인증 요청서) 생성 7 >

인증서에 들어갈 조직, 조직구성단위 등을 입력한다. 나중에 이 웹서버에 연결하는 클라이언트들이 인증서를 통해서 확인하게 될 정보이므로 명확하게 입력할 필요가 있다.


<그림10-64. CSR(인증 요청서) 생성 8>

 

사이트 일반 이름 화면이 열리는데, 아주 중요한 옵션이다. 예제에서는 ssl.windowsnetwork.msft 을 입력했는데 클라이언트는 https://ssl.windowsnetwork.msft  URL을 이용해서 접근하게 될 것이다. 이 이름이 잘못되면 웹서버로 접근하는 클라이언트측에서는 인증서의 이름이 웹사이트의 이름과 맞지 않는다는 에러 메시지를 보여주게 된다.

실제로 웹서비스를 할 웹사이트의 이름을 정확히 입력해 준다. 예를 들어서 쇼핑몰을 운영하는 www.mscs.co.kr 웹사이트가 있다고 가정하자. 클라이언트가 이 쇼핑몰에 처음 접근할 때는 http://www.mscs.co.kr URL을 이용해서 접근할 것이다. 이러한 경우는 암호화된 통신이 이루어지지 않는다. 사용자 계정과 암호를 넣고 로그인을 하는 트래픽도 마찬가지로 대부분의 경우 암호화를 하지 않고 있다. 앞으로 관리자들의 의식이 바뀌어 가고 고쳐가야 할 부분이다.

 

하지만 사용자가 쇼핑을 하면서 구입하고자 하는 아이템을 장바구니에 담고 최종적으로 결제하고자 할때는 [결제하기]버튼을 누르면 그때는 https 프로토콜을 이용해서 SSL통신을 하게 되는데(모든 쇼핑몰 사이트가 그렇다는 것은 아니다. 안타깝게도 사용자의 신용카드 정보와 유효기간 등을 요구하는 결제페이지가 암호화를 지원하지 않는 사이트도 보았다), 만일 이 회사의 결제 페이지의 이름이 payment.mscs.co.kr 이었다면 그때 클라이언트가 접근하게 되는 URL https://payment.mscs.co.kr 이 될 것이다. 그렇다면 인증서에도 발급대상의 이름란에는 payment.mscs.co.kr 가 들어있어야 한다. 이렇게 인증서의 발급대상 주소와 인증서가 실제 사용되는 웹사이트의 주소가 정확하게 일치하지 않으면 이 서버에 접근하는 사용자는 인증서 관련한 에러를 만나게 될 것이고 뭔가 믿음이 가지 않는 꺼름직한 기분을 느끼게 될 것이다.


<그림10-65. CSR(인증 요청서) 생성 9>

지역정보란에 회사의 위치에 해당하는 국가명, /, //시 등의 정보를 입력하고 [다음]으로 진행한다.


<그림10-66. CSR(인증 요청서) 생성 10 >

인증서 요청 (CSR) 파일을 저장할 위치를 지정하고 요청파일의 이름을 잘 기억해 둔다. 기본적으로 파일이름은 certreq.txt 로 저장된다.


<그림10-67. CSR(인증 요청서) 생성 11 >

이제 거의 마쳤다. ‘요청 파일 요약정보를 잘 확인하고 [다음]을 누른다. 잘못 되어서 인증서 재발급을 받아야 한다면 인증서 발급 기관 (CA)에 추가비용을 지불해야 할 것이다. [다음]을 눌러서 마법사를 마친다.


<그림10-68. CSR(인증 요청서) 생성 12>

위에서 지정한 위치로 이동하여 certreq.txt 파일을 열어보았더니 알 수 없는 글자가 잔뜩 쓰여진 것을 알 수 있다. ‘------ BEGIN NEW CERTIFICATE REQUEST ------‘로 시작하고, ‘------ END NEW CERTIFICATE REQUEST ------‘ 로 끝나는 메시지를 담고 있다.

 


10-7
-2. 서버 인증서 발급 요청

 

앞에서 생성한 CSR을 이용해서 인증기관(CA)에 인증서 발급요청을 해야 한다. 예제에서는 Windows 2000 독립실행형 루트CA로 구성된 www.windowsnetwork.msft 에게 인증서 발급요청을 하고 있다.


<그림10-69. 인증서 발급요청 1 >

인증서 발급 요청을 위해 웹브라우저를 실행하고 http://www.windowsnetwork.msft/certsrv URL을 이용하여 접근하였다. WindowsNetwork CA 가 응답하고 있는 화면이다. ‘인증서 요청을 선택하고 [다음]을 눌렀다.


<그림10-70. 인증서 발급요청 2>

요청 유형을 결정하는 화면이 나온다. ‘고급인증서요청을 선택했다.


<그림10-71. 인증서 발급요청 3 >

고급 인증서 요청화면에서 두번째 메뉴인 ‘Base 64 인코딩 CMC 또는 PKCS #10파일을 사용하여…’을 선택하고 [다음]을 누른다.


<그림10-72. 인증서 발급요청 4 >

인증서 또는 갱신 요청 제출화면에서 저장된 요청상자에 CSR이 생성된 certreq.txt 파일의 내용을<그림10-68> “------ BEGIN NEW CERTIFICATE REQUEST ------‘부터 ‘------ END NEW CERTIFICATE REQUEST ------‘까지 포함하여 복사하여 웹브라우저의 창으로 붙여넣기 하고 [제출]을 누른다.


<그림10-73. 인증서 발급요청 5 >

인증서 대기중화면이 보인다. 인증기관으로 인증요청은 전송되었고 인증기관이 보류중이라는 상태를 보여준다. 이 화면은 인증기관의 정책에 따라 달라질 수 있다. Windows Server 2003 독립실행형 CA의 경우는 기본설정이 인증서 발급요청에 대해 대기중으로 처리된다.

 

<참고> 윈도우 서버 인증기관(CA)의 인증서 발급과정

 

웹서버에서 SSL서버를 사용하고자 인증기관으로 인증요청을 보냈을 때 인증기관에서는 어떻게 처리되는지 확인해 보자. 인증기관 서비스가 동작하고 있는 서버에서 관리도구à인증기관을 실행했다.


<그림10-74. 보류중인 인증서 발급 요청>

 

예제의 화면에서는 WindowsNetwork CA 의 인증서 관리콘솔을 보여주는데, 보류중인 요청을 보니 오른쪽 패널에 하나의 인증서 발급 요청이 올라와 있는 것을 확인할 수 있다. 마우스 오른쪽 클릭하여 모든 작업à발급을 선택했다.


<그림10-75. 발급된 인증서 확인>

 

이제 발급된 인증서 항목에서 인증서를 확인할 수 있게 되었다.

 


<그림10-76. 인증서 발급요청 6 >

인증서 발급이 되었는지 확인하기 위하여 다시 웹브라우저를 이용하여 http://www.windowsnetwork.msft/certsrv 로 접근했다. 이번에는 보류중인 인증요청을 확인하려는 것이니 마지막 메뉴인 대기중인 인증서 요청의 상태표시를 선택하고 [다음]을 누른다.


<그림10-77. 인증서 발급요청 7 >

현재 보류중인 요청을 보여준다. 링크를 클릭한다.


<그림10-78. 인증서 발급요청 8 >

인증서가 발급되었다. 인증서를 다운로드 할 수 있다. ‘인증서 다운로드를 선택한다.


<그림10-79. 인증서 발급요청 9>

인증서를 다운로드 한다는 메시지가 팝업되었다. [저장]을 누른다.


<그림10-80. 인증서 발급요청 10 >

저장할 위치를 결정한다. 접근의 편의를 위해서 바탕화면에 저장하였다. 이제 인증서를 발급받는 작업을 마쳤다.

 

10-7-3. SSL서버 구성

 

지금까지 인증서를 발급받는 작업을 마쳤다. 이제 이 인증서를 이용해서 SSL서버를 구성해 보도록 하자. 다시 인터넷 서비스 관리자(ISM)를 이용해서 접근한다.


<그림10-81. SSL 서버 구성 1 >

SSL서버를 구성하고자 하는 웹사이트의 등록정보를 열고 보안통신항목을 연 다음, [서버 인증서]를 클릭한다.


<그림10-82. SSL 서버 구성 2 >

웹서버 인증서 마법사가 열렸다.


<그림10-83. SSL 서버 구성 3 >

처음 CSR을 생성하기 위해 접근했을때와는 다른 화면을 보여준다. 웹서버에서 기존에 CSR을 생성하고 인증서를 설치하기 위해 보류중이기 때문에 다른 화면이 보이는 것이다. ‘보류 중인 요청을 처리한 다음 인증서를 설치합니다.’를 선택하고 [다음]을 누른다.


<그림10-84. SSL 서버 구성 4 >

인증서의 위치를 묻는 화면이 나온다.


<그림10-85. SSL 서버 구성 5 >

바탕화면에 저장해 둔 certnew.cer 파일을 지정해 준 다음 [다음]을 누른다.


<그림10-86. SSL 서버 구성 6 >

SSL통신에 사용할 포트번호를 묻고 있다. 기본포트인 443 포트를 사용하고자 한다.


<그림10-87. SSL 서버 구성 7>

인증서 요약 정보를 보여준다. 잘 확인해 본 후 [다음]을 누른다. 이제 웹 서버 인증서 마법사를 완료하였다.

 

<참고> 웹서버에서 신뢰된 루트 인증기관확인

 

웹서버가 발급받은 인증서를 발급해준 인증기관(CA)신뢰된 인증기관의 목록에 있는지 확인해 보도록 하자. 베리사인 등의 상업용 외부CA로부터 인증서를 발급받았거나, 도메인환경에서 웹서버와 인증기관 모두가 같은 도메인에 있을 때 인증서를 발급받은 것이라면 신뢰된 인증기관의 목록에서 인증기관의 이름을 찾을 수 있을 것이다. 이 경우는 바로 SSL서버구성을 시작해도 좋다.

 

그렇지만 테스트환경에서 웹서버와 인증기관은 아무런 관계가 없다. 또한 테스트에서 사용한 인증기관은 자체적인 내부CA로 구성된 인증기관이므로 이대로 사용하면 웹서버에서 SSL서버 구성하는 작업을 진행하기 전에 먼저 웹서버에서 자신이 발급받은 인증서를 발급해준 인증기관을 신뢰된 인증기관의 목록에 추가시키는 작업을 해 줘야 한다. 상업용 CA로부터 받았더라도 아래의 인터페이스를 통해서 확인해 보도록 하자.


<그림10-88. 신뢰된 인증기관 구성1>


제어판à인터넷 옵션à내용à인증서를 클릭한다.


<그림10-89. 신뢰된 인증기관 구성2>

신뢰된 루트 인증기관의 목록을 확인하였다. 당신의 인증서를 발급해준 인증기관의 이름을 찾을 수 있는가? 찾을 수 없다면 [가져오기]를 클릭한다.


<그림10-90. 신뢰된 인증기관 구성3>

인증서 가져오기 마법사가 시작된다.


<그림10-91. 신뢰된 인증기관 구성4>

인증기관으로부터 발급받은 인증서의 위치를 찾는다. 바탕화면에 certnew.cer 로 저장했음을 기억하자. 인증서에는 발급대상의 정보도 있지만 더불어 발급해준 인증기관의 전자서명도 들어있다. 웹서버에서 사용할 인증서를 인증기관이 전자서명을 통해서 신뢰성을 부여하는 것이다. 가져올 파일의 위치를 잘 확인한 다음 [다음]을 누른다.


<그림10-92. 신뢰된 인증기관 구성6>

인증서 저장소의 위치를 묻는다. ‘모든 인증서를 다음 저장소에 저장을 선택하고 신뢰된 루트 인증기관을 선택하였다.


<그림10-93. 신뢰된 인증기관 구성8>

인증서를 저장소에 추가하겠다는 메시지가 나왔다. 잘 읽어보자. []를 선택하면 인증서 가져오기가 완료된다. 이제 신뢰된 루트 인증기관목록에서 Secure.pe.kr CA의 이름을 찾을 수 있다.

이상으로 신뢰된 루트 인증기관 구성을 마쳤다.

 

계속해서 웹서버에 SSL통신을 하도록 구성을 해 보자.


<그림10-94. SSL 서버 구성 1 >

이제 서버에 인증서가 설치되었으니 이 인증서를 이용해서 SSL통신을 하도록 구성을 하면 되는데, 이것은 웹사이트, 가상 디렉터리, 특별한 파일 하나, 어떠한 부분에서라도 할 수 있다. 웹사이트 전체에서 구현하려면 웹사이트에서 등록정보로 접근하고, 특정 가상디렉터리에만 적용하려면 가상디렉터리에서, 특정 파일만 SSL통신을 하도록 하려면 해당 파일을 클릭하고 등록정보로 접근한다.

 

예를 들어서 웹서버에 사용자 로그인 처리할때는 SSL통신을 통해서 사용자 정보를 보호하겠다고 생각했다면 로그인을 처리하는 asp파일에만 SSL인증을 구현할 수도 있다.

 

예제에서는 웹사이트 등록정보를 열고 디렉터리 보안탭을 열었다. 이제 보안통신 항목에 [인증서 보기]가 활성화된 것을 확인할 수 있다. 인증서를 확인하기 위해서 [인증서 보기]를 눌렀다.

 


<그림10-95. SSL 서버 구성 2>

인증서를 확인해 보니, 용도는 원격 컴퓨터의 신분을 확인합니다.’로 되어 있고, 발급대상은 ‘ssl.windowsnetwork.msft’, 발급자는 ‘WindowsNetwork CA’이다. 이상없는 인증서이다. 추가로 자세히탭과 인증경로탭도 확인해 보라. 여러가지 정보를 확인할 수 있을 것이다.

 

다시 디렉터리 보안탭으로 돌아와서 보안통신항목의 [편집]버튼을 클릭했다.


<그림10-96. SSL 서버 구성 3 >

보안통신 화면에서 보안 채널 필요(SSL)’항목을 체크했다. 이제 이 서버는 https 프로토콜을 통해서 접근하는 클라이언의 요청만 받아들일 것이다.

 

10-7-4. SSL서버 연결 테스트

 

늘 그렇듯이 빠트릴 수 없는 것. 무엇인가 설정을 했으면 잘 동작하는지 테스트를 해 보는 것은 필수적인 과정이다. SSL서버에 연결이 제대로 되는지 테스트를 해 보자.


<그림10-97. SSL 서버 연결 테스트1>

웹브라우저를 열고 http://ssl.windowsnetwork.msft사이트에 접근했다. ‘보안채널을 통해서 보아야 한다는 메시지를 출력한다. 웹서버에서 <그림10-96>과 같이 보안 채널 필요를 선택한 결과이다.


<그림10-98. SSL 서버 연결 테스트2>

다시 https 로 바꿔서 접근해 보았다. https:// ssl.windowsnetwork.msft 를 이용해서 접근했더니 이번에는 그림처럼 보안경고창이 팝업된다. 클라이언트는 https 프로토콜로 접근하고 있고 SSL서버로부터 서버인증서를 확인하였는데, 인증서에 문제가 있음을 알려주는 경고창이다. 3가지 항목중 맨 위의 항목인 신뢰여부를 결정한 적이 없는 회사가 발행한 인증서라는 경고메시지가 보일 것이다.

 

클라이언트쪽에는 이미 신뢰된 인증기관의 목록이 있는데 이 목록에서 ssl.windowsnetwork.msft 사이트에서 가지고 있는 인증서를 발행한 인증기관의 이름을 찾을 수 없었기에 이러한 경고메시지를 내 보내는 것이다.

 

하지만 경고메시지의 맨 위에있는 내용은 이 사이트와 교환한 정보는 다른 사람이 보거나 변경할 수 없습니다.’라는 내용을 보여준다. 암호화를 통한 SSL통신에는 문제가 없다는 것을 나타낸다.



<그림10-99. SSL 서버 연결 테스트3>

웹서버의 인증서를 확인하기 위해 [인증서 보기]를 눌렀다. ssl.windowsnetwork.msft 사이트에서 내부CA로부터 발급받은 인증서를 사용했기 때문에 생기는 에러메시지이다. 한가지 사실을 알게 되었다. 내부CA를 사용하더라도 SSL 통신에는 문제가 없다. 다만 가장 중요한 문제는 신뢰성의 여부에 달려 있는 것이다.


<그림10-100. 신뢰할 수 있는 인증기관1>

이대로는 뭔가 찜찜한 기분이 남아있다. 어떻게 해결할 것인가? Active Directory 도메인 환경에서는 그룹정책을 이용하여 사용자들의 PC에 인증기관의 인증서를 신뢰할 수 있는 인증기관에 추가시키는 작업이 가능하다. 그러면 깔끔해지겠지만, 도메인 환경이 아니라면 약간의 작업을 해 줄 필요가 있다. 서버에서 그랬던 것처럼 클라이언트도 동일하게 웹브라우저를 열고 http://www.windowsnetwork.msft/certsrv 인증서 서비스 웹페이지에 접근한 다음 ‘CA인증서, 인증서 체인 또는 CRL다운로드를 선택한다.


<그림10-101. 신뢰할 수 있는 인증기관2>

<그림10-101>화면에서 CA 인증서 체인을 설치하십시오링크를 클릭한다.


<그림10-102. 신뢰할 수 있는 인증기관3>

인증서를 추가하도록 []를 선택하여 신뢰할 수 있는 루트인증기관에 WindowsNetwork CA를 추가하고자 한다.


<그림10-103. 신뢰할 수 있는 인증기관4>

설치를 마쳤다.


<그림10-104. SSL 서버 연결 테스트1>

다시 https://ssl.windowsnetwork.msft 로 접근해 보았다. 아무런 에러 메시지가 없이 SSL웹사이트가 잘 열리는 것을 확인할 수 있다. 웹브라우저 아래의 상태표시줄에 노란 자물쇠를 더블클릭하여 인증서를 확인할 수 있다.


:
Posted by 새벽예찬

웹서버가 한대인데 여러 개의 사이트를 운영할 수 있을까? 흔히들 고려하는 기능이다. 많이 사용되는 기능이기도 하다. IIS가 제공하는 기능을 통해서 다중웹사이트를 호스팅하는 방법을 정리하고자 한다. 설명보다는 한가지 예제를 통해서 처음부터 마지막까지 구현하는 것으로 마치도록 할 것이다. 차분히 읽어보면 기능을 익힐 수 있을 것이라 생각한다.

 

예제로 쓰일 시나리오를 잠깐 설명한다. 당신은 웹호스팅회사의 시스템 관리자이다. A.com B.com c.com도메인을 사용하는 회사가 웹호스팅을 받고자 하여 그들에게 웹서비스를 제공하고자 한다. 한대의 서버로 3개의 웹사이트를 모두 서비스하는 것을 구현하고자 한다.

 

당신은 a.com b.com c.com을 위해서 서버 한대에 3개의 웹사이트를 생성했다. 작업을 마친 화면을 보도록 하자.


<그림10-36. 인터넷 서비스 관리자>

 

위의 화면은 IIS가 설치된 Windows Server 2003에서 인터넷 서비스 관리자관리도구를 실행한 화면이다. 현재는 기본 웹사이트만 있는 상태이다.


<그림10-37. a.com b.com c.com 웹사이트>

a.com, b.com, c.com 각각의 도메인의 네임서버는 웹서버의 IP 주소로 하나의 웹서버를 가리키고 있어야 하는 것은 당연하다. 예제에서는 하나의 DNS서버에 각각 도메인을 추가해 두었다.

 

<그림10-36>에서 마우스 오른쪽 단추를 이용하여 a.com 사이트를 동작시키기 위해 시작을 눌렀다.

<그림10-38. 포트 중복으로 인한 바인딩 에러 메시지>

 

<그림10-38>과 같은 에러메시지가 나오면서 시작되지 않음을 확인할 수 있다. IIS5.0에 비해서는 상당히 적극적인 에러메시지를 보여 준다. “이 사이트에 구성한 포트를 다른 사이트에서 사용중인 것 같다고 한다. 메시지에 해결책이 들어있다.

 

에러메시지의 원인을 확인하고 해결책을 찾아보도록 하자.


<그림10-39. a.com 사이트 등록정보>

 

a.com사이트의 등록정보를 열어보면 <그림10-39>와 같다. TCP포트가 80번이다. A.com 웹사이트를 생성하기 전에 이미 존재하는 기본 웹사이트도 역시 TCP포트 80번을 사용하고 있었음을 기억해 보라. 새롭게 추가한 웹사이트인 a.com사이트가 기본웹사이트와 동일한 포트넘버를 사용함으로써 포트충돌이 발생한 것이다.

 

TCP/IP 환경에서 통신을 이해하는데 계층구조를 이해하면 접근이 쉬워진다. 무슨 소린가 하는 독자는 이 책의 1.TCP/IP Network 단원을 참고하라. "Inetinfo process (웹서비스)àTCP Port NumberàIP AddressàMAC Address" 의 흐름으로 어플리케이션부터 물리적인 네트워크 어댑터 카드까지 데이터를 전송할 수 있게 된다. 이것을 하나의 흐름으로 묶어주는 과정을 바인딩(Binding)이라고 한다. 이미 기본웹사이트à하나의 IP Addressà80 포트로써 바인딩되어 서비스가 시작되어 있는데, 동일한 포트를 다른 웹사이트에 바인딩하려는 시도를 했기 때문에 충돌이 발생하고 사이트를 시작하지 못했다는 에러를 보여주는 것이다. 그렇구나.. 그럼 충돌이 발생안하도록 하면 될거 아냐?? 맞다. 그럼 된다.

 

방법은 있다. 3가지의 방법을 고려해 볼 수 있다.

 

10-6-1. TCP Port 변경

 

일단 DNS서버에서는 3개의 이름이 192.168.0.16 과 같이 하나의 IP Address를 가리키도록 설정을 해야한다. 웹서버가 한대이니 IP Address역시 하나이다. 당연히 www.a.com, www.b.com, www.c.com 은 하나의 IP Address를 가리키도록 DNS설정이 되어야 한다. 이들 세개의 도메인이 하나의 DNS서버에 있어야 한다는 것은 아니다. DNS가 하는 일이라고는 www.a.com IP Address를 요청했을 때 IP Address를 응답하는 단순한역할을 할 뿐이다. DNS서버들이 어디에 있는가는 문제가 되지 않는다.

 

첫째로 포트 번호를 변경하는 방법을 생각할 수 있다. 아래의 <그림10-40>의 예제에서는 TCP포트 번호를 '8002'로 변경하였다.


<그림10-40. TCP포트 변경>

 

그 다음 중지되어 있는 사이트를 클릭하고 마우스 오른쪽 버튼을 눌러 [시작]을 클릭한다. 그러면 이번에는 에러메시지가 없이 사이트가 시작됨을 확인할 수 있다.<그림10-41>


<그림10-41. a.com 웹사이트가 시작된 화면>

 

클라이언트로서 잘 접근이 되는지 테스트를 해 보자. URL 창에 http://www.a.com 만 입력하면 에러가 발생한다. URL창에 http://www.a.com 라고 입력하는 것은 http://www.a.com:80 과 같은 의미이다. 웹서버의 Well-known port 80번이 생략되어 있는 것이기 때문이다. 위에서 80번 포트를 8002번으로 변경했으므로 당연히 http://www.a.com:8002 라고 입력을 해 주어야만 한다.


 <그림10-42. www.a.com 홈페이지 >

 

잘 동작하긴 하지만 뭔가 석연찮다. 이게 뭐야? 라는 소리가 나올 독자도 있을 것이다. 기껏 웹사이트를 개발했는데, 사용자들이 이 웹사이트로 접근하려면 8002라는 숫자까지 기억하도록 해야만 된다는 얘기네? 간단한 방법이긴 하지만, 실제로 제시한 해결책으로서 포트변경은 완전한 방법은 되질 못한다. 사용용도라고 하면, 이미 있는 기본 웹사이트 내에서 다른 사이트로 하이퍼링크 형태로 제공되는 경우(예를 들면 인터넷 쇼핑몰에서 링크를 클릭하여 결제페이지로 이동한다거나 하는)라면 어차피 사용자들이 직접 주소를 입력할 필요가 없으니 상관없겠지만, 별도의 홈페이지로서 서비스하기엔 URL로서 부족한 면이 있다. 다른 방법도 알아보자.

 

10-6-2. 복수 IP Address 할당 (각 사이트마다 다른 IP사용)

 

다음으로 사용할 수 있는 방법은 사이트마다 서로 다른 IP Address를 할당하여 바인딩을 성공시키는 방법이 있다. 하나의 웹서버에 여러 개의 IP Address를 할당하는 것이다. 하나의 서버가 복수의 IP를 가지는 방법은 두가지가 있다. 서버에 필요한 개수만큼 Network Adapter card를 추가하고 각각 다른 IP Address를 할당할 수도 있고, 하나의 Network Adapter card에 여러 개의 IP Address를 할당할 수도 있다. 후자의 예를 들어서 설명하도록 한다.

 

예제의 상황은 다음과 같다.

         www.a.com  -> 192.168.0.15

         www.b.com  -> 192.168.0.16

         www.c.com  -> 192.168.0.17

 

하나의 네트워크 어댑터 카드에 위에서 필요한 3개의 IP Address를 할당해야 한다. ‘네트워크 및 전화접속연결을 통해서 TCP/IP 등록정보를 연 다음, [고급]버튼을 눌러서 [IP설정]탭으로 접근한다. [추가]버튼을 이용하여 <그림10-43>의 예제처럼 필요한 IP Address를 추가한다. 예제에서는 기본 IP Address 192.168.0.16 외에 192.168.0.15 192.168.0.17 IP Address를 추가하였다.


<그림10-43. 하나의 Network Adapter card에 복수의 IP Address 설정>

 

IP Address를 추가한 다음, 명령프롬프트에서 ipconfig를 수행하면 아래와 같은 결과를 얻을 수 있다.


 <그림10-44. ipconfig IP Address 확인>

 

그리고, DNS에서 호스트 이름분해가 잘 이루어지는지를 확인하기 위해 Ping 테스트를 해 보았다.


<그림10-45. Host Name Resolution 확인>

 

각각의 사이트가 서로 다른 IP Address로 응답이 잘 오고 있다. 이제 TCP/IP설정은 마쳤다.

 

다음엔 관리도구à인터넷서비스관리자 (ISM)”를 이용하여 각각의 웹사이트를 위한 설정을 한다.


<그림10-46. IP 주소 및 포트설정>


"IP
주소 및 포트설정"화면에서 기본설정은 (지정하지 않은 모든 IP) 라는 설정으로 되어 있다. IP주소 드롭다운콤보박스를 클릭하면 앞에서 설정한 IP Address들을 볼 수 있다. www.c.com 웹서버로 할당된 IP Address 192.168.0.17을 선택한다.

 


<그림10-47. 3개의 웹사이트 구성이 완료된 화면>

이제 웹사이트가 추가되었고, 잘 동작하고 있음을 보여준다. 웹사이트를 시작하는데 문제가 있었다면 c.com 옆에 (중지됨)이라는 메시지를 보여줄 것이다. 같은 방법으로 나머지 사이트도 추가를 했다.

 


<그림10-48. www.c.com 접근 테스트>

이제 테스트를 해 보자. 웹 브라우저를 띄우고 URL창에 "http://www.c.com"을 입력해 보았다. DNS를 통해서 www.c.com IP Address 192.168.0.17인 것을 알아내고, http 프로토콜로서 웹서버에 홈페이지를 요청하는 get 명령어를 전송한다. 페이지를 볼 수가 있게 되었다.

 

 

위에서 접근한 방법은 웹사이트마다 서로 다른 IP Address를 할당함으로써 다중웹사이트 호스팅을 가능하도록 하였다. 웹사이트가 10개라면 서버는 10개의 IP Address를 가지고 있어야 한다. 만일 회사에서 IP Address의 여분이 없다면 어떻게 할까? 혹은 Network Adapter Card 하나에 IP Address 하나만 가지고 여러 웹사이트를 호스팅하고 싶다면 어떻게 해야 할까? 그때는 마지막으로 소개하는 호스트 헤더를 이용한 방법이 유용하다. 이 방법이 가장 널리 사용되고 있는 방법이기도 하다. 독자들도 위에서 설명한 내용을 이해할 필요는 있지만 다음에 소개할 방법을 먼저 고려해 보아야 할 것이다.

 

10-6-3. 호스트헤더 기법

 

하나의 웹서버에서 여러 개의 웹사이트가 동작하기 위한 조건은 바인딩이 잘 이루어지도록 충돌을 막아주는 설정들을 추가하면 된다. 위에서 포트를 변경한다거나, IP Address를 다르게 가져가는 등의 방법이 그러했다. 이번에는 모든 설정을 기본설정으로 그대로 둔 상태에서 호스트 헤더라는 추가정보를 입력함으로써 충돌을 없애고 웹사이트를 정상적으로 시작시킬 수 있는 방법을 살펴보자.

 

이제 웹서버는 하나의 IP Address만 가지고 있을 뿐이다. 192.168.0.16 이 웹서버의 IP Address라고 가정하자.


<그림10-49. DNS레코드 확인을 위한 테스트>

DNS서버의 설정은 www.a.com www.b.com www.c.com DNS호스트 레코드가 더 이상 제각각 다른 IP Address로 설정되어서는 안된다. 192.168.0.16이라는 하나의 IP Address를 가리키도록 설정을 한다. <그림10-49>에서는 Ping 테스트를 이용하여 이들 세개의 호스트이름이 192.168.0.16 이라는 하나의 IP Address로 설정되어 있음을 확인했다.


<그림10-50. 호스트헤더 설정1>

a.com 웹 사이트에서 접근해 보자. 등록정보를 열고 웹사이트탭에서 웹 사이트 확인항목에서 [고급]을 누른다.


<그림10-51. 호스트헤더 설정2>

고급 웹 사이트 확인화면을 보면 세번째 상자에 호스트 헤더 이름을 입력할 수 있다. 여기에 www.a.com 이라고 입력한 다음 [확인]을 누른다.


<그림10-52. 호스트헤더 설정3>

같은 방법으로 www.b.com, www.c.com 도 작업을 마쳤다. 화면에서 보면 세개의 웹사이트는 정상적으로 시작되었고, 오른쪽 패널에서는 호스트 헤더이름들이 설정되어 있음을 보여준다.

<그림10-53. 호스트헤더 설정4>

http://www.a.com 을 이용해서 테스트해 보았다. a.com 웹사이트가 열린 것을 확인할 수 있다.

이렇게 호스트헤더를 사용했을때는 클라이언트가 다른 호스트이름을 통해서 이 서버에 접근했을 때는 서버는 응답하지 않고 에러메시지를 내 보낸다. 예를 들면 www.b.com IP Address 192.168.0.16이고, test.b.com IP Address역시 192.168.0.16 이라고 가정했을 때 클라이언트가 http://www.b.com 으로 접근하면 해당 웹사이트가 응답하지만, http://test.b.com 으로 접근을 하면 비록 DNS쿼리가 정상적으로 이루어져 웹서버의 IP Address 192.168.10.1로 접근이 된다고 하더라도 웹서버는 해당 웹사이트의 홈페이지를 제공하지 않는다.

 

그렇기 때문에 만일 하나의 웹사이트가 여러 개의 이름으로 접근하도록 설정해야 할 필요가 있다면 호스트헤더를 추가로 입력해 주어야 한다. 예제로 들어보자. www.b.com 사이트에 클라이언트가 http://b.com URL을 이용해서도 웹사이트에 접근하도록 해 주고자 한다.


<그림10-54. 호스트 헤더 추가구성>

인터넷 서비스 관리자를 실행하고 b.com 웹사이트의 등록정보를 열고, 호스트헤더 이름항목의 www.b.com 아래에 “b.com”을 추가했다.

 

 

 

                       


<그림10-55. b.com 호스트 레코드 생성>

DNS서버에서도 한가지 작업이 있어야 한다. b.com b.com도메인에 공백의 이름으로 할당된 하나의 호스트레코드이다. DNS관리콘솔을 열고 b.com 관리영역에 호스트이름을 비워두고 192.168.0.16을 가리키도록 A레코드를 생성했다. <그림10-55>를 참고한다.


<그림10-56. b.com 사이트 접속>

테스트를 해 보았다. 웹브라우저를 실행하고 http://b.com 으로 접근해도 http://www.b.com 으로 접근할때와 동일한 웹사이트가 펼쳐지는 것을 확인할 수 있다. 실습이 성공했다.

 

하나의 웹서버에서 여러 개의 웹사이트를 운영하는 방법으로 이러한 호스트 헤더를 이용한 방법이 가장 많이 사용되고 있는 방법이다. 다만 호스트헤더가 설정된 웹사이트에서는Secure Socket Layer (SSL)을 지원하지 않는다. SSL에서는 http 요청이 암호화되어 호스트 헤더가 감추어지기 때문이다.

 

하지만 이러한 사항들만 생각한다면 간단한 설정으로 하나의 서버에서 여러개의 웹사이트를 호스팅 할 수 있다는 것은 큰 매력이 아닐 수 없다. 대부분이 기능이 그렇듯이 우리가 흔히 생각하는 많은 기능들은 이미 구현이 되어 있다.


:
Posted by 새벽예찬
2008. 11. 21. 08:41

10-5. 웹사이트와 가상 디렉터리 Windows Networking2008. 11. 21. 08:41

하나의 웹 서버는 다수의 웹사이트를 가질 수 있고, 하나의 웹사이트는 다수의 가상 디렉터리를 가질 수 있다. (웹 서버 > 웹 사이트 > 가상 디렉터리)

 

웹 서비스는 사용자가 웹 브라우저를 실행시켜 서버의 데이터를 요청할 때 그 요청과 서버의 데이터 사이에서 인터페이스 역할을 한다. 또한 웹 서버는 웹사이트와는 별개로 가상디렉터리라는 것을 제공하고 있는데, 천리안의 예를 들어보면 천리안은 가입자들에게 일정공간의 홈페이지를 서비스해 준다. 회원들의 홈페이지를 호스팅하는 웹사이트는 http://user.chollian.net 이다. 회원들은 http://use.chollian.net 아래에 ~runner02, ~windows 등의 별도의 폴더로 분리된 공간을 할당받게 되고 그들의 홈페이지에 접속하기 위해서는 http://user.chollian.net/~runner02 URL을 사용하여 접근하게 된다. 이때 ~runner02 user.chollian.net 웹사이트의 가상디렉터리 라고 부른다. 그렇다면 왜 가상디렉터리일까? 그것은 실제 물리적인 폴더의 위치와는 상관이 없이 웹 서버에서 논리적으로 생성하였다는 데서 나온 이름이다.

 

또한 이러한 가상디렉터리는 물리적인 디렉터리와도 일치한다. 예를 들면 wwwroot라는 기본폴더내에 test라는 이름의 서브폴더가 있었다면 서버의 기본웹사이트에는 test라는 가상디렉터리가 생성된 것을 확인할 수 있다. 그런가 하면 전혀 다른 위치의 물리적인 폴더를 wwwroot 폴더아래에 가상디렉터리로 생성할 수도 있다.

 

가상디렉터리를 생성하기 위해서는 가상디렉터리를 생성하고자 하는 웹사이트를 통하여 접근한다.


<그림10-28.가상 디렉터리 생성 1>

웹사이트를 추가하는 것과는 분명히 구분해야 한다. 가상 디렉터리를 만들고자 하는 웹사이트에서 마우스 오른쪽 클릭하여 새로 만들기à가상 디렉터리를 선택한다.


<그림10-29.가상 디렉터리 생성 2>

가상 디렉터리 별칭을 입력하는 화면이다. 이것은 중요한 이름이다. http://www.windowsnetwork.msft사이트에서 생성되는 wonsuk 이라는 가상디렉터리는 http:// www.windowsnetwork.msft/wonsuk 이라는 URL을 가지게 된다.


<그림10-30.가상 디렉터리 생성 3>

Wonsuk 이라는 가상디렉터리를 실제 물리적인 폴더와 연결시켜주어야 한다. 예제에서는 D:\Inetpub\wwwroot\wonsuk 폴더를 선택했다.


<그림10-31.가상 디렉터리 생성 4>

액세스 권한은 읽기스크립트 실행이 기본설정이다. 그대로 두고 [다음]으로 진행하면  가상 디렉터리 생성이 왼료된다.


<그림10-32.가상 디렉터리 접근 테스트1>

인터넷 서비스 관리자를 통해서 보면 ‘Wonsuk’이라는 가상 디렉터리가 생성된 화면을 보여준다. 마우스 오른쪽 클릭하여 웹 페이지로 보기를 선택한다.


<그림10-33.가상 디렉터리 접근 테스트2>

웹브라우저가 실행되고, http:// www.windowsnetwork.msft/wonsuk URL을 가리키는 것을 볼 수 있다. 홈페이지가 잘 열리는 것을 볼 수 있다.


<그림10-34.윈도우 탐색기를 통한 가상 디렉터리 생성1>

사실 IIS는 가상디렉터리 생성작업을 너무나 쉽게 지원해 주고 있다. 이번에는 윈도우 탐색기를 통해서 접근해 보자.

 

윈도우 탐색기를 열고 가상디렉터리로 만들고자 하는 물리적인 폴더를 찾은 다음 마우스 오른쪽 클릭하여 공유 및 보안을 선택한다.


<그림10-35.윈도우 탐색기를 통한 가상 디렉터리 생성2>

웹 공유탭을 선택하고, 공유위치에서는 가상 디렉터리를 생성할 웹 사이트를 선택한 후 별칭을 결정해 주면 가상디렉터리 생성이 된다. 이것은 인터넷 서비스 관리자(ISM) 관리도구를 이용해서 작업을 하는 것과 동일한 결과를 보여준다.


:
Posted by 새벽예찬
2008. 11. 21. 08:37

10-4.웹사이트 인증 및 기본 보안 Windows Networking2008. 11. 21. 08:37

웹서버는 웹 클라이언트의 요청을 받아서 그들이 요청하는 파일을 제공하는 일을 한다. 무작정 아무에게나 파일을 주지는 않는다. 웹서버는 클라이언트가 접근을 할 때 제일 먼저 사용자 인증이라는 과정을 거치게 된다. 다만, IIS의 기본설정이 어느 누구라도 접근할 수 있는 익명 액세스를 허용하고 있기 때문에 인증이 없는것처럼 보일 뿐이다. 회사의 홍보페이지나 상업용 사이트라면 당연히 홈페이지를 보여주는데 별도의 계정과 암호를 요구해서는 안 될 것이다. 우리가 일반적으로 어떤 사이트에 들어가서 사용자 계정과 암호를 넣어서 로그인을 하게 되는데, 그것과는 구분해야 한다. 그러한 사이트의 홈페이지에 접근할 때는 인증을 요구하지 않는다는 것을 생각하면 될 것이다.

 

<그림10-20. 웹사이트 등록정보 디렉토리 보안 탭>


웹사이트의 인증에 관련된 작업은 웹 사이트 등록정보디렉토리 보안탭에서 설정할 수 있다. 디렉토리 보안탭은 익명 액세스 및 인증제어’ ‘IP주소 및 도메인 이름 제한’ ‘보안통신이라는 3가지 구성으로 되어 있다. 첫번째 [편집]을 눌러 보았다.

 


<그림10-21. 인증 방법 구성>


인증방법화면으로 접근했더니 익명 액세스라는 옵션을 볼 수 있다. 기본적으로 체크되어 있다. 윈도우 서버 2003가 설치되면 기본적으로 “IUSR_컴퓨터이름형식의 계정이 생성되어 있다. 이 계정이 익명액세스를 허용했을 때 사용되는 계정이다. [편집]을 클릭하여 확인할 수 있다.

웹사이트가 회사홍보용이나 상업용이 아닌 내부적으로 사용하기 위한 용도의 컨텐츠를 담고 있다면 익명액세스를 허용하는 것은 바람직하지 않다. 혹은 웹기반의 인트라넷 사이트가 구성되어 직원의 근태관리, 급여관리, 회계관리 등이 이루어진다면 역시 마찬가지이다. 그때는 회사의 직원들이 각각 계정과 암호를 가지고 접근하도록 구성할 필요가 있을 것이다. 익명액세스를 해제하여야 한다. 그러면 계정이 없는 사용자는 더 이상 이 웹사이트에 접근할 수 없다.

 

인증된 액세스 방법으로는 Windows 통합인증, Windows 도메인 서버의 다이제스트 인증, 기본인증,.NET Passport인증이라는 4가지 방법이 제공되는데 ‘Windows 통합 인증이 기본값이다. Windows 통합인증은 익명액세스가 허용되지 않는 경우나, 익명액세스가 허용되어 있더라도 웹페이지의 특별한 파일이 IUSR_computer계정에게 NTFS퍼미션이 허용되지 않는 경우에 사용된다. 이름에서 느껴지는 것처럼 Windows 통합인증은 웹사이트에 접근하는 사용자의 현재 Windows 로그온 정보를 그대로 사용한다. 해당 정보를 이용해서 인증에 문제가 있다면 그 때 로그인 창을 팝업시키게 된다. 멤버서버로 설정된 웹서버에 도메인의 계정으로 로그온한 사용자가 접근하고 있다면 사용자는 별도의 인증과정을 거칠 필요 없이 웹서버의 자원에 접근하는 것이 가능하다는 것이다. Windows 통합인증은 Kerberos, NTLM 등의 암호화된 인증을 사용한다. 기본적으로는 Microsoft 의 운영체제에서만 지원한다. 거의 대부분의 회사환경에서 인증을 원한다면 이 Windows 통합인증을 사용하면 무방하다.

 

기본인증(암호를 일반 텍스트로 보냄)”옵션은 인증을 하긴 하지만 클라이언트가 서버에게 보내는 인증 요청은 Clear text (평문)로 전송되기 때문에 제3자에 의한 도청의 위험이 있다. 좋지 않은 방법이다. 하지만 가장 뛰어난 호환성이 제공되므로 모든 벤더의 웹브라우저의 버전들과 호환이 된다.

 

“Windows 도메인 서버의 다이제스트 인증은 기본인증보다 한단계 향상된 보안을 제공한다. 암호를 전송하기는 하지만 실제로 암호 자체를 전송하는 것이 아니라 MD5 해시함수를 이용한 해시를 인증에 사용하고 있다. 3자가 도청을 하더라도 해시함수의 특성상 해시를 이용해서 원본을 알기는 어렵기 때문에 안전하다고 할 수 있다. 이 다이제스트 인증을 사용하기 위해서는 Windows 2000 도메인 즉, Active Directory가 필수적으로 있어야 한다. 사용자는 Active Directory에 계정을 가지고 있어야 하며 Active Directory에 저장되는 사용자 계정의 암호는 시스템 자체에서 암호화되지 않은 일반문서 형태로 저장되어 있어야만 사용될 수 있다.

 

.NET Passport 인증은 IIS6.0에서 추가된 기능이다. 많이들 사용하는 메신저 프로그램인 MSN Messenger를 사용하기 위해서는 MSN, Hotmail등의 계정에 가입하거나 본인의 메일주소를 Passport로 등록해야 한다는 것을 알고 있을 것이다. 그러한 Passport 계정을 IIS6.0에서 인증하도록 하겠다는 것이다. 결국 마이크로소프트에서 전세계 사용자들을 대상으로 등록받은 그야말로 글로벌 디렉터리인  Passport IIS6.0 웹서버에서 인증용으로 사용할 수 있도록 하겠다는 것인데, 참으로 놀라운 일이 아닐 수 없다. 사용자들이 Passport 계정 하나만 가지면 되도록 하겠다는 야심찬 도전이라고 생각된다. 발표당시에는 상당한 이슈가 되었던 것이 사실이지만 현재 시점에서의 보편성에 대해서는 다소 부정적이다. 늘 그렇듯이 새로운 도전이 보편화되기 위해서는 어느 정도 진통을 겪어야 하는 만큼 분위기가 무르익어야 될 것으로 보여진다.


<그림10-22. .NET Passport 인증>


웹서버에서 .NET Passport 인증을 선택했을 때 (익명인증 옵션 제거) 클라이언트가 접근하면 <그림10-22>의 인증창을 볼 수 있다. 기존에 가진 Passport ID와 암호를 입력하면 로그인이 가능하다.


<그림10-23. 해독가능한 암호화 저장>


<
그림10-23>을 보면 Active Directory 사용자 및 컴퓨터 스냅인을 이용하여 yhsong 이라는 계정의 옵션을 들여다 보고 있다. ‘해독가능한 암호화를 사용하여 암호를 저장합니다.’ 옵션이 체크되어 있어야만 다이제스트 인증을 사용할 수 있다.


<그림10-24. IP 주소 액세스 제한>


<
그림10-20>에서 이번에는 ‘IP주소 및 도메인 이름제한에 대한 설정을 살펴보자. 유용한 설정이다. 기본적으로 IIS IP제한이나 도메인 제한을 전혀 하지 않고 있다. 사내의 게시판을 위해 사용되는 웹서버라면 외부에서는 아예 접속자체를 차단시킬 수 있는 방법이 된다. 혹은 외부의 특별한 몇몇 컴퓨터들의 IP Address를 기준으로 필터링하는 것도 가능하다. 세가지 유형으로 제한할 수 있는데, 특정한 컴퓨터(IP Address), 컴퓨터그룹(네트워크ID), 도메인이름 중 하나를 선택할 수 있다.

<그림10-25. 단일 컴퓨터 액세스 허가>

대부분의 보안제품들이 그렇듯이 액세스 제한방법은 2가지를 사용할 수 있다. 최대의 보안(모든 것을 막고 필요한 것만 열어주는 방법)과 최소의 보안(모든 것을 열고 필요한 것만 제한하는 방법) 을 사용할 수 있다. 메시지가 다소 헷갈리긴 하지만 논리적으로 생각하면 쉽게 이해할 수 있다. 예제에서는 최소한의 보안을 적용한 것으로 192.168.0.16을 제외한 모든 IP를 허용한 것을 보여준다. 도메인 이름을 이용한 제한을 사용하고자 할때는 DNS서버의 역방향 조회 영역의 구성이 되어 있어야 한다.


<그림10-26.IP 주소 액세스 제한 >



192.168.0.16
클라이언트에서 해당 웹사이트에 연결하면 <그림10-26>과 같은 에러메시지를 만나게 된다.


<그림10-27.사용자 지정 오류 메시지>


이러한 경우 뿐만 아니라 IIS서버에는 다양한 오류 메시지가 미리 정의되어 있다. %WinDir%\Help\iisHelp\common를 확인하면 수많은 html 문서들을 볼 수 있다. html문서를 편집해도 좋고, 새로운 오류 메시지 문서를 만들어서 웹사이트에 연결시킬 수도 있다.

 

이상으로 IIS의 웹사이트 등록정보에 대해서 필수적인 사항들을 위주로 몇 가지 살펴보았다. IIS서버의 온라인 도움말 페이지를 참고하기 바란다. 이미 MS는 방대한 수준의 자료를 도움말을 통해서 제공하고 있다.

:
Posted by 새벽예찬
2008. 11. 21. 08:32

10-3. 웹사이트 리디렉션 Windows Networking2008. 11. 21. 08:32

10-2-1-3. 사용자의 웹서비스 요청을 전환시키자.

 

위의 기본적인 설정들을 활용하여 필요한 상황을 하나 예를 들고자 한다. 필자의 개인 홈페이지인 www.secure.pe.kr 사이트를 예로 들어보자. 필자의 사이트는 http://www.secure.pe.kr 로 접근할 수 있고, http://secure.pe.kr 의 주소로도 접근할 수 있다. 이것이 접근이 되고 안 되고는 일단은 DNS의 호스트 레코드에 달려있다. 클라이언트가 웹브라우저의 주소창에 http://secure.pe.kr 이라고 입력했다면 먼저 secure.pe.kr 호스트의 IP Address를 찾으려는 시도를 하고, 당연히 이 요청은 DNS서버로 가게 될 것이다. 그러면 DNS서버는 secure.pe.kr 이라는 레코드를 가지고 있어야만 IP Address를 응답할 수 있게 된다. 이 레코드는 secure.pe.kr 이라는 도메인의 (공백의) 문자를 할당한 레코드이다. 만일 웹서버의 IP 192.168.0.16 이라면 secure.pe.kr 을 관리하는 DNS서버에는 www 호스트레코드와 (공백의) 호스트레코드가 있어야 하고 이들은 공히 192.168.0.16 을 가리키고 있어야 하는 것이다.


<그림10-12. 공백의 호스트 레코드 생성>

 

<그림10-12> DNS서버에서 Secure.pe.kr 관리영역에 공백의 문자열을 가진 호스트를 생성하면서 192.168.0.16 이라는 IP Address 를 지정해 주고 있다. 그러면 이제 클라이언트는 http://www.secure.pe.kr , http://secure.pe.kr 둘 중 어떤 주소를 이용해서라도 웹사이트에 접근이 가능해 졌다.

 

추가로 지금 하고자 하는 작업은 클라이언트가 http://secure.pe.kr 을 입력해서 접근했을 때 자동적으로 클라이언트의 주소창에 보여지는 주소를 http://www.secure.pe.kr 로 바뀌도록 처리하려고 한다. 이럴때 IIS URL 리디렉션 기능을 쓰면 된다. 이것을 가능하게 하려면 IIS서버에서는 2개의 웹사이트가 만들어져야 한다. 하나의 사이트는 사이트의 모든 컨텐츠를 담은 www.secure.pe.kr 사이트이고, 하나의 사이트는 www.secure.pe.kr URL 리디렉션을 하게 되는 secure.pe.kr 사이트이다. 예제에서 이미 www.secure.pe.kr 웹사이트는 구축이 되어 있다고 가정한다. 추가로 secure.pe.kr 웹사이트를 만든다음 URL리디렉션을 해 보도록 하자.


<그림10-13. URL 리디렉션 사이트 생성 1>


www.secure.pe.kr
URL 리디렉션을 담당할 secure.pe.kr 웹사이트를 생성한다. 인터넷 서비스 관리자에서 서버이름을 마우스 오른쪽 클릭하고 새로 만들기à웹사이트를 선택한다.


<그림10-14. URL 리디렉션 사이트 생성 2>


웹사이트의 이름으로는 Secure.pe.kr 이라고 입력했다.


<그림10-15. URL 리디렉션 사이트 생성 3>


IP
주소 및 포트 설정 화면에서 이 사이트의 호스트 헤더란에 ‘Secure.pe.kr’가 들어감을 주의깊게 보라. Secure.pe.kr URL을 통해서 접근하는 클라이언트에게는 이 웹사이트를 열어주겠다는 것을 나타낸다.


<그림10-16. URL 리디렉션 사이트 생성 4>


홈디렉터리를 결정한다. URL 리디렉션 할 사이트이므로 텅빈 폴더를 사
용해도 좋다.


<그림10-17. URL 리디렉션 사이트 생성 5>


웹 사이트 액세스 권한을 기본설정을 그대로 두고 [다음]으로 진행하면 웹 사이트 만들기 마법사가 완료된다.


<그림10-18. URL 리디렉션 사이트 생성 7>


Secure.pe.kr
웹사이트가 추가된 것이 보인다. 웹 사이트의 등록정보를 연다.


<그림10-19. URL 리디렉션 사이트 생성 8>


등록정보를 열고 홈 디렉터리탭을 연 다음 ‘URL로 리디렉션옵션을 지정한다. ‘다음으로 리디렉션항목에는
http://www.secure.pe.kr 을 입력했다. 클라이언트가 http://secure.pe.kr 로 접근하면 http://www.secure.pe.kr URL 리디렉션이 될 것이다. 클라이언트 웹브라우저의 주소창에는 URL이 전환되는 모습이 보이게 된다.


:
Posted by 새벽예찬
2008. 11. 20. 18:54

10-2.Web server 기본 설정 Windows Networking2008. 11. 20. 18:54

 

10-2-1. 웹서버 기본설치 및 구성

 

윈도우 서버 2003을 특별한 설정변경없이 기본설치를 이용해 설치하였다면 IIS는 설치되지 않는다. 

프로그램추가/제거àWindows구성요소à응용프로그램서버à인터넷정보서비스(IIS)로 접근하여 IIS를 설치할 수 있다.

 

IIS를 설치한 후 인터넷 익스플로어를 이용하여 웹서버의 IP주소로 접근해 보았다.  <그림10-2>과 같이 준비중이라는 메시지를 보여주는 페이지를 보여줌을 알 수 있다.


<그림10-2. 기본설치된 웹서버에 웹브라우저를 이용하여 접근한 화면>

 

IIS를 컴퓨터에 설치하고 난후 IIS가 서비스할 기본 위치는 C:\Inetpub 폴더이다. 웹서버를 위한 폴더는 C:\Inetpub하위폴더인 wwwroot 폴더이다<그림10-3>


<그림10-3. IIS의 기본 디렉터리 구성>

 

웹프로그래머가 새로운 웹사이트를 개발하였다면 그 파일들을 저장할 위치도 바로 이 위치이다. 이 위치에 당신이 만든 웹페이지를 저장하면 기본 웹사이트에서 여러분의 홈페이지를 서비스해 줄 것이다.

 

지금부터 웹사이트의 등록정보를 통해서 관리를 위해 필요한 사항들을 챙겨보도록 하자. 웹사이트의 등록정보로 접근하는 방법은 두 가지가 제공된다. 인터넷 서비스 관리자 (ISM)를 이용하는 방법과 관리웹페이지를 이용하는 방법이다.

 

10-2-1-1. IIS 관리도구

 

관리도구메뉴에서 인터넷 서비스 관리자를 실행한다. 아래의 <그림10-4>와 같은 화면이 열린다.


<그림10-4. 인터넷 서비스 관리자 (ISM) >

 

이 관리도구를 이용하여 당신은 새로운 웹사이트를 추가하고 사이트의 각종 설정들을 변경하는 작업을 할 수 있다. 또 다른 방법은 웹인터페이스를 통해서 접근할 수 있는 관리웹페이지를 이용하는 방법이 있다. 관리웹페이지를 이용하기 위해서는 IIS설치시에 관리웹페이지 옵션을 선택해 주어야 한다. <그림10-4>의 왼쪽패널에서 웹사이트 아래에 있는 Administration 을 마우스 오른쪽클릭하여 속성을 열었다.


<그림10-5. 관리 웹 사이트 접근>

 

관리페이지의 SSL포트를 확인하고 (예제에서는 8098이다) 웹브라우저에서 https://192.168.0.16:8098 을 입력했다.


<그림10-6. 관리 웹 사이트 1>

 

관리 웹사이트가 열린다. 서버이름, 관리자설정 등 다양한 설정을 할 수 있도록 인터페이스를 지원하고 있다. 이 관리 웹사이트를 이용하여 인터넷 서비스 관리자를 통해서 할 수 있는 작업들을 할 수 있다. 이전 버전에 비해 인터페이스가 상당히 깔끔해 지고 기능도 추가되었지만 IIS서버의 관리를 위해 관리웹페이지는 잘 이용되지 않는다. 터미널 서버를 통한 원격관리가 많이 이루어지는데 그렇다면 쓰지 않는 관리 웹페이지가 열려있을 필요가 없다. IIS를 설치할 때 사용여부를 판단하여 불필요하게 설치하지는 않도록 하자.

 

10-2-1-2. 웹사이트 등록정보

 

웹사이트의 등록정보를 열어보았다. 여러 개의 탭이 보이는데, 먼저 문서탭을 열어 보았다. 4개의 파일의 목록이 보인다.


<그림10-7. 웹사이트 등록정보 문서 탭>

 

웹서비스도 결국 클라이언트가 서버에게 자신이 원하는 파일을 요청하고 웹서버는 사용자가 파일에 접근할 권한이 있는지 확인한 다음 파일을 넘겨주는 작업을 하는 것이다. 복잡한 웹어플리케이션들이 구동되는 요즈음의 웹서비스에 비할바는 아니지만 단순히 생각하면, 결국 파일서비스라는 얘긴데 다만 HTML (Hyper Text Markup Language) 문서형식의 파일을 웹브라우저가 받아서 화면에 뿌려주는 형태로 동작하게 된다. 하지만 보통 우리가 어떤 웹사이트에 접근할 때 http://www.secure.pe.kr 이라는 URL을 통해서 접근할 뿐, 직접 http://www.secure.pe.kr/default.htm 이라는 형태로 주소를 사용하지는 않는다. 그렇다면 웹서버 입장에서는 사용자가 특별한 파일을 요청하지 않고 디렉터리에 접근했을 때 기본적으로 제공할 파일이 정의되어 있어야 할 것이다. 웹사이트 등록정보의 문서탭은 그러한 파일이름을 지정해 둔 것이다. 웹서버는 해당 디렉터리에서 문서탭에 있는 순서대로 파일을 검색하여 사용자의 요청에 응답한다. 보통 커뮤니티 사이트로부터 공짜로 얻게 되는 10~20MB정도의 홈페이지 공간을 이용할 때 루트 폴더에 index.htm 파일이 있어야 합니다.’ 등의 안내문을 보는 경우가 있을 것이다. 바로 이러한 파일이 제공하는 웹페이지를 가리켜서 홈페이지라고 부른다. IIS에서의 기본파일의 이름은 ‘default.htm”이다.

 

다음에는 웹사이트탭을 열어보자. 웹사이트 확인, 연결, 로깅사용이라는 세가지 화면으로 구성되어 있는데 웹사이트 확인을 보면 TCP포트, SSL포트 등의 정보를 확인할 수 있다. 기본적으로 웹서버는 TCP 80번 포트에서 서비스된다. 우리가 보통 웹브라우저를 실행하고 http://www.secure.pe.kr 라는 URL(Uniform Resouce Locator)을 이용해서 접근했을 때 실제로는 http://www.secure.pe.kr:80 으로 접근하는 것과 동일하다. ‘80번 포트르 http 요청을 합니다라는 뜻이 된다. 만일 당신이 웹서비스의 TCP포트를 임의로 80번이 아닌 8000번으로 바꾸었다고 가정하면 클라이언트는 더 이상 http://www.secure.pe.kr라는 URL을 통해서 해당 웹서버에 접근할 수 없다. 대신에 http://www.secure.pe.kr:8000 이라는 URL을 이용해야만 접근이 가능하다다. SSL포트 443번은 http 가 아닌 https 를 이용해서 접근할 때 서비스되는 포트이다. SSL서버의 설정은 뒤에서 다룬다.


<그림10-8. 기본 웹 사이트 등록정보 웹사이트 탭>

 

IP주소 항목도 중요한 의미를 가진다. 이것이 잘못 설정되어 있으면 아예 웹페이지가 열리지 않는 경우가 생긴다. 기본적으로 “(지정하지 않은 모든 IP)”라고 되어 있다. 웹서버의 IP Address 192.168.10.1 192.168.10.2  이렇게 2개의 IP가 할당되었다고 가정했을 때 지정하지 않은 모든 IP “라는 기본설정을 가지고 있으면 2개중 어떠한 IP Address로 찾아오는 http요청이라도 이 웹사이트는 정상적인 응답을 한다. 하지만 당신이 특별히 지정하지 않은 모든 IP” 대신에 192.168.10.1과 같이 IP Address를 지정하였다면 더 이상 192.168.10.2 로 오는 http 요청은 이 웹사이트가 응답하지 않는다. 오직 192.168.10.1 로 오는 요청에만 응답을 할 뿐이다. 웹사이트가 처리하는 특별한 IP Address를 지정해야 할 필요가 있다거나, 하나의 웹서버에서 여러 개의 웹사이트가 동작하고 있는 경우에만 변경하도록 한다.

 

나머지는 보통 기본설정을 사용한다. 기본적으로 IIS는 로깅을 이용한다. W3C 확장 로그 파일 형식이 기본인데 계정로깅을 이용하려면 반드시 이 로그형식을 사용해야 한다. [등록정보]를 사용하여 로그파일의 경로, 로깅되는 정보등을 변경해 줄 수 있다.

 

다음은 홈 디렉터리탭을 열어보자<그림10-9> 꼭 필요한 몇가지 설정들을 담고 있다.


<그림10-9. 웹사이트 등록정보 홈디렉터리 탭>

 

먼저 가장 위의 메뉴에서는 3개의 라디오 버튼으로 구성된 메뉴들을 볼 수가 있는데, 이것은 웹서버의 웹사이트가 웹서비스를 하는 파일이 어디에 위치해 있는지를 지정해 주는 일을 한다. 웹서버는 세가지 경우의 서비스를 할 수 있는데, 아래의 <그림10-10>을 참고해서 설명한다.


<그림10-10. IIS의 웹 서비스 디렉터리 구성>

 

개념적으로 이해할 필요가 있다. <그림10-10>에서 보면 물리적인 웹서버는 하나이다. 이 하나의 웹서버는 여러 개의 복수 웹사이트를 호스팅 할 수 있다. IIS설치와 함께 구성되어 있는 기본 웹 사이트단지 웹서버가 서비스하는 하나의 웹사이트일 뿐이다.  웹사이트는 각각 독립적인 컨텐츠를 가진 다른 사이트와는 아무런 연관성이 없는 독립적인 기능을 한다. 만일 하나의 웹 서버가 3개의 웹사이트를 서비스하고 있다면 이론적으로는 세대의 웹서버가 각각 하나씩의 웹 사이트를 서비스하고 있다고 생각해도 좋다. 이들 웹사이트들을 클라이언트가 요청했을 때 웹서버는 클라이언트가 원하는 파일을 넘겨줘야 하는데, 이때 각 웹사이트들은 클라이언트가 원하는 컨텐츠를 어디서 가져올 것인지 3가지 메뉴에 의해 선택된다.

 

기본설정은 이 컴퓨터에 있는 디렉터리로 되어 있다. 그리고 아래쪽의 로컬 경로에서는 D:\Inetpub\wwwroot 라고 되어 있는데, 이것은 클라이언트가 이 웹사이트로 요청을 보내면 D:\Inetpub\wwwroot 위치에서 서비스할 파일을 찾아서 보내주겠다는 것을 의미한다. 만일 이 사이트의 주소가 www.secure.pe.kr 로 되어 있었다면 클라이언트가 http://www.secure.pe.kr URL을 이용해서 http 요청을 보냈을 때 이 웹서버는 D:\Inetpub\wwwroot 위치에서 앞에서 보았던 문서탭의 목록을 순서대로 찾는다. 이 위치에 default.htm이라는 파일이 있었다면 이 파일을 클라이언트에게 전송하게 될 것이다.

 

두번째 옵션인 다른 컴퓨터에 있는 공유디렉터리를 사용하면 이 웹사이트의 컨텐츠가 웹서버에 저장된 것이 아니라 네트워크에 있는 다른 서버에 저장되어 있는 경우이다. 예를 들어 웹사이트의 컨텐츠가 blueapple 이라는 서버의 secure 라는 공유폴더에 저장되어 있다면 당신은 \\blueapple\secure 라는 UNC Path를 이용하여 지정해 주어야 한다.

 

마지막 옵션인 ‘URL로 리디렉션을 선택하면 이 웹사이트로 들어오는 요청을 다른 웹사이트로 전환시키는 것이 가능하다. 사용용도는 응용하기 나름이다. 이를 테면, 클라이언트가 접속해야 되는 웹페이지가 너무 길어서 사용자가 접근하기가 어렵다거나, 회사의 도메인 이름이 여러 개인데 하나의 웹사이트로 집중시킨다거나 하는 경우에 쓸 수 있다.

 

기본적으로 IIS“URL리디렉션기능은 클라이언트이 웹브라우저의 주소창에 고정식 주소를 지원하지는 않는다. 예를 들어 http://www.secure.pe.kr 웹사이트가 http://forgarden.tistory.com 으로 URL 리디렉션이 되고 있을 때, 클라이언트가 웹브라우저의 주소창에 http://www.secure.pe.kr 을 입력해서 접근하게 되면 웹서버에서는 http://forgarden.tistory.com 으로 URL리디렉션을 시키게 되고, 역시 클라이언트의 주소창에는 주소가 http://forgarden.tistory.com 으로 변환되는 것을 보게 된다.

 

만일 클라이언트의 웹브라우저의 주소창이 고정되도록 하고자 한다면 아래와 같은 방법을 사용해 볼 수 있다. http://www.secure.pe.kr 웹사이트에 이 컴퓨터에 있는 디렉터리로 설정을 한 다음, 해당 위치에 아래의 박스에 있는 것과 같은 내용을 담은 default.htm 파일을 저장하는 것이다.


<HTML>
<HEAD>
<TITLE>
안녕하세요. Windows Network 에 오신 것을 환영합니다</TITLE>
</HEAD>
<FRAMESET ROWS="100%,*" border=0>
    <FRAME name="mainpage" src="
http://forgarden.tistory.com”>

</FRAMESET>
</HTML>

<그림10-11. 고정 URL 을 지원하기 위한 Html 문서>

 

<그림10-11>에서 간단한 html 문서가 만들어져 있는데, 이것은 웹페이지에 상/하 프레임으로 나누고 하위의 프레임은 안 보이도록 감추고, 상위의 프레임에는 실제 URL 리디렉트할 주소를 기록했다. 그러면 실제로 www.secure.pe.kr 웹사이트는 오직 하나의 파일인 default.htm 만 있으면 되는 것이고 사용자들은 http://forgarden.tistory.com 에 접근을 하겠지만, default.htm 파일의 상위프레임에서만 움직이는 것이기 때문에 웹브라우저에서 보이는 URL은 고정이 된다. 이것은 웹서버의 URL리디렉션 기능을 사용한 것이 아니다. 단지 html 문서상의 태그를 통해 구현할 수 있는 기능일 뿐이다.

 

<그림10-11>에서 보면 홈디렉터리탭에는 추가로 응용 프로그램설정이 있는데, 이것은 워드, 엑셀 등의 어플리케이션과는 구분되어 보통 애플리케이션혹은 웹애플리케이션이라고 부르고 있다. 웹 애플리케이션이라고 하면 asp, cgi, php 등의 프로그램을 일컫는 것이다. 이러한 웹 애플리케이션은 클라이언트의 요청을 서버의 데이터베이스에 SQL문을 이용해서 쿼리하여 답을 얻은 다음 다시 html 문서로 변환하여 클라이언트에 제공하는 등 클라이언트의 요청이 웹서버와 상호작용할 수 있도록 해 주는 서버에서 동작하는 프로그램들(Server Side Program)이다.  보통 IIS에서는 ASP, Apache에서는 PHP 로 프로그램되는 것이 일반적이다. CGI 역시 유명한 웹 애플리케이션 프로그램중의 하나였지만 점점 더 사라져가는 추세인 듯 하다. IIS에서는 기본적으로 ASP, ASP.NET 등의 프로그램이 동작한다. CGI, PHP등을 구동시키려면 Active Perl ( http://www.activeperl.com )등의 프로그램을 별도로 설치해 주어야 한다.

 

이러한 프로그램들을 어떠한 파일(필터라고 부른다)이 구동시켜줄 것인지를 지정하는 것이 이 메뉴에서 이루어진다. ‘홈 디렉터리탭의 중간에 위치한 스크립트 소스 액세스’ ‘읽기’’쓰기’’디렉터리 검색등은 특별한 경우가 아니면 건드리지 말아야 한다. ‘읽기가 기본설정인 것을 확인하자. 각각의 옵션에 대해서 필요하다면 IIS도움말을 참고하라. 많은 정보를 얻을 수 있을 것이다.

:
Posted by 새벽예찬