1. Active Mode
(1) 연결 진행 절차
- 1단계 : 클라이언트에서 서버의 TCP/21번 포트로 접속 시도 및 클라이언트가 사용할 두번째
포트를 서버에게 알려준다. (연결방향 : 클라이언트 → 서버)
- 2단계 : 서버는 TCP/20번 포트로 클라이언트가 알려준 두 번째 포트로 접속한다.
(2) 특징 : 서버가 클라이언트로 접속
- [제어연결] : 클라이언트 첫 번재 포트 → 서버(TCP/21)
- [데이터 연결] : 서버(TCP/20) → 클라이언트 지정한 두 번째 포트 (TCP/1024 이후)
[그림출처 : SIS 출제가이드라인]
- PORT 명령 사용 : [FTP Bounce Attack], [포트 스캐닝 공격]에 이용될 수 있다.
- 데이터 연결이 서버에서 클라이언트로 이루어지며 따라서 클라이언트에 방화벽,
[NAT] 설치시 정상적인 서비스가 이루어지지 않는다.
(3) 정상 서비스를 위한 방화벽 설정
클라이언트 (1024 이후) → FTP Server (TCP/21)번을 Open 해야 한다.
FTP Server → 클라이언트 : 서버 TCP/20, 클라이언트 TCP 1024번을 Open 해야 한다.
또는 모든 패킷을 검사하여 상태를 메모리에 저장하는 [Stateful Inspection] 방식의
방화벽을 사용하는 것도 가능하다.
2. Passive Mode
(1) 연결 진행 절차
- 1단계 : 클라이언트는 서버의 TCP/21번 포트로 접속 후 두 번째 포트를 질의한다.
- 2단계 : 서버는 클라이언트에게 데이터 연결을 위한 두 번째 포트(TCP/1024 이후)를
알려준다.
- 3단계 : 클라이언트는 서버가 알려준 두 번째 포트로 접속
(2) 특징 : 클라이언트에서 서버로 접속
- 서버에서 클라이언트로 접속하는 모순을 해결하기 위한 연결 방법
- 제어연결 : 클라이언트 첫 번째 포트 → 서버(TCP/21)
- 데이터 연결 : 클라이언트 두 번째 포트 → 서버(TCP/1024번 이후 포트)
- 데이터 연결이 클라이언트에서 서버로 이루어지며 따라서 서버에 방화벽, NAT 설치시
정상적인 서비스가 이루어지지 않는다.
- 서버는 데이터 연결을 위해 1024~65,535 포트를 오픈해야 한다.
- PASV 명령 : Data Hijacking 에 이용될 수 있다.
(3) 정상 서비스를 위한 방화벽 설정
클라이언트 (1024 이후) → FTP Server (TCP/21)번을 Open 해야 한다.
FTP Server ← 클라이언트 : 클라이언트와 서버 모두 TCP/1024 이후를 Open 해야 한다.
또는 모든 패킷을 검사하여 상태를 메모리에 저장하는 [Stateful Inspection] 방식의
방화벽을 사용하는 것도 가능하다.
[출처] [중요] FTP Active 모드와 Passive 모드|작성자 어리버리
'Programming > Network' 카테고리의 다른 글
nbtstat command (0) | 2016.06.27 |
---|---|
How to remote control windows firewall via CLI (0) | 2016.03.25 |
DNS(도메인 네임 서버) 초기화 하는 방법 (0) | 2015.02.28 |
레지스트리의 MaxUserPort 수정 (0) | 2015.02.07 |
Dead Reckoning (0) | 2015.02.07 |