본 블로그는 학습용입니다. 명시적 동의 없는 시스템 접근·정보수집은 불법이며 형사·민사 책임이 따릅니다. 실습은 격리된 테스트 환경에서만 허용됩니다. (형법·정보통신망법·정보통신기반보호법 등)
1. 주제
주제: 파일 전송 프로토콜(FTP)의 모든 것 핵심 요약: FTP(File Transfer Protocol)는 네트워크에 연결된 컴퓨터 간에 안전하고 효율적으로 파일을 전송하기 위해 사용되는 표준 통신 규약입니다.
FTP는 웹사이트 개발, 대용량 파일 공유, 시스템 백업 등 다양한 목적으로 사용되는 기본적인 인터넷 프로토콜 중 하나입니다. 이 글에서는 FTP의 핵심 작동 원리부터 시작하여, Active/Passive 두 가지 연결 모드의 차이점, 더 가볍고 단순화된 TFTP와의 비교, 그리고 FTP 사용 시 발생할 수 있는 주요 보안 위협과 그에 대한 대응 방안까지 포괄적으로 다룹니다. 이를 통해 FTP를 올바르게 이해하고 안전하게 활용하는 데 필요한 지식을 얻을 수 있습니다.
2. 정의 및 핵심 원리
2.1. 상세 정의
파일 전송 프로토콜은 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP 프로토콜 스위트에 의해 제공되는 표준 기능입니다. FTP의 가장 큰 특징은 클라이언트와 서버 간에 두 개의 별도 연결을 설정한다는 점입니다. 하나의 연결은 사용자의 명령과 서버의 응답을 주고받는 제어 채널로 사용되고, 다른 하나는 실제 파일 데이터가 오가는 데이터 채널로 사용됩니다. 이중 연결 구조는 제어 정보와 데이터 전송을 분리하여 효율적인 통신을 가능하게 합니다.
2.2. 핵심 원리
FTP의 통신은 인증 과정으로 시작됩니다. 클라이언트는 먼저 USER 명령으로 사용자명을 서버에 전송하고, 이어서 PASS 명령으로 비밀번호를 전송합니다. 서버는 이 정보를 자체 데이터베이스와 대조하여 사용자에게 접근 권한이 있는지 확인합니다. 인증이 성공적으로 완료되면, 파일 목록 조회, 업로드, 다운로드 등의 데이터 전송 작업을 수행할 수 있게 됩니다.

3. 주요 기술 및 구성 요소
제어 채널 (Control Channel): 클라이언트가 서버에 접속하여 명령을 보내고, 서버가 이에 대한 응답을 회신하는 통로입니다. TCP 21번 포트를 사용하며, 연결이 유지되는 동안 세션 정보(사용자 인증, 현재 경로 등)를 관리합니다.
데이터 채널 (Data Channel): 실제 파일이나 디렉터리 목록 등의 데이터가 전송되는 통로입니다. 데이터 전송이 시작될 때마다 새로 생성되고, 전송이 완료되면 닫힙니다. 이 데이터 채널을 연결하는 방식에 따라 Active 모드와 Passive 모드로 나뉩니다.
인증 메커니즘: USER와 PASS 명령어를 통해 사용자의 신원을 확인하는 과정입니다. 익명으로 접속을 허용하는 'Anonymous FTP'의 경우, 정해진 사용자명과 이메일 주소로 제한된 접근 권한을 부여합니다.
4. 유형 및 비교
4.1. 주요 유형
- FTP Active Mode (능동 모드): 클라이언트가 서버의 21번 포트에 접속해 제어 채널을 만든 후, 데이터 전송이 필요할 때 클라이언트가 사용할 데이터 포트 정보를 서버에 알립니다. 그러면 서버가 클라이언트의 해당 포트로 접속하여 데이터 채널을 생성하는 방식입니다. 클라이언트 측에 방화벽이 있을 경우, 서버의 외부 접속이 차단되어 파일 전송이 실패할 수 있습니다.
- FTP Passive Mode (수동 모드): Active 모드의 방화벽 문제를 해결하기 위해 고안되었습니다. 제어 채널 연결 후, 클라이언트가 PASV 명령을 보내면 서버가 사용할 데이터 포트를 클라이언트에게 알려줍니다. 클라이언트는 그 포트로 직접 접속하여 데이터 채널을 생성합니다. 클라이언트에서 서버로 모든 연결을 시작하므로 방화벽 환경에서 더 유리합니다.
- TFTP (Trivial File Transfer Protocol): FTP의 모든 기능이 필요 없을 때 사용하는 매우 간단한 파일 전송 프로토콜입니다. 신뢰성 있는 TCP 대신 비연결성 프로토콜인 UDP(69번 포트)를 사용하고 인증 절차가 없고 파일 전송(송/수신) 기능만 지원합니다. 주로 네트워크 장비의 펌웨어 업데이트나 부팅 과정에 사용됩니다.
4.2. 유형별 비교
FTP Active Mode vs Passive Mode
| 구분 | FTP Active Mode (능동) | FTP Passive Mode (수동) |
| 제어 채널 연결 | 클라이언트 → 서버 (21번 포트) | 클라이언트 → 서버 (21번 포트) |
| 데이터 채널 연결 | 서버 → 클라이언트 (임의의 포트) | 클라이언트 → 서버 (서버가 지정한 임의 포트) |
| 방화벽 환경 | 클라이언트 측 방화벽이 외부 접속을 막으면 전송 실패 가능 | 클라이언트 측 방화벽 환경에서 유리 |
| 기본 설정 | 대부분의 FTP 클라이언트 기본값 | 필요시 클라이언트에서 설정 변경 |
FTP vs TFTP
| 구분 | FTP | TFTP |
| 전송 프로토콜 | TCP (신뢰성, 연결 지향) | UDP (단순성, 비연결성) |
| 포트 번호 | 21 (제어), 20 (데이터 - Active) | 69 |
| 인증 | 사용자명/비밀번호 인증 지원 | 인증 기능 없음 |
| 기능 | 파일 송/수신, 목록 조회, 삭제 등 다양 | 파일 송/수신만 지원 |
| 데이터 표현 | ASCII, 바이너리 등 다양한 방식 지원 | ASCII, 바이너리만 지원 |
| 주요 용도 | 일반적인 파일 전송, 웹 관리 | 네트워크 장비 부팅, 펌웨어 전송 |
5. 보안 위협 및 대책
5.1. 주요 보안 위협
- Bounce Attack: FTP 프로토콜이 PORT 명령을 통해 서버가 다른 호스트에 접속하도록 허용하는 기능을 악용하는 공격입니다. 공격자는 FTP 서버를 중간 경유지로 삼아 다른 시스템을 스캔하거나 공격할 수 있습니다.
- Anonymous FTP 취약점: 익명 FTP 설정이 미흡할 경우, 누구나 서버에 접속해 파일을 업로드하거나 민감한 정보를 다운로드할 수 있습니다. 특히 악성코드를 업로드하여 배포의 거점으로 악용될 위험이 큽니다.
- 접근 제어 미흡: FTP 서버의 접근 제어 정책이 부재하거나 잘못 설정된 경우, 허가되지 않은 사용자가 서버에 접속하여 정보를 유출하거나 시스템 무결성을 훼손할 수 있습니다.
- 데이터 스니핑 (Sniffing): 기본 FTP는 제어 채널(사용자명, 비밀번호)과 데이터 채널의 모든 정보를 암호화하지 않고 평문으로 전송하므로, 네트워크 스니핑을 통해 계정 정보나 파일 내용이 쉽게 유출될 수 있습니다.
5.2. 보안 대책
| 위협 | 보안 대책 |
| Bounce Attack | FTP Passive 모드 사용 권장: 클라이언트가 데이터 채널 연결을 주도하게 하여 서버가 다른 시스템에 접속하는 것을 방지합니다. 방화벽 규칙 강화: 비정상적인 포트로의 접속 시도를 차단합니다 |
| Anonymous FTP 취약점 | Anonymous FTP 비활성화: 불필요한 경우 익명 접속 기능 비활성화하여 인증 사용자만 접근하도록 합니다. 업로드 권한 제한: 익명 사용자의 쓰기/업로드 권한을 제거하고 읽기 전용으로 설정합니다. 정기적인 로그 모니터링: 비정상적인 접근 시도를 탐지하고 대응합니다 |
| 접근 제어 미흡 | IP 기반 접근 제어: 허용된 IP 주소(화이트리스트)에서만 접속할 수 있도록 설정합니다. 강력한 사용자 인증: 추측하기 어려운 비밀번호를 사용하고 가능하다면 2단계 인증을 적용합니다. |
| 데이터 스니핑 | 보안 프로토콜 사용: 평문 통신 대신 FTPS 또는 SFTP를 사용하여 모든 통신을 암호화합니다. |
6. 결론
FTP는 인터넷 초창기부터 사용되어 온 강력하고 필수적인 파일 전송 프로토콜입니다. Active와 Passive 모드의 차이를 이해하고 네트워크 환경에 맞는 방식을 선택하는 것이 중요하며, 단순화된 TFTP는 특정 목적에 유용하게 사용될 수 있습니다. 하지만 FTP는 설계 당시 보안을 크게 고려하지 않았기 때문에, 평문 데이터 전송과 같은 본질적인 취약점을 가지고 있습니다. 따라서 오늘날의 환경에서는 반드시 접근 제어를 강화하고 FTPS나 SFTP와 같은 보안 프로토콜을 사용하여 데이터를 보호하는 것이 필수적입니다.
'해킹&보안 > 웹' 카테고리의 다른 글
| SSTI (0) | 2025.04.29 |
|---|---|
| 웹 해킹 실습 (1) | 2025.01.08 |
| GET / POST로 데이터 전송하기 (실습) (2) | 2024.09.14 |
| 웹 실습 (0) | 2024.08.21 |
| 모의해킹 실습1 [비밀 관리 서버 침투] (0) | 2024.08.10 |