Windows/2008

FTP 전송모드 request, ack 까지 완벽하게 전송방향까지!! (+ 윈도우 FTP서버 passive 설정법)

99iberty 2013. 11. 18. 18:04

 

http://sracher.egloos.com/1961219

 

[ FTP : File Transfer Protocol ( 파일 전송 프로토콜 ) ]


파일 전송시, 2가지 모드로 구분된다..
  • 액티브 ( Active ) 모드
- 클라이언트가 서버에 접속 한 후, 데이터 전송이 필요할 때 서버가 클라이언트에 접속
- 클라이언트가 반드시 공인 IP주소를 가지고 있어야한다.
- FTP 클라이언트 프로그램들 ( 알 FTP 등 )의 기본 값

[ 동작 순서 ]




① 클라이언트에서 서버의 21번 포트로 접속 후 클라이언트가 사용할 두 번째 포트를 서버에 알려줌.
② 서버는 이에 대해 ack로 응답.
③ 서버의 20번 포트는 클라이언트가 알려준 두 번째 포트로 접속을 시도.
④ 마지막으로 클라이언트가 ack로 응답.

* Active 모드의 문제점

3번째 단계 즉, 일반적인 TCP/IP의 특징인 ‘클라이언트가 서버에 접속을 시도하는 것’이 아니라 ‘서버가 클라이언에 접속을 시도한다’는 것. 이 때문에 만약 클라이언트 PC등에 방화벽이 설치되어 있거나 FTP를 잘 이해하지 못하는 공유기 등을 사용하여 외부에서의 접속을 허용하지 않는다면 세 번째 프로세스가 작동하지 않게 되어 FTP 접속이 제대로 되지 않는 문제점이 있습니다. 이러한 경우 FTP 접속은 되지만 이후 데이터 목록을 받아오지 못하여 에러가 발생

- 접속시도 : 클라이언트 --- 21포트 ---> 서버
- 데이터 포트 : 서버에서 클라이언트로 접속 하여 데이터를 보내는 방식.






  • 패시브 ( Passive ) 모드
- 클라이언트가 서버에 접속을 한 후, 데이터 전송이 필요할 때 클라이언트가 서버에 접속
- 일반 웹 브라우저들의 기본 값

[ 동작 순서 ]


① 먼저 클라이언트가 command 포트로 접속을 시도
② 서버에서는 서버가 사용할 두 번째 포트를 알려준다
③ 클라이언트는 다른 포트를 열어 서버가 알려준 이 포트로 접속을 시도
④ 서버는 ack로 응답.

* Passive 모드의 문제점

두 번째 data포트로서 active 모드가 사용했던 20번을 사용하지 않고 대신 1024 이후의 임의의 비 특권 포트를 사용. 서버에서 클라이언트로 연결을 시도하는 active 모드의 문제점을 해결하기는 했지만, 서버의 비 특권포트(1024 ~ 65535)를 방화벽에서 열어 두어야 한다는 또 다른 문제점을 낳았다. wu-ftp나 proftpd등 대부분의 ftp 데몬에서는 클라이언트가 passive 모드로 접속 시 사용할 수 있는 포트를 제한설정 할 수 있는 기능을 지원하므로 이의 문제점을 미봉책이나마 어느 정도는 해결 가능.

- 접속시도 : 클라이언트 --- 21포트 ---> 서버
- 데이터 포트 : 클라이언트에서 서버의 20번 포트로 접속하여 데이터를 받아오는 방식




* Windows Server 2008 FTP 서버 설치

  • FTP설치는 선행으로 IIS서비스가 설치되어 있어야 한다. 서버 관리자 - 역할 추가

  • IIS를 설치하자
  • 설치가 완료되면 웹 서버 - 역할 서비스 추가 클릭
  • FTP 서버를 클릭후 설치를 시작한다

시작 - 관리 도구 - IIS 관리자 실행


사이트 - 오른쪽 클릭 - FTP 사이트 추가


  • 사이트 추가를 완료한후 추가된 ftp 사이트에서 다음과 같이 설정한다. FTP 권한 부여 규칙 더블 클릭

  • 허용 권한 규칙을 설정한다

  • 설정이 완료된후 ftp 서버에 접근시도해 본다.
ftp localhost // 자기 자신의 ftp 서버에 접속하는 명령어



* IE 보안 강화 구성 해제 ( 2008 )
  • Internet Explorer 종료
  • 서버 관리자 위쪽 트리에서 서버 관리자 자체를 클릭한 후 가운데 부분에 IE ESC 구성 클릭 (Enhanced Securty Configuration ) -> 사용 안함으로 변경


IE로 ftp 서버에 접속해본다.

ftp://localhost 입력



[ FTP 기본 명령어 ]

  • open 서버주소 : 해당 서버 주소로 접속
  • user : ID / 비밀번호가 틀렸을 경우, 재입력
  • ls : 서버 내에 존재하는 파일 목록 보기
  • cd : 서버 상에서 경로 이동
  • lcd : 내 컴퓨터 상에서 경로 이동
  • bin/binary : 파일 전송 모드를 바이너리 모드로 전환
  • ascii : 파일 전송 모드를 일반 텍스트 모드 (아스키모드) 로 전환
  • prompt : 대화형 모드를 끔. 즉, y/n를 묻지 않음
  • get : 하나의 파일을 다운로드 함
  • mget : 여러 개의 파일을 다운로드 함
  • put : 하나의 파일을 업로드 함
  • mput : 여러 개의 파일을 업로드 함
  • hash : 용량이 클 때, 파일 다운로드 경과를 #으로 표시
  • quit : FTP를 중단
  • !명령어 : 내 컴퓨터 상에서 명령어를 실행 시킴


* 파일 업/다운로드 해보기

  • 다운받을 파일을 ftp 서버 기본 폴더에 위치 시킴 c:\inetpub\ftproot\itbox.txt

  • 클라이언트 측에 ftp 서버에 접속후 해당 파일을 다운받음
  • 접속시에 기본 폴더에 해당 파일이 다운되있음을 확인가능
  • 받은 파일의 이름을 itbox->sracher 로 바꾼후 다시 업로드

  • 최종적으로 ftp 서버는 기존의 파일과 업로드된 파일 두개의 파일이 남게된다.



[ Windows 7에서 FTP 사용 ]

  • WIN7에서 WIN2008 FTP 서버에 접속이 불가능하다. 이유는 방화벽 설정 때문이다.


  • 이를 해결하기 위해서 FTP 서버의 방화벽 설정을 수정한다. 인바운드 정책에 FTP를 추가한다.


  • 설정이 완료되면 WIN7에서도 접속이 가능해 진것을 확인 할 수 있다.


* 기본적으로 FTP 정책이 있지만 이는 먹히지 않는다. 사용자가 직접 추가를 해야 정상적으로 FTP 서버를 운영 가능하다.


FTP 추천 프로그램 FileZilla : 다운

[ Passive 모드 사용 ]



패시브 모드를 사용하기 위해선 임의의 포트를 열어서 사용해야 한다.
WIN2008 에서 FTP 추가 설정 필요
  • IIS 관리자 - 컴퓨터 선택 - FTP 방화벽 지원 더블클릭

  • 이곳에서 임의의 포트를 열 포트 번호와 갯수를 지정 할 수 있다. FTP 사용자의 수를 고려하여 설정한다.
방화벽 지원에 설정을 마무리 하면 방화벽에서도 따로 설정을 해주어야 한다. 5000-5001 포트를 열어 둔다.

  • 방화벽에 새 인바운드 규칙을 추가한다.