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 이 적용되어 있어야만 합니다.
그리고, 만약 여러분들이 관리자 계정 대신 다른 사용자 계정을 사용하여 이 미리보기를 따라해보려면, 반드시 그 사용자 계정에 적합한 폴더를 생성해야 하고, 필요하다면 이 폴더에 해당 계정에 대한 올바른 권한을 설정해야만 합니다.
전제조건
이 미리보기의 내용을 모두 따라해보기 위해서는 다음과 같은 준비가 필요합니다.:
|
* |
본문의 번역을 마무리하는 즈음에 반갑게도 Windows Server 2008 RC0 가 공개되었다.
그리고 확인해본 결과, 원문의 일부 내용 및 이미지 역시 RC0 를 기준으로 다시 재조정되었으므로 이 점을 고려하여 본문을 읽어보기 바란다.
그러나 RC0 도 최종 릴리즈 버전은 아니라는 점을 감안하여 번역문까지 다시 재조정하지는 않았다.
이를 참고하기 바란다.
|
** |
이 링크의 내용도 RC0 를 기준으로 재조정되었다.
그러나 특별히 주의할 만한 부분은 보이지 않는다.
|
*** |
이 링크의 내용도 RC0 를 기준으로 재조정되었다.
그러나 특별히 주의할 만한 부분은 보이지 않는다.
|
자체 서명 인증서 생성하기
이번 단계에서는 여러분들의 FTP 사이트에서 사용하게 될 자체 서명 인증서를 생성해 볼 것입니다. *
- 인터넷 정보 서비스 (IIS) 관리자를 실행시킵니다.
- 그리고 Connections 패인 트리뷰의 최상위 노드에서 컴퓨터 노드를 클릭하고, Server Certificates 아이콘을 더블 클릭합니다.
- 그 다음에 우측의 Actions 패인에서 Create Self-Signed Certificate 링크를 클릭합니다.
- 새로운 인증서의 친숙한 이름으로 "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 사이트를 생성해 볼 것입니다.
- 인터넷 정보 서비스 관리자의 Connections 패인에서 트리뷰의 Sites 노드를 클릭합니다.
- 다음의 이미지에서 볼 수 있는 것과 같이, 트리뷰에서 Sites 노드를 마우스 오른쪽 버튼으로 클릭하고 Add FTP Site 메뉴를 클릭하거나, Actions 패인에서 Add FTP Site 링크를 클릭합니다.
Add FTP Site 마법사가 나타나면:
- FTP site name 텍스트 박스에는 "My SSL FTP Site" 라고 입력하고, Contents Directory 에는 전제조건 섹션에서 미리 만들어 놓았던 "%SystemDrive%\inetpub\ftproot" 폴더를 지정합니다.
주의:
만약 Contents Directory 의 물리적 경로를 직접 타이핑해서 입력한다면, "%SystemDrive%\inetpub\ftproot" 와 같이 경로에 환경 변수를 사용할 수도 있습니다.
- 작업을 모두 마쳤으면, Next 버튼을 클릭합니다.
마법사의 다음 페이지에서는:
- FTP 사이트의 IP 주소를 지정하려면 일반적으로 IP Address 드롭다운 목록 상자에서 주소를 선택하거나 기본적으로 선택되어 있는 "All Unassigned." 를 그대로 사용하면 됩니다.
이 미리보기에서는 IP Address 에 "127.0.0.1" 을 입력하여 로컬 루프백 IP 주소를 지정합니다.
- FTP 사이트의 포트를 지정하기 위해 Port 텍스트 박스에 TCP/IP 포트를 입력합니다. 이 미리보기에서는 기본 포트인 21 번 포트를 사용합니다.
- 이 미리보기에서는 가상 호스트 이름을 사용하지 않으므로 Virtual Host 텍스트 박스는 공란으로 비워둡니다.
- Certificates 드롭다운 목록 상자의 값을 "My FTP Certificate" 로 지정하고, Require SSL 옵션을 체크합니다. *
- 작업을 모두 마쳤으면, Next 버튼을 클릭합니다.
마법사의 다음 페이지에서는:
- Authentication 설정에서 Basic 을 체크합니다.
Authorization 설정에서:
- Allow access to 드롭다운 박스의 값을 "Specified users" 로 지정하고,
- 사용자 이름으로 "administrator" 를 입력합니다.
- Permissions 옵션은 Read 와 Write 를 모두 체크합니다.
- 작업을 모두 마쳤으면, 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 에서 여러분들이 만든 FTP 사이트 노드를 클릭합니다. 그러면 모든 FTP 기능 아이콘들이 출력됩니다.
- SSL 옵션을 설정하기 위해 FTP SSL Settings 아이콘을 더블 클릭하여, SSL 설정 기능 페이지를 엽니다.
- FTP SSL Settings 페이지가 나타나면, Custom 옵션을 선택하고 Advanced 버튼을 클릭합니다.
Advanced SSL Policy 대화 상자가 나타나면:
- Control 채널에 대해서 Require only for credentials 옵션을 선택합니다.
주의: 이 설정은 SSL 을 사용하여 모든 사용자 이름과 비밀번호를 암호화하지만, 그 외의 다른 Control 채널 동작에 대해서는 사용자가 암호화 여부를 선택할 수 있게 해줍니다.
- Data 채널에 대해서 Allow 옵션을 선택합니다.
주의: 이 설정은 사용자가 Data 채널의 동작에 대하여 암호화 여부를 선택할 수 있게 해줍니다.
- 작업을 모두 마쳤으면, Finish 버튼을 클릭합니다.
- 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 게시를 추가하기 위해 필요한 전체 과정을 보여줍니다. *
<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 의 다른 많은 문서들과는 달리 이 섹션에서는 대단히 많은 부분들을 설명없이 넘어가고 있다.
그러나 그 대부분의 내용들은 이전에 살펴본 문서들에서 이미 한 번 이상씩 언급되었던 내용들이므로 필자도 그냥 넘어가도록 한다.
|
宋