FTP 접속모드 에서 active mode와 passive mode의 차이점

Network 동향 2008. 11. 2. 17:37
출처 슈벨리아 http://www.subellia.com | 슈벨리아
원문 http://blog.naver.com/subellia1/100008188497
출처: 한국 FTP 사용자 모임 (http://www.kfug.net)

ISP가 KT의 경우는 기본포트 사용에 제약이 없으므로 웹서버와 FTP서버를 사용할수 있으며, 임의의 포트(CODNS사용시 9000번)도 사용이 가능합니다.
두루넷, 하나로등 케이블 모뎀방식의 경우는 임의의 포트(Codns의 9000번)로 포트포워딩을 사용해서 WEB서버로는 사용 가능하지만, FTP서버에서는 기본포트, 포트포워딩을 하실 수 없습니다.
임의의 포트로 FTP를 사용하시기 위해서는 DNS가 아닌 IP로 입력을 하셔야 합니다.

IIS 를 사용하는 경우 빈번하게 발생하는 문제는 포트를 표준 포트인 21번 포트를 사용하지 않았을때 발생합니다.
FTP 의 경우는 21번 포트가 표준이나 사용하시는 인터넷 서비스에따라 포트가 막혀 서비스가 되지 않는 경우가 있습니다. 이때에는 어쩔수 없이 임의의 포트를 사용하게 되는데 이경우 FTP 서비스에 문제가 있다고 합니다. 외부에서는 접근 가능하며 서비스 가능하지만 IP 공유기에 연결된 내부 컴퓨터로는 도메인이나 공인 IP 로 접속이 안되는 문제가 발생합니다.
IIS에서의 셋팅시 ,공인 IP 가 아닌, 서버의 내부 주소로 설정되어 있어야 합니다
단순히 포트포워딩만으로는 해결되지 않습니다.
둘넷에서는 8080번까지 막혀 있을껍니다.. 9xxx 대역의 포트를 포워딩 하십시요. 내부 포트로 말입니다.
그리고 (설정뒤 포트가 막혀있는지 확인은 필수!)
패시브를 위한 포트까지 추가적으로 2개정도 생성하시고
PASV port 에다가 패시브를 위한 2개포트를 입력합니다.
그리고 다음의 Allow passive mode data transfers, use IP
란에다가 동적으로 할당받은 리얼아이피(IP 공유기의 상태란에
나오는 211.x.x.x나 61.x.x.x등등등의 주소를 확인하여 입력해 줍니다). <- 이것을 대부분 안하여 접속까지는 잘 되나 폴더 리스트가 뜨질 않고 바로 끊기곤 하지요.
IP 공유기에 연결된 내부의 다른 컴에서 ftp 서버 접속이 가능하면 ftp 내부 설정은 제대로 되어 있는데 서브유론 안되고 알ftp론 접속된다면 외부에서 해당 포트를 제한한 것은 아니기 때문에 pasv를 설정해서 접속이 되는지는 확인해 주십시오.
각 ftp 클라이언트 프로그램은 pasv 설정 유무에 따라서 ftp 서버 접속이 안 될 수도 있습니다.
그리고 접속하실때 passive모드를 사용하신것 같네여. passive 모드를 끄십시오
FTP연결에는 크게 두가지가 있습니다.
- Active Mode
- Passive Mode
말그대로 연결요청을 누가 할것인가 인데요.
간단히 말해서 인터넷상에서 다른 누군가와 연결을 할때
필요한것이 자신과 상대방의 IP와 포트번호인데 , 그럼
두쌍의 아이피와 포트번호가 필요하겠지요?
흔히 말하는 프로그램에서 소켓이라고 표현하죠...
그런데 자신이 공인아이피를 쓰면서 상대방의 FTP에 접속을 시도할때
연결을 열어달라고 요청을 해야 합니다.
이때 자신의 아이피와 포트번호를 상대방에게 알리는데(Active Mode)
만일 자신이 사설아이피라면 상대서버는 당연히 제컴을 찾지 못해
연결에 실패할겁니다.
그래서 연결요청을 서버쪽에서 하도록 한것이 패시브모드입니다.
그러면 서버쪽에서 자신의 아이피와 포트번호로 요청을 하게 되는데
아래 192.x.x.x 1,12 같은 경우지여..매 접속요청마다 포트번호는
랜덤하게 바뀌게 되어 있습니다.
Serv-U 같은 경우는 일정 범위를 지정할 수 있더군여 ...
그래서 대개 공유기를 쓰면 FTP클라이언트 프로그램에서 패시브모드를
체크해야 연결이 수월하게 되는 경우가 많습니다.
근데 이것이 서버쪽에서도 지원을 해야하는데 그렇지 않으곳은
연결이 안되더군여..제가 잘가는 FTP서버도 그중 하나인데
이곳에 연결할때는 어쩔수 없이 공유기를 떼고 한답니다.

표준 포트가 아닌 다른 포트로 설정하신 경우엔 외부의 클라이언트 컴퓨터들이 passive 모드로 설정되어 있어야 하며 passive 모드 설정은 다음과 같습니다.

. AL_FTP : 사이트 맵 - 사이트 선택 - 사이트 정보 - 고급 - passive 설정

. cute FTP : edit - setting - connection - firewall - pasv mode

. leap FTP : Options - preferences - General - proxy - use pasv mode

. WS_FTP : connect - connection - passive mode

양쪽의 컴퓨터들 중 한쪽에서만 IP가 공유된 환경이라면 FTP 클라이언트 프로그램의 PASV 모드를 설정하시어 접속 할 수 있습니다.
이는 양쪽의 방화벽에 의해 서버의 패킷전달이 원할치 않기 때문에 발생하는 장애로 이해하셔야 할 것 같습니다.

FTP 서버에서 표준포트(21)가 아닌 다른 포트를 이용할때 클라이언트 컴퓨터들이 접속하기 위해선 각 클라이언트 프로그램에서의 패시브 모드(passive mode)로 설정해 주어야만 접속하실 수 있습니다.

아래의 점검 사항이 필요 합니다.

1)어드미니스트레이터로 로그인을 하시기 바랍니다.
2)접속할 ftp주소뒤에 " :21 " 추가 하여 주시기 바랍니다.,아이디,패스워드.패시브모드 체크를 합니다.
3) win 2000에서 방화벽 해제가 되어 있으면 해제를 하시기 바랍니다.
다음의 사항을 점검 하시기 바랍니다.
윈도우 2000서버로 를 운용 하시기 전에 다음과 같은 사항을 점검 하셔야 합니다..
1)게스트 허가 설정 확인(바탕화면 - 내컴퓨터 더블클릭 - 관리도구 더블클릭 - 컴퓨터 관리 더블클릭 - 로컬사용자 및 그룹 - 사용자 - Guest 더블클릭 - 계정사용 안함 의 V 표시 제거 - 확인
내 네트워크 환경의 마우스 우측버튼 > 속성 > 로컬영영 연결 더블클릭 > 속성 > 고급 > 인터넷 연결
방화벽에 V 체크가 되어 있다면, 해제 하셔야 합니다. )

2) 시작 -> 관리 도구 -> 인터넷 정보 서비스 -> 기본 웹 사이트 -> 등록 정보 -> 디렉터리 보안 탭 -> 익명 엑세스에 체크 표시

3)IIS 에서 암호를 제한 할수 있음 체크표시 없음

4)IIS의 인증방법 중 익명 엑세스 및 인증 컨트럴이 '익명 엑세스 허용' 으로 되어 있다면 클라이언트에서 서버로의 접속시, 별도의 인증없이 접속되는것이 일반적인데 , 만일 위와 같이 설정하셨음에도 클라이언트 접속에서 인증암호를 요구한다면 '익명 엑세스 허용' 항목의 '편집' 버튼을 눌러 별도로 설정된 내용이 있는지를 확인해 보시고, 잘 이해가 안되신다면 기본값으로 설정해 보십시오.

5)외부 DNS 설정에서는 서버에서 운용되는 실제 공인 IP 주소를 넣어주시면 됩니다.
내부 서버프로그램인 IIS 에서는 서버의 내부 IP 주소인 192.168.1.X 으로 셋팅을 해 주시면 됩니다.
=============================================================================
홍석범님이 sec-info@cert.certcc.or.kr 통해 쓴 글을 수정없이 그대로 옮깁니다.

-----------------------------------------------------------------------------
Re: [질문] TCP/IP 필터링 기능에서 FTP 관련포트
날짜: Wed, 4 Sep 2002 12:56:55 +0900
보낸이: "Sukbum Hong"
받는이:

안녕하십니까?

오늘과내일의 홍석범입니다.

ftp 에는 active / passive 이렇게 두 가지 모드가 존재하며
또한 각각의 모드에서는 command 또는 control 포트와
data 포트라는 두 개의 포트를 함께 사용합니다.

active 모드에서는 command 포트로서 21번을,
              data 포트로서 20번을 사용하며
passive 모드에서는 command 포트로서 21번을,
              data 포트로 1024 이후의 임의의 비특권포트를 사용합니다.

따라서 active 모드로의 ftp 를 허용하려면 21번 외에 data 포트인
20번도 함께 허용하여야 하며 만약 data 포트인 20번을 허용하지 않을 경우에는
말씀하신 바와 같은 현상이 발생하게 됩니다.
또한 20번을 추가로 허용하였다 하더라도 클라이언트쪽에서 passive 모드로
ftp 를 접속할 경우 역시 data 포트가 열려있지 않으므로 같은 현상이
나타나게 될 것입니다. 

추가적으로 주의할 점은 active 모드의 작동 방식입니다.
두개의 포트를 사용한다는 예외상황 외에도 아래와 같이
active 모드에서는 두번째 포트가 작동할 때 일반적인
tcp/ip 3 way handshake 방식이 아닌 다른 예외방식으로 작동하게 된다는 것입니다.
각기 모드의 작동 방식을 그림으로 보시면 이해하기가 쉬우실 것입니다.


* ( ) 안의 숫자는 작동하는 포트를 뜻합니다.
* 화살표 방향은 패킷의 이동방향을 뜻합니다.

## Active FTP

Client(1025)   --->      Server (21)
Client(1025)   <---      Server (21)
Client(1026)   <---      Server (20)
Client(1026)   --->      Server (20)


## Passive FTP

Client(1025)   --->      Server (21)
Client(1025)   <---      Server (21)
Client(1026)   --->      Server (1028)
Client(1026)   <---      Server (1028)


참고하시기 바랍니다.


감사합니다.

 ----- Original Message -----
 From: webmaster
 To: sec-info@cert.certcc.or.kr
 Sent: Tuesday, September 03, 2002 11:57 AM
 Subject: [질문] TCP/IP 필터링 기능에서 FTP 관련포트


 windows 2000 server sp2 에서 웹서버, FTP서버, 메일서버,
 네임서버를 함께 사용중입니다.
 TCP/IP 필터링 기능을 이용해서 최소한의 포트만 허용하고자
 다음과 같이 설정했습니다.

 TCP포트       UDP포트       IP포트
 --------------------------------------
 21 허용        모두허용       6 허용
 25 허용
 53 허용
 80 허용
 110 허용
 --------------------------------------

 다른 서비스는 이상이 없는데, FTP에 문제가 있습니다.
 FTP로 접속은 잘 되는데, 아래와 같이 에러가 나고,
 파일 리스트가 안됩니다. 디렉토리 체인지, 디렉토리 만들기 등도 안됩니다.

 --------------- Cuted FTP에서의 로그 ---
 COMMAND:> LIST
 STATUS:> Connecting data socket...
 ERROR:> Failed to establish data socket
  425 Can't open data connection.
 ERROR:> File error
 ---------------------------------------

 해서... TCP포트를 "모두허용"으로 했더니만 에러없이 잘 됩니다.
 21번 포트만 허용하면 FTP 돌리는데 문제가 없을 줄 알았는데
 또 추가해야할 포트가 있는 건가요?
===============================================================================
출처: http://www.systemcj.net
 
 
ftp protocol의 경우 하나가 아닌 두개의 세션연결을 사용하며  
하나는 명령어를 전송하기위해, 다른 하나는 데이터 전송에 사용됩니다.  
또한 client에서의 설정에 따라 active / passive의 두가지 mode가 있습니다.  

* active mode (기본모드)  
client : random port ----> server : 21 [commend]  
client : random port <---- server : 20 [data]  

* passive mode  
client : random port ----> server : 21 [commend]  
client : random port ----> server : random port [data]  

여기서 두개의 세션사이에 방화벽이 존재하므로  
client에서 모드의 사용에 따라서 방화벽의 설정도 달리해야 합니다.  

일반적인 경우 사용하는 것이 active mode인데  
나가는 정책과 들어오는 정책 두가지의 설정이 필요합니다.  
다만.. 내부망이 사설IP를 사용하는 경우는 사용이 안됩니다.  
이 경우 수호신 Firewall에서는 ftp-proxy라는 서비스를 만들어 지원하지만  
ftp, ftp-data 이름으로된 정책과 혼용은 안됩니다.  


현재 사이트의 경우 ftp와 ftp-proxy가 혼용되어 정책설정이 되어  
문제가 발생한것으로 생각이 듭니다.  

그리고.. ftp-proxy는 방화벽이 대신 접속을 해주는것이므로  
더 빠른것처럼 보일 수는 있습니다.  
그러나 실제로는 중간 시스템을 중계하므로  
ftp, ftp-data를 사용하는것보다 빠르지 않습니다.  

다만.. 방화벽에 먼저 접속한 모습을 보여주므로  


먼저.. 방화벽에 설정된 ftp-proxy 정책을 모두 제거한 후  
다음의 정책만 적용하여 보시기 바랍니다.  

내부망 ----> DMZ서버 : ftp : 허용  
DMZ서버 ----> 내부망 : ftp-data : 허용  

Posted by 불량소금
,