login register Sysop! about ME  
qrcode
    최초 작성일 :    2007년 10월 02일
  최종 수정일 :    2007년 11월 02일
  작성자 :    songgun
  편집자 :    songgun(송 원석)
  읽음수 :    21,896

강좌 목록으로 돌아가기

필자의 잡담~

(없음)
No. 25 :: IIS 7.0 인스퍼레이션 - 07, (Using FTP over SSL 번역 및 주해)
다음은 본 번역 문서의 권한에 관한 제반 사항입니다.
  • 본 번역 문서에 대한 모든 저작권은 마이크로소프트사에 있으며, 단순히 IIS 7.0 을 널리 알리고자 하는 개인적인 취지에 의해 번역되어 제공되는 문서입니다.
  • 마이크로소프트사의 요청이 있는 경우 언제라도 게시가 중단될 수 있습니다.
  • 본문에서 제공하는 번역에는 오역이 포함되어 있을 수 있으며, 주해의 내용도 개인적으로 파악한 것으로 마이크로소프트사는 이 내용에 대해 일체의 보장을 하지 않습니다.
  • 본문의 원문은 IIS 개발팀이 제공하는 Using FTP over SSL 입니다.
서론

마이크로소프트사에서는 원도우 서버 코드명 "롱혼"을 위해 완전히 새롭게 작성된 FTP 서비스를 개발했습니다. 이 새로운 FTP 서비스는 지금까지 웹 저작자들이 사용해오던 방법보다 개선된 방법을 사용하여 저작물을 배포할 수 있게 해주고, 웹 관리자에게 보다 많은 보안 및 배포 옵션들을 제공해주는 수 많은 새로운 기능들을 가지고 있습니다.

이 새로운 FTP 서비스가 제공해주는 놀라운 기능들 중 한 가지는 바로 Secure Sockets Layer (SSL) 기반 FTP 입니다. 이 기능을 이용하면 FTP 클라이언트와 서버간의 세션을 암호화 할 수 있습니다. 본문의 미리보기에서는 새로운 FTP 사용자 인터페이스를 사용하거나 IIS 구성 설정 파일을 직접 편집하여 FTP 사이트가 SSL 을 사용하도록 구성하는 과정을 여러분들에게 보여드립니다. *

주의: 이 미리보기에는 로컬 관리자 계정을 사용하여 여러분들이 생성한 FTP 사이트에 로그인하는 과정이 들어 있습니다. 이 과정은 반드시 FTP 사이트가 생성된 서버에서 루프백 주소를 사용해 동일 서버에 로그인하거나, 원격에서 서버에 로그인하는 경우에는 SSL 이 적용되어 있어야만 합니다. 그리고, 만약 여러분들이 관리자 계정 대신 다른 사용자 계정을 사용하여 이 미리보기를 따라해보려면, 반드시 그 사용자 계정에 적합한 폴더를 생성해야 하고, 필요하다면 이 폴더에 해당 계정에 대한 올바른 권한을 설정해야만 합니다.

전제조건

이 미리보기의 내용을 모두 따라해보기 위해서는 다음과 같은 준비가 필요합니다.:
  • 여러분들의 롱혼 서버에 IIS 7 이 설치되어 있어야만 하고, 다음과 같은 설정이 되어 있어야만 합니다.:
    • IIS 7 이 설치될 때 생성된 기본 웹 사이트가 존재해야 합니다.
    • 인터넷 정보 서비스 관리자가 설치되어 있어야만 합니다.
  • 새로운 FTP 서비스가 설치되어 있어야만 합니다. 다음의 링크 중 하나를 통해 http://www.iis.net/ 웹 사이트로부터 FTP 서비스를 다운로드 받고 설치할 수 있습니다.
  • FTP 게시를 위한 루트 폴더를 "%SystemDrive%\inetpub\ftproot" 위치에 생성해야만 합니다.
* 본문의 번역을 마무리하는 즈음에 반갑게도 Windows Server 2008 RC0 가 공개되었다. 그리고 확인해본 결과, 원문의 일부 내용 및 이미지 역시 RC0 를 기준으로 다시 재조정되었으므로 이 점을 고려하여 본문을 읽어보기 바란다. 그러나 RC0 도 최종 릴리즈 버전은 아니라는 점을 감안하여 번역문까지 다시 재조정하지는 않았다. 이를 참고하기 바란다.
** 이 링크의 내용도 RC0 를 기준으로 재조정되었다. 그러나 특별히 주의할 만한 부분은 보이지 않는다.
*** 이 링크의 내용도 RC0 를 기준으로 재조정되었다. 그러나 특별히 주의할 만한 부분은 보이지 않는다.


자체 서명 인증서 생성하기

이번 단계에서는 여러분들의 FTP 사이트에서 사용하게 될 자체 서명 인증서를 생성해 볼 것입니다. *

  1. 인터넷 정보 서비스 (IIS) 관리자를 실행시킵니다.
  2. 그리고 Connections 패인 트리뷰의 최상위 노드에서 컴퓨터 노드를 클릭하고, Server Certificates 아이콘을 더블 클릭합니다.
  3. 그 다음에 우측의 Actions 패인에서 Create Self-Signed Certificate 링크를 클릭합니다.
  4. 새로운 인증서의 친숙한 이름으로 "My FTP Certificate" 라고 입력하고, OK 버튼을 클릭합니다.
요약

이번 단계에서는 FTP 세션 암호화에 사용할 수 있는 자체 서명 인증서를 생성했습니다.

* 자체 서명 인증서 (Self-Signed Certificate) 는 CA-서명 인증서 (Certificate Authority Signed Certificate) 와 같은 보안 보증을 받을 수 없지만, SSL 기반 FTP 사이트를 설정하기 위한 용도로는 부족함이 없으며, 필요하다면 언제라도 약간의 비용을 들여 Verisign 등과 같은 CA 로부터 CA-서명 인증서를 발급받을 수 있다. 내부 사용자들만을 대상으로 하는 FTP 사이트인 경우에는 자체 서명 인증서만으로도 충분할 것이다.


IIS 관리자를 사용하여 SSL 이 활성화 된 FTP 사이트 생성하기

단계 1: FTP 사이트 마법사를 사용하여 SSL 기반 FTP 사이트를 생성하기

이번 첫 번째 단계에서는 관리자 계정으로만 접근할 수 있는 새로운 FTP 사이트를 생성해 볼 것입니다.

  1. 인터넷 정보 서비스 관리자의 Connections 패인에서 트리뷰의 Sites 노드를 클릭합니다.
  2. 다음의 이미지에서 볼 수 있는 것과 같이, 트리뷰에서 Sites 노드를 마우스 오른쪽 버튼으로 클릭하고 Add FTP Site 메뉴를 클릭하거나, Actions 패인에서 Add FTP Site 링크를 클릭합니다.
  3. Add FTP Site 마법사가 나타나면:
    1. FTP site name 텍스트 박스에는 "My SSL FTP Site" 라고 입력하고, Contents Directory 에는 전제조건 섹션에서 미리 만들어 놓았던 "%SystemDrive%\inetpub\ftproot" 폴더를 지정합니다.
      주의: 만약 Contents Directory 의 물리적 경로를 직접 타이핑해서 입력한다면, "%SystemDrive%\inetpub\ftproot" 와 같이 경로에 환경 변수를 사용할 수도 있습니다.
    2. 작업을 모두 마쳤으면, Next 버튼을 클릭합니다.
  4. 마법사의 다음 페이지에서는:
    1. FTP 사이트의 IP 주소를 지정하려면 일반적으로 IP Address 드롭다운 목록 상자에서 주소를 선택하거나 기본적으로 선택되어 있는 "All Unassigned." 를 그대로 사용하면 됩니다. 이 미리보기에서는 IP Address 에 "127.0.0.1" 을 입력하여 로컬 루프백 IP 주소를 지정합니다.
    2. FTP 사이트의 포트를 지정하기 위해 Port 텍스트 박스에 TCP/IP 포트를 입력합니다. 이 미리보기에서는 기본 포트인 21 번 포트를 사용합니다.
    3. 이 미리보기에서는 가상 호스트 이름을 사용하지 않으므로 Virtual Host 텍스트 박스는 공란으로 비워둡니다.
    4. Certificates 드롭다운 목록 상자의 값을 "My FTP Certificate" 로 지정하고, Require SSL 옵션을 체크합니다. *
    5. 작업을 모두 마쳤으면, Next 버튼을 클릭합니다.
  5. 마법사의 다음 페이지에서는:
    1. Authentication 설정에서 Basic 을 체크합니다.
    2. Authorization 설정에서:
      1. Allow access to 드롭다운 박스의 값을 "Specified users" 로 지정하고,
      2. 사용자 이름으로 "administrator" 를 입력합니다.
      3. Permissions 옵션은 Read 와 Write 를 모두 체크합니다.
    3. 작업을 모두 마쳤으면, Finish 버튼을 클릭합니다.
요약

이번 단계에서 살펴본 내용들을 다시 정리해보면:

  • "My SSL FTP Site" 라는 이름으로 새로운 FTP 사이트를 생성했으며, 이 사이트의 컨텐츠 루트는 "%SystemDrive%\inetpub\ftproot" 폴더로 지정했습니다.
  • FTP 사이트를 여러분들의 컴퓨터 로컬 루프백 주소 및 21 번 포트에 바인딩했습니다.
  • FTP 사이트가 Secure Sockets Layer (SSL) 을 사용하도록 설정하고 자체 서명 인증서를 선택했습니다.
  • 기본 인증을 활성화시키고 로컬 관리자 계정에 FTP 사이트에 대해 "읽기" 와 "쓰기" 를 허용하는 권한 규칙을 생성했습니다.
단계 2: 추가적인 FTP SSL 구성 설정하기

FTP 의 SSL 정책은 FTP 사이트별로 다르게 지정될 수 있으며, Control 채널과 Data 채널에 대해서도 각각 별개의 설정이 가능합니다. 이번 단계에서는 다른 데이터는 암호화 되지 않더라도 사용자의 신원정보는 암호화되도록 FTP 사이트의 SSL 설정을 추가로 구성해 볼 것입니다.

  1. 인터넷 정보 서비스 관리자에서 단계 1 에서 여러분들이 만든 FTP 사이트 노드를 클릭합니다. 그러면 모든 FTP 기능 아이콘들이 출력됩니다.
  2. SSL 옵션을 설정하기 위해 FTP SSL Settings 아이콘을 더블 클릭하여, SSL 설정 기능 페이지를 엽니다.
  3. FTP SSL Settings 페이지가 나타나면, Custom 옵션을 선택하고 Advanced 버튼을 클릭합니다.
  4. Advanced SSL Policy 대화 상자가 나타나면:
    1. Control 채널에 대해서 Require only for credentials 옵션을 선택합니다.
      주의: 이 설정은 SSL 을 사용하여 모든 사용자 이름과 비밀번호를 암호화하지만, 그 외의 다른 Control 채널 동작에 대해서는 사용자가 암호화 여부를 선택할 수 있게 해줍니다.
    2. Data 채널에 대해서 Allow 옵션을 선택합니다.
      주의: 이 설정은 사용자가 Data 채널의 동작에 대하여 암호화 여부를 선택할 수 있게 해줍니다.
    3. 작업을 모두 마쳤으면, Finish 버튼을 클릭합니다.
  5. FTP SSL Settings 페이지에서, Actions 패인의 Apply 링크를 클릭하여 SSL 설정을 저장합니다.
요약

이번 단계에서 살펴본 내용들을 다시 정리해보면:

  • 모든 사용자 신원정보는 반드시 암호화하고, 그 밖의 다른 Control 채널의 동작에 대해서는 사용자가 암호화 여부를 선택할 수 있도록 Control 채널의 SSL 정책을 설정했습니다.
  • 사용자가 Data 채널의 동작에 대하여 암호화 여부를 선택할 수 있도록 Data 채널의 SSL 정책을 설정했습니다.
단계 3: FTP 사이트에 로그인하기

단계 1 에서 여러분들은 관리자 계정을 사용하여 접근이 가능한 FTP 사이트를 생성했고, 단계 2 에서는 사용자 신원정보는 반드시 암호화하고, 그 밖의 Control 채널 동작과 Data 채널 동작에 대해서는 사용자가 암호화 여부를 선택할 수 있도록 SSL 정책을 설정했습니다.

SSL 을 지원하는 FTP 클라이언트 프로그램을 사용하여 FTP 서버에 접근할 때, FTP 서버는 다음과 같은 명시적인 보안 옵션을 지원해줍니다. **

  • TLS-C/TLS - 연결이 RFC2228 에 의한 TLS 로 보호됩니다. 즉 데이터 연결을 기본적으로 보호하지 않습니다.
  • TLS-P/SSL - 연결이 TLS 로 보호됩니다. 즉 데이터 연결이 기본적으로 보호됩니다.
대부분의 3rd 파티 FTP 클라이언트 프로그램에서는 이와 같은 SSL 연결 옵션 설정 방법이 지원됩니다. ***

* RC0 에서는 여기에서 Require SSL 옵션 외에도 Allow SSL 옵션을 추가로 제공해주고 있으며 체크 박스가 라디오 버튼으로 바뀌었다.
** 고백컨데 여기에서 설명하고 있는 두 가지 SSL 연결 옵션에 대해서는 필자도 그다지 잘 알지 못한다. 인터넷에서 검색도 해 봤지만 별달리 속시원한 설명을 찾지 못했다. 그래서 단지 문맥상 어색하지 않은 수준에서 번역이 이루어졌음을 참고하기 바란다.
*** 간단히 참고삼아 FileZilla 3.0.1 을 사용하여 SSL 기반 FTP 7.0 사이트 로그인을 테스트 해 보았다. FileZilla 에서는 다음과 같이 사이트 관리자에서 SSL 적용 여부를 선택할 수 있었다. 그리고 서버 종류를 다른 옵션으로 선택하면 로그인이 정상적으로 이루어지지 않았다.

또한 앞에서 설명했던 것처럼 자체 서명 인증서의 특성으로 인해 로그인 직후 다음과 같은 경고 메시지가 출력된다.

마지막으로 IIS 7.0 의 FTP 7.0 은 FTPS (FTP/SSL) 만을 지원하며 SFTP (FTP over SSH) 는 지원하지 않는다. FTPS 와 SFTP 에 대한 보다 자세한 정보는 각각 다음의 링크를 참고하기 바란다.


IIS 구성 설정 파일을 편집하여 SSL 기반 FTP 게시 추가하기

직접 IIS 구성 설정 파일을 편집하여 기존의 웹 사이트에 SSL 기반 FTP 게시를 추가할 수도 있습니다. 다음 단계들에서는 기본 웹 사이트에 SSL 기반 FTP 게시를 추가하기 위해 필요한 전체 과정을 보여줍니다. *

  • 앞에서 생성한 자체 서명 인증서의 해시를 얻습니다.:
    • Server Certificates 기능 페이지에서, "My FTP Certificate" 인증서를 더블 클릭합니다.
    • Details 탭을 클릭합니다.
    • Thumbprint 값이 나타날 때까지 아래로 스크롤합니다.
    • Thumbprint 값을 살펴보면, 그 데이터는 다음과 비슷할 형태를 하고 있을 것입니다.:
      "f0 1e d2 3c b4 5a 96 78 87 69 a5 4b c3 2d e1 0f f0 1e d2 3c"
    • 이 16 진수 데이터를 텍스트 박스에서 클립보드로 복사하고, 빈 메모장을 열어 데이터를 붙여 넣습니다.
  • 텍스트 편집기로 %SystemRoot%\System32\inetsrv\config 폴더에 존재하는 applicationHost.config 파일을 엽니다.
  • <sites> 섹션으로 이동합니다. 이 섹션에는 여러분들의 기본 웹 사이트에 대한 설정이 포함되어 있으며, 대부분 다음과 같은 내용으로 구성되어 있을 것입니다.:
<site name="Default Web Site" id="1">

    <application path="/">
        <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:" />
    </bindings>
</site>
  • 새로운 binding 요소를 bindings 컬렉션에 생성하여 추가하고, 이 요소의 protocol 속성값을 "ftp" 로, bindingInformation 속성의 port 값을 "21" 로 설정합니다.
  • 이제 기본 웹 사이트의 설정은 다음과 비슷하게 구성되어 있을 것입니다.:
<site name="Default Web Site" id="1">

    <application path="/">
        <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:" />
        <binding protocol="ftp" bindingInformation="*:21:" />
    </bindings>
</site>
  • 닫기 bindings 태그 바로 아래에 인증과 SSL 설정을 위한 <ftpServer> 섹션을 추가합니다.
    주의: URL 기반으로 구성되는 웹 사이트의 인증과는 달리 FTP 사이트의 인증 설정은 사이트 기반으로 구성됩니다.
<ftpServer>

    <security>
        <authentication>
            <anonymousAuthentication enabled="false" userName="IUSR" />
            <basicAuthentication enabled="true" />
        </authentication>
        <ssl serverCertHash=""
            controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" />
    </security>
</ftpServer>
  • 보관해 두었던 자체 서명 SSL 인증서의 thumbprint 데이터를 복사하여 ssl 요소의 serverCertHash 속성에 붙여 넣고, thumbprint 데이터 내에 존재하는 모든 공백 문자를 제거합니다. 그러면 이제 기본 웹 사이트의 설정은 다음과 비슷하게 구성되어 있을 것입니다.:
<site name="Default Web Site" id="1">

    <application path="/">
        <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:" />
        <binding protocol="ftp" bindingInformation="*:21:" />
    </bindings>
    <ftpServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" />
                <basicAuthentication enabled="true" />
            </authentication>
        </security>
        <ssl serverCertHash="f01ed23cb45a96788769a54bc32de10ff01ed23c"
            controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" />
    </ftpServer>
</site>
  • 이제 applicationHost.config 파일의 가장 마지막 부분으로 이동하여 기본 FTP 사이트의 권한을 설정하기 위한 location 섹션을 추가합니다.
    주의: 이 예제에서 볼 수 있는 것처럼 FTP 사이트에 대한 권한 설정은 URL 기반으로 구성됩니다.
<location path="Default Web Site">

    <system.ftpServer>
        <security>
            <authorization>
                <add accessType="Allow" users="administrator" permissions="Read, Write" />
            </authorization>
        </security>
    </system.ftpServer>
</location>
  • applicationHost.config 파일을 저장합니다.
이제 여러분들은 SSL 을 지원하는 FTP 클라이언트 프로그램을 사용하여 기본 웹 사이트에 로그인 할 수 있을 것입니다.

요약

이번 단계에서는 IIS 구성 설정 파일을 편집하여 기본 웹 사이트에 SSL 기반 FTP 게시를 추가해 보았습니다. 이번 단계에서 살펴본 내용들을 다시 정리해보면:

  • 기본 웹 사이트에 FTP 게시를 추가했습니다.
  • 기본 웹 사이트에 대한 FTP 기본 인증을 활성화하고, FTP 익명 인증은 비활성화 시켰습니다.
  • 사이트의 Control 채널과 Data 채널의 모든 동작에 대해 SSL 을 필수적으로 설정했습니다.
  • 로컬 관리자 계정에 대해 읽기 및 쓰기 권한을 설정했습니다.
* 지금까지 살펴본 IIS.net 의 다른 많은 문서들과는 달리 이 섹션에서는 대단히 많은 부분들을 설명없이 넘어가고 있다. 그러나 그 대부분의 내용들은 이전에 살펴본 문서들에서 이미 한 번 이상씩 언급되었던 내용들이므로 필자도 그냥 넘어가도록 한다.


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})