달력

11

« 2024/11 »

  • 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

'ftp'에 해당되는 글 1

  1. 2008.11.21 10-8.FTP Server 구현
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 새벽예찬