FTP (File Transfer Protocol, 파일 전송 프로토콜)
TCP/IP 네트워크의 컴퓨터 간에 파일을 전송할 때 사용하는 규칙. 파일을 주고 받기 위해서는 FTP 서버와 클라이언트가 필요하다. 클라이언트/서버 방식의 동작 구조를 이루고 있으며 클라이언트는 파일을 요청하고 서버는 요청된 파일을 제공한다. FTP를 사용하면 인터넷이 연결된 곳 어디서든 빠른 파일 전송이 가능해 자체적으로 클라우드를 구현할 수 있다. 그러나 보안에 매우 취약하다는 치명적인 단점이 있어, FTP에 TLS 프로토콜이 적용된 FTPS, 또는 SSH 연결을 사용하는 SFTP를 사용하는 것이 좋다.
*FTP 프로그램: Filezila, 알FTP, FTP Rush
FTP 연결 설정을 위해 2개의 기본 채널이 필요하다.
[제어 채널, ControlChannel]
21번 포트, 클라이언트와 서버 사이의 명령, 제어 등의 송수신 담당
전체 FTP 세션 동안 상시 연결 유지, 명령과 응답 방식으로 동작
예) 사용자 계정, 파일 전송 명령 등
[데이터 채널, DataChannel]
20번 포트, 클라이언트와 서버 사이의 직접적인 파일 송/수신 담당
파일이 전송될 때마다 연결 유지, 전송 완료 후에는 연결 해제
FTP에는 2가지 연결 모드가 있고, 기본적인 동작 방식은 Active Mode다.
Active Mode (능동 모드)
1. 클라이언트(2020 port) → 서버(21 port) 연결 요청 - 제어 채널 형성
2. 클라이언트(2021 port) → 서버(21 port) : 데이터전송을 위한 포트를 열고 서버에 요청
3. 서버는 클라이언트의 요청에 대한 응답 전송
4. 서버(20 port) → 클라이언트(2021 port) : 데이터 채널 형성
5. 클라이언트는 서버의 요청에 대한 응답 전송
*클라이언트 포트는 1024이상의 포트 중에 사용 가능한 임의의 포트로 생성됨. 해당 포트는 필자가 임의로 정한 것.
*클라이언트 PC에 방화벽이 설치되어 외부 접속을 허용하지 않을 경우(20번 포트를 차단하는 경우) 접속은 가능하지만 파일을 받을 수 없는 단점이 있다. 이를 해결하기 위해 수동 모드가 등장함.
Passive Mode (수동 모드)
1. 클라이언트(2020 port) → 서버(21 port) : 제어 채널 형성
2. 클라이언트(2020 port) → 서버(21 port) : Passive 명령 전송, 서버의 데이터 포트 질의
3. 서버는 데이터 채널 형성을 위한 포트를 열고(1024이상) 클라이언트에 알림
4. 클라이언트는 서버가 연 포트로 접속해 데이터채널 연결 요청
5. 서버가 클라이언트의 요청에 대한 응답 전송
*클라이언트가 서버에 접속하는 방식이므로 방화벽 상관없이 파일 송수신 가능. Passive 모드에서는 20번 혹은 1024이상의 포트를 사용함.
Active 모드와 Passive 모드의 차이
Active 모드는 서버 → 클라이언트 접속 후 데이터 채널 형성 (방화벽 문제 발생 가능)
Passive 모드는 클라이언트 → 서버 접속 후 데이터 채널 형성
FTP 보안 취약점
취약점 | 내용 |
FTP Bounce Attack | - 제어 채널과 데이터 채널 생성 시 목적지를 확인하지 않는 FTP의 구조적 취약점을 이용 - 익명 FTP 서버를 경유해 호스트를 스캔 가능 - IP를 변경해 공격자가 원하는 곳으로 데이터를 전송시킴 |
Anonymous FTP | - 익명 계정을 허용했을 때 익명 계정으로 악성코드 업로드 가능 |
스니핑 | - 암호화가 이루어지지 않기 때문에(평문전송 취약점) 패스워드나 전송되는 정보가 탈취당할 수 있음 |
TFTP 취약점 | - 인증절차를 요구하지 않아 공격자가 해당 호스트에 접근해 파일 다운로드 가능 - 상위 디렉터리 접근 방지 설정 필요 (접근제어) |
FTP 서버 취약점 | - 포맷 스트링 및 각종 BOF 공격 가능 |
FTP Active Mode (능동모드) 및 Passive Mode (수동모드) - 네이버블로그
[IT KEYWORD] FTP란? - EasyMedia
'보안 지식' 카테고리의 다른 글
보안 공격 기법, Passive Attack과 Active Attack (0) | 2023.07.11 |
---|---|
정보보안의 3요소(CIA): 기밀성, 무결성, 가용성 (0) | 2023.07.10 |
SQL Injection 기본 지식 (0) | 2021.08.12 |
CTF 사이트 모음 (0) | 2021.07.24 |
인코딩/디코딩, 해시 복호화, 코드정리, 컴파일러 사이트 모음 (0) | 2021.07.16 |