FTP 7 따라하기: FTP over SSL 구성하기

등록일시: 2007-09-29 12:14,  수정일시: 2013-11-11 17:50
조회수: 17,009
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.

서론

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

새로운 FTP 서비스의 놀라운 기능들 중 한 가지는 바로 FTP over Secure Sockets Layer(SSL)입니다. 이 기능을 사용하면 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도 최종 릴리즈 버전은 아니라는 점을 감안해서 번역문까지 다시 재조정하지는 않았습니다. 참고하시기 바랍니다.

자체 서명 인증서 생성하기

이번 단계에서는 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) 같은 보안 보증을 받을 수는 없지만, FTP over SSL 사이트를 설정하기 위한 용도로는 부족함이 없으며, 필요하다면 언제라도 약간의 비용을 들여서 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 서버에 접근할 때, 다음과 같은 명시적인 보안 옵션을 지원해줍니다. **

  • TLS-C/TLS - 연결이 RFC2228에 의한 TLS로 보호됩니다. 즉, 데이터 연결을 기본적으로 보호하지 않습니다.
  • TLS-P/SSL - 연결이 TLS로 보호됩니다. 즉, 데이터 연결이 기본적으로 보호됩니다.

대부분의 3rd 파티 FTP 클라이언트 프로그램에서는 이와 같은 SSL 연결 옵션 설정 방법이 지원됩니다. ***

* RC0에서는 Require SSL 옵션 외에도 Allow SSL 옵션이 추가로 제공되며 체크 박스도 라디오 버튼으로 바뀌었습니다.

** 고백하건데 이 두 가지 SSL 연결 옵션에 대해서는 저도 잘 모릅니다. 인터넷에서 검색도 해봤지만 별다른 속시원한 설명을 찾지 못했습니다. 그래서, 문맥상 어색하지 않은 수준으로만 번역되었음을 참고하기 바랍니다.

*** 간단히 FileZilla 3.0.1을 사용해서 FTP over SSL 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 게시를 추가하기 위해 필요한 전체 과정을 보여줍니다. *

  1. 앞에서 생성한 자체 서명 인증서의 해시를 얻습니다:
    1. Server Certificates 기능 페이지에서 "My FTP Certificate" 인증서를 더블 클릭합니다.
    2. Details 탭을 클릭합니다.
    3. Thumbprint 값이 나타날 때까지 아래로 스크롤합니다.
    4. Thumbprint 값을 살펴보면, 그 데이터는 다음과 비슷할 형태를 갖고 있을 것입니다:
      "f0 1e d2 3c b4 5a 96 78 87 69 a5 4b c3 2d e1 0f f0 1e d2 3c"
    5. 이 16진수 데이터를 텍스트 박스에서 클립보드로 복사하고, 빈 메모장을 열어 데이터를 붙여 넣습니다.
  2. 텍스트 편집기로 %SystemRoot%\System32\inetsrv\config 폴더에 존재하는 applicationHost.config 파일을 엽니다.
  3. <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>
  4. 새로운 binding 요소를 bindings 컬렉션에 생성하여 추가하고, 이 요소의 protocol 속성값을 "ftp"로, bindingInformation 속성의 port 값을 "21"로 설정합니다.
  5. 이제 기본 웹 사이트의 설정은 다음과 비슷하게 구성되어 있을 것입니다:
    <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>
  6. 닫기 bindings 태그 바로 아래에 인증과 SSL 설정을 위한 <ftpServer> 섹션을 추가합니다.
    <ftpServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" userName="IUSR" />
                <basicAuthentication enabled="true" />
            </authentication>
            <ssl serverCertHash="" 
                controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" />
        </security>
    </ftpServer>

    노트: URL 기반으로 구성되는 웹 사이트의 인증과는 달리 FTP 사이트의 인증 설정은 사이트 기반으로 구성됩니다.

  7. 보관해뒀던 자체 서명 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>
  8. 이제 applicationHost.config 파일의 가장 마지막 부분으로 이동하여 기본 FTP 사이트의 권한을 설정하기 위한 location 섹션을 추가합니다.
    <location path="Default Web Site">
        <system.ftpServer>
            <security>
                <authorization>
                    <add accessType="Allow" users="administrator" permissions="Read, Write" />
                </authorization>
            </security>
        </system.ftpServer>
    </location>

    노트: 이 예제에서 볼 수 있는 것처럼 FTP 사이트에 대한 권한 설정은 URL 기반으로 구성됩니다.

  9. applicationHost.config 파일을 저장합니다.

이제 SSL을 지원하는 FTP 클라이언트 프로그램을 사용하여 기본 웹 사이트에 로그인 할 수 있습니다.

요약

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

  • 기본 웹 사이트에 FTP 게시를 추가했습니다.
  • 기본 웹 사이트에 대한 FTP 기본 인증을 활성화하고, FTP 익명 인증은 비활성화 시켰습니다.
  • 사이트의 Control 채널과 Data 채널의 모든 동작에 대해 SSL을 필수적으로 설정했습니다.
  • 로컬 관리자 계정에 대해 읽기 및 쓰기 권한을 설정했습니다.

* 지금까지 살펴본 IIS.net의 다른 문서들과는 달리 이 섹션에서는 대단히 많은 부분들을 설명 없이 넘어가고 있습니다. 그러나, 그 내용들은 대부분 이전에 살펴본 문서들에서 이미 한 번 이상씩 언급되었던 내용들이므로 그냥 넘어가도록 합니다.