본문으로 바로가기

FTP (File Transfer Protocol)

category IT/Network 2022. 11. 22. 04:29

FTP 개요

파일을 송수신하기 위한 프로토콜 대용량 파일 전송에 적합

Port : TCP / Control 21, Data 20 (Active mode)

 

Active 모드 : 

    Data 전송 시 Server(port : 20)에서 Client(port: random)으로 접속한다

    Client의 포트가 random이기 때문에 방화벽 설정이 힘들다. 그래서 응용프로그램으로 허용

Passive 모드 :

    Data 전송 시 Client(port: random)에서 Server(port: 지정)으로 접속한다

    Server의 포트를 고정하여 사용할 수 있으므로 방화벽 설정 용이

 

전송 과정

1. 접속 및 인증 : Active, Passive 동일

Client(port : random) 가 Server(port : 21)에 연결 -> 배너 출력 및 사용자 인증

    평문형 FTP의 경우 ID, Password 노출됨

FTP - USER 노출
FTP - PASS 노출

 

2-1. 데이터 전송 (Active mode)

Client가 Server에 자신이 사용할 아이피 및 포트 전달

port = request arg[-2] * 256 + request arg[-1]

Active - Request PORT

Server(port : 20) 가 Client(port: random) 에 연결

Passive - 3 way handshake

데이터 전송

Active - Data

 

2-2 데이터 전송 (Passive mode)

Client가 Server에 Passive mode 요청

Passive - Request PASV

Server가 Client에 사용할 아이피 및 포트정보 응답

Passive - Response IP, Port

Client(port: random)가 Server(port : 지정)에 연결 - 여기서는 65000~65100사용

Passive - 3 way handshake

데이터 전송

Passive - Data

 

VMware NAT 환경에서의 문제

VMware NAT 환경에서는 설정을 분명 잘 했는데 FileZilla에서 로그인 까지만 되고, 파일 목록이 안나오고 다운로드가 안될텐데 VMware NAT 에서 FTP 패킷내의 패시브 포트 정보를 바꾸기 때문이다

VMware NAT - IP 및 포트 변경

Host 의 방화벽은 21, 60000~60010만 허용되어 있기 때문에 dst_port 51599의 패킷은 막혀 버린다.

 

해결 방법 1

VMware에서 포트를 랜덤으로 바꾸니 Host PC의 방화벽을 꺼버리면 된다. (실습시만 사용, 비추천)

방화벽 끄기

방화벽을 끈 후 접속 확인

접속 확인

 

해결 방법 2

Vmware의 NAT 가 문제이므로 NAT를 다른걸 쓴다.

FTP guest의 NIC를 hostonly로 바꾸고, Centos7 guest를 hostonly, bridge로 설정하고

Centos7에 iptables 마스커레이딩 설정하여 NAT 방화벽으로 사용한다.

 

포트 정보를 확인해보면 정상적으로 보이는데,

전과 같이 파일목록 조회 및 다운로드가 안된다. 하지만 처음과는 원인이 다르다.

정상적인 IP, Port

 

패킷 내 Passive IP address가 내부망인 10.0.1.2로 되어 있어 파일질라를 사용하는 외부 서버가 찾아 올 수 없기 때문이다.

10.0.1.12 를 찾을 수 있도록 라우팅 추가

라우팅 추가

접속 확인

포트번호 정상 확인

 

이렇게 해결해도 문제는 있다.

만약 Client 쪽에서 이미 10.0.1.0 대역을 사용중이라면 static 라우팅 설정 시 기존 10.0.1.0 대역과의 통신에 문제가 생긴다.

 

 

NAT 환경인데 윈도우 내장 FTP는 정상 동작하는 이유

위 실습 시 파일질라에서는 조회, 다운로드가 불가능한데 윈도우 내장 FTP는 정상으로 보인다.

cmd로 접속 시 200 PORT command successful. Consider using PASV 가 나오지만 사실

내장 FTP 프로그램은 Active 모드로 동작하고, 이전 실습때 방화벽에서 ftp.exe를 허용 해놨기 때문이다.

 

내장 FTP 프로그램 사용 시

Client에서 Server로 Request, 3 way handshake 를 먼저 보냄을 확인 할 수 있다.

 

quote pasv 명령어로 passive 모드로 설정할 수 있다는데 request만 나가고 계속 active로 동작 한다.

'IT > Network' 카테고리의 다른 글

Cisco 장비 기본 설정 (Packet Tracer)  (0) 2022.12.02
DNS (Domain Name System)  (0) 2022.11.22
DHCP (Dynamic Host Configuration Protocol)  (0) 2022.11.15