티스토리 뷰

F T P( File Transfer Protocol )



- 파일 전송 프로토콜의 약자로 TCP/IP 네트워크 상에서 

컴퓨터들이 파일을 교환 하기 위해 최초로 공개된 통신 규약

Port : TCP 20 ( 파일 전송 )

            TCP 21 ( 인증 및 제어 )



이제 윈도우서버 2008_R2 FTP를 설정해보자.





FTP에도 웹과 같이 FTP만의 루트 디렉토리가 필요하다

먼저 윈도우2008 서버에서 C:\ 경로에 ftp, ftp1 폴더를 생성하자





ftp 폴더 아래에 a,b,default 폴더를 생성해주자.

default 폴더는 anonymous 계정의 폴더이다.





a와 b 폴더 각각 txt 파일을 한개 씩 만들자





생성하고 나서 서버측 방화벽에 FTP 20번, 21번 포트를 열어주자





먄약, 클라이언트(윈도우7) 쪽에서 dir 명령어를 쳤을 때 아무것도 나타나지 않는

화이트보드 현상이 일어날 경우 

클라이언트 방화벽에서 포트가 아닌 프로그램으로 C:\system32\ftp.exe를 추가해주자

( 혹시 모르니 미리 열어두고 시작하자 )




IIS 관리자에 들어가 이번엔 FTP 사이트 추가를 해주자





사이트 이름 : ftp

실제 경로 : C:\ftp ( 처음에 우리가 만들어준 ftp 루트 디렉토리 )





SSL은 없음으로 설정해주고 다음!!





인증 및 권한 부여 정보는 일단 기본값으로 넘어가고

다시 직접 설정 해 줄것이다





FTP 사이트가 정상적으로 추가 됐다


FTP 설정을 하면서 가장 중요한 것은

'FTP 권한 부여 규칙' 과 'FTP 인증' 설정을 함께 묶어서 설정 해준다.





FTP 권한 부여 규칙에 들어가 모든 익명 사용자(anonymous) 을 체크

또 익명 사용자이기 때문에 읽기 권한만 주기로 한다





이번엔 지정한 사용자를 체크하고 루트디렉토리 안에 만든 폴더명과 같이

등록된 사용자 이름과 맞추어 추가 해 준다


이들에겐 읽기와 쓰기 권한을 모두 부여해준다





앞서 말했듯이 FTP 권한 부여 규칙과 FTP 인증은 같이 설정해준다

FTP 인증에서 기본인증(a,b)와 익명인증(anonymous) 모두 사용으로 바꿔준다





FTP 메시지는 FTP 접속시에 뜨는 메시지들이다

이것 또한 보안상 매우 중요한 부분이니 꼭 설정 해 주자


메시지에서 사용자 변수 지원을 체크해주면 '시작'과 '끝내기'같이 변수값을 사용할 수 있다





'FTP 사용자 격리' 설정에서

'사용자 이름 디렉터리' 를 체크해주면 해당 계정별로 디렉터리에서 시작하며

다른 디렉터리로 이동이 가능하다





서버의 DNS 서버설정은 자기 자신이 DNS서버를 가지고 있기에

자기 자신을 바라보게 설정 해 주자





클라이언트(윈도우7) 또한 DNS서버를 static으로 바라보게 하자





이제 DNS 서버가 잘 연결되었는지 nslookup으로 확인부터 해보자





정상적이라면, cmd 창에서 ftp [등록한 도메인] 

명령어를 사용하여 접속한다


접속이 잘 되면 위와 같이 우리가 설정해준 배너가 뜰 것이다.





먼저, 익명사용자인 anonymous로 접속을 해보자

anonymous는 암호가 없는게 아니라 e-mail로 암호를 할당받기 때문에

그냥 Enter를 치고 접속한다





dir 명령어를 처보면 default 폴더에 만들어 놓은 파일이 보일 것이다.





!dir 은 접속한 클라이언트의 디렉터리를 보여주는 명령어이다

위와 같이 자신의 사용자계정 홈디렉터리가 보인다


lcd 명령어는 클라이언트의 디렉터리 위치를 변경해주는 것이다

실습을 위해 desktop(바탕화면)으로 이동하자





anonymous 에겐 읽기 권한이 있기 때문에 파일을 다운로드 받을 수 있다

get 명령어로 파일을 다운받으면 정상적으로 받게 된다





애초에 이름을 바꿔서 받고 싶으면 

get [파일이름] [바꾸고싶은 파일이름] 명령어를 사용한다

!dir로 확인해보면 desktop에 2.txt로 잘 다운로드 됐다





익명사용자인 anonymous는 읽기 권한만 있으므로 업로드는 불가능 하다

put 명령어를 써보았지만 위와 같이 deny 됐다





이번엔 기본 사용자인 a로 접속 해보자

FTP 연결된 상태로 user [사용자 이름]

명령어를 치면 사용자가 바뀐다





user a 로 접속한 후, 

dir 명령어를 치면 a폴더에 만들어둔 a.txt가 보인다





앞서 사용자 이름 디렉터리(사용자 격리 안함)로 설정했기 때문에

위치 변경 명령어인 cd 가 된다


cd .. 명령어로 한단계 위로 가보면 위치가 바뀐 걸 알 수 있다






이번엔 사용자 격리를 사용해 보자


사용자 이름 실제 디렉터리(전역 가상 디렉터리 사용) 을 설정 해주자


( 전역 가상 디렉터리는 FTP 루트 디렉터리 안에 LocalUser 폴더를 만들어 주어야 한다 )


( 또한, 전역 가상 디렉터리 사용시 , anonymous의 폴더는 default가 아닌 public으로 만들어 주어야 한다 )






사용자 a로 접속하게 되면 

C:\ftp\LocalUser\a 디렉터리에 들어가게 된다


dir 을 해보면 파일을 확인 할 수 있다





위와 같이, 사용자 격리를 사용시엔 해당 계정의 디렉터리 안에서만 위치 할 수 있으므로


cd 명령어를 사용해도 제자리다






이번엔 ftp 사이트를 하나 더 추가할 것이다

ftp1 로 만들고 ftp1 또한 루트 디렉터리를 생성하여 경로를 지정 해주자





SSL 없음으로 지정 해주고 다음!!





이번에도 인증 및 권한 부여정보는 사이트 추가 후 직접해 줄 것이다





ftp와 ftp1은 같은 포트번호를 사용하기엔 바인딩이 필요하다


(또는 IP를 변경해주거나 Port번호를 바꿔준다)

(우리는 바인딩을 해주자)





해당 사이트인 ftp1 우클릭 > 바인딩 편집





호스트 이름 부분에 임의로 입력 해주자

짧을 수록 편하다 (이유는 뒤에서..)


바인딩까지 됐다면 ftp1 사이트도 시작이 된다





ftp1 루트디렉토리에 우리는 사용자 격리 (전역 가상 디렉터리) 를 사용 할 것이므로

'LocalUser' 디렉터리를 만들어 주자





LocalUser 하위에 사용자 이름에 맞게 폴더를 만들어 주자

여기선 c,d 로 하겠다





c,d 각각 폴더안에 실습을 위해 파일들을 여러개 만들어 준다





이번엔 익명 사용자 없이, 지정한 사용자만 권한을 부여 할 것이다

사용자 디렉터리에 맞게 미리 생성한 c,d 를 지정해주고 

읽기와 쓰기 권한 모두 부여 해주자





FTP 권한 부여 규칙과 FTP 인증은 항상 같이 설정 하라고 당부했다


이번 FTP 인증은 anonymous 계정을 사용하지 않기 때문에 

익명 인증은 사용 안 함, 기본 인증은 사용 으로 설정





FTP 사용자 격리설정은

사용자 이름 실제디렉터리(전역 가상 디렉터리 사용)을 설정 해준다


위에서 봤듯이, 위와 같이 설정해주면 사용자별로 해당 계정 폴더에만 묶여있다

보안상 더 좋은 설정이다





이제 클라이언트에서 접속할 때

바인딩 해준 호스트 sec를 사용해야 한다

sec|anonymous로 접속 해보자 ( '|' 은 shift+\ 이다 )


우리가 앞서 익명 인증은 사용 안함으로 설정했기 때문에 

anonymous는 접속하지 못한다





설정해준 계정인 c로 접속해보자

기본 인증은 사용으로 했기 때문에 잘 접속이 된다





정상적으로 배너가 보이고 

dir 해보면 아까 C:\ftp1\LocalUser\c\ 에 만들어둔 3개의 파일이 보인다





사용자 c,d 에게는 읽기와 쓰기 권한을 모두 부여했으므로 

다운로드 및 업로드가 가능하다


위와같이 클라이언트의 디렉터리 위치를 desktop으로 변경 후

이번엔 get이 아닌 mget(한번에 여러개의 파일을 다운)을 사용 해보자


mget 을 사용하면 한꺼번에 3개의 파일이 다운로드 되는 것을 볼 수 있다






!dir 로 클라이언트 desktop 디렉터리에 잘 다운로드 됐는지 확인!!


이것으로 FTP 설정을 마친다