Server 운영 환경에서는 Application 배포, 데이터 이동, Backup 파일 관리 등 다양한 상황에서 파일 전송 기능이 필요합니다.
FTP(File Transfer Protocol)는 오래전부터 사용되어 온 대표적인 파일 전송 Protocol입니다.
FTP Server는 Client와 Server 사이에서 파일을 업로드하고 다운로드할 수 있도록 제공하는 서비스입니다.
기본 구조:
FTP Client↓FTP Server↓File Storage
사용자는 FTP Client를 이용하여 FTP Server에 접속하고 파일을 관리할 수 있습니다.
| 구성 요소 | 역할 |
|---|---|
| FTP Client | 파일 요청 및 전송 |
| FTP Server | 파일 저장 및 제공 |
| Control Connection | 명령 전달 |
| Data Connection | 파일 데이터 전송 |
| Port 21 | FTP 기본 연결 Port |
FTP Server 구조를 이해하면 Linux Server 관리, Web Hosting, Application 배포 환경에서 파일 전송 Architecture를 설계할 수 있습니다.
FTP Server란?
FTP Server는 File Transfer Protocol을 기반으로 Client에게 파일 업로드와 다운로드 기능을 제공하는 Server입니다.
통신 구조:
Client↓FTP Protocol↓FTP Server↓Storage
FTP Server는 사용자의 요청을 받아 파일 목록 조회, 업로드, 다운로드 등의 작업을 처리합니다.
주요 활용:
- Web Server 파일 업로드
- Backup 데이터 이동
- 내부 파일 공유
- 대용량 파일 전송
FTP Protocol 동작 방식
FTP는 두 개의 연결을 사용합니다.
구조:
Client↓Control Connection↓FTP ServerClient↓Data Connection↓File Transfer
두 연결을 분리하여 명령과 데이터를 처리합니다.
FTP Control Connection
Control Connection은 명령 전달을 담당합니다.
사용:
- Login
- Password 인증
- Directory 이동
- File 목록 확인
기본 Port:
21
FTP Client는 먼저 Port 21을 통해 Server와 연결합니다.
FTP Data Connection
Data Connection은 실제 파일 데이터를 전달합니다.
사용:
- Upload
- Download
- Directory List 전송
데이터 연결 방식에 따라 Active Mode와 Passive Mode로 나뉩니다.
FTP Active Mode란?
Active Mode는 Server가 Client에게 데이터 연결을 생성하는 방식입니다.
구조:
Client↓Port 21↓FTP ServerFTP Server↓Client Data Port
동작:
- Client가 Control Connection 생성
- Client가 Data Port 전달
- Server가 Client로 데이터 연결
하지만 Firewall 환경에서는 문제가 발생할 수 있습니다.
FTP Passive Mode란?
Passive Mode는 Client가 Server의 Data Port로 연결하는 방식입니다.
구조:
Client↓Port 21↓FTP ServerClient↓Passive Data Port↓FTP Server
장점:
- Firewall 환경 적합
- NAT 환경에서 안정적
- Cloud 환경 사용 증가
현재 대부분의 환경에서는 Passive Mode를 많이 사용합니다.
FTP와 SFTP 차이
FTP와 SFTP는 이름은 비슷하지만 동작 방식이 다릅니다.
| 구분 | FTP | SFTP |
|---|---|---|
| 기반 기술 | FTP Protocol | SSH |
| 보안 | 암호화 없음 | 암호화 지원 |
| 기본 Port | 21 | 22 |
| 인증 | FTP 계정 | SSH 인증 |
| 사용 환경 | 내부 환경 | Production 환경 |
Internet 환경에서는 보안을 위해 SFTP 사용을 권장합니다.
Linux FTP Server 구조
Linux에서는 다양한 FTP Server 프로그램을 사용할 수 있습니다.
대표:
- vsftpd
- ProFTPD
- Pure-FTPd
구조:
Linux Server↓FTP Service↓Storage Directory
vsftpd란?
vsftpd는 Linux 환경에서 많이 사용하는 FTP Server입니다.
vsftpd:
Very Secure FTP Daemon
특징:
- 높은 보안성
- 빠른 성능
- 간단한 설정
- Linux 기본 지원
Linux FTP Server 설치
Ubuntu 예:
sudo apt install vsftpd
서비스 시작:
systemctl start vsftpd
상태 확인:
systemctl status vsftpd
FTP Server 주요 설정
설정 파일:
/etc/vsftpd.conf
주요 설정:
Anonymous Access 제한
익명 접근을 제한합니다.
anonymous_enable=NO
보안을 강화할 수 있습니다.
Local User Login
Linux 사용자의 FTP 접속 허용:
local_enable=YES
Write Permission
파일 업로드 허용:
write_enable=YES
FTP Server Port 구조
FTP는 기본적으로 Port 21을 사용합니다.
구조:
FTP Client↓TCP 21↓FTP Server
Passive Mode에서는 추가 Data Port 범위가 필요합니다.
FTP Server 장애 분석 방법
FTP 접속 문제가 발생하면 단계적으로 확인합니다.
분석 순서:
Client 접속 실패↓Network 확인↓Port 확인↓FTP Service 확인↓Permission 확인↓Directory 확인
FTP Connection 문제 해결
Connection Refused
원인:
- FTP Service 중지
- Port 미오픈
확인:
systemctl status vsftpd
Connection Timeout
원인:
- Firewall 차단
- Passive Port 문제
- Network 장애
확인:
firewall-cmd --list-all
Permission Denied
원인:
- File Permission 문제
- User 권한 부족
확인:
ls-al
FTP Server 보안 설정
FTP는 암호화가 기본 제공되지 않기 때문에 추가 보안 관리가 필요합니다.
권장:
- SFTP 사용 검토
- FTPS 적용
- Anonymous Login 제한
- User 권한 최소화
- Log Monitoring
FTP Server와 Cloud 환경
Cloud 환경에서는 FTP Server보다 Object Storage 사용이 증가하고 있습니다.
구조:
Application↓Cloud Storage↓Data Management
대표:
- AWS S3
- Azure Blob Storage
- Google Cloud Storage
대규모 환경에서는 FTP보다 Cloud Storage Architecture가 적합합니다.
FTP Server 운영 Best Practice
권장:
- Passive Mode 사용
- 사용자별 Directory 제한
- Access Log 관리
- Backup 정책 운영
- 보안 전송 방식 검토
안정적인 파일 전송 환경을 구축할 수 있습니다.
FTP Server 장점
| 장점 | 설명 |
|---|---|
| 호환성 | 다양한 Client 지원 |
| 단순성 | 쉬운 파일 관리 |
| 대용량 지원 | 큰 파일 전송 가능 |
| 운영 경험 | 오랜 사용 역사 |
자주 묻는 질문
FTP와 SFTP는 같은 기술인가요?
아닙니다.
FTP는 File Transfer Protocol이고 SFTP는 SSH 기반 File Transfer Protocol입니다.
FTP Port는 몇 번인가요?
기본 Control Connection은 TCP 21번 Port를 사용합니다.
FTP는 아직 사용되나요?
사용됩니다.
하지만 보안이 중요한 환경에서는 SFTP나 Cloud Storage 방식으로 이동하는 추세입니다.
마무리
FTP Server는 Client와 Server 사이에서 파일을 전달하는 대표적인 File Transfer Architecture입니다.
| 구성 요소 | 역할 |
|---|---|
| FTP Client | 파일 요청 |
| FTP Server | 파일 제공 |
| Port 21 | Control Connection |
| Data Connection | 파일 전송 |
| vsftpd | Linux FTP Server |
FTP Server 구조와 동작 방식을 이해하면 Linux Server 관리, 파일 전송, Application 배포 환경에서 안정적인 운영 Architecture를 구축할 수 있습니다.
함께 보면 좋은 글
- FTP 서버란 무엇인가? 파일을 주고받는 원리 이해하기
- SFTP와 FTP 차이점은 무엇인가? 안전한 파일 전송 방식 비교하기
- SSH란 무엇인가? 원격 Server 관리 기술 이해하기
- Linux Permission denied 오류 해결 방법
- Linux File System 구조 이해하기