Networking, Security, Protocols

FTP란? FTP Server란?

Somaz 2022. 1. 18. 14:30
728x90
반응형

Overview

FTP(File Transfer Protocol)는 클라이언트와 서버 간 파일 전송을 위한 표준 네트워크 프로토콜이다.


인터넷에서 사용된 가장 오래된 프로토콜 중 하나이며, 대용량 파일 전송 및 서버 간 데이터 공유를 위해 여전히 널리 사용된다.

이 글에서는 FTP의 개념, FTP 서버 설정 방법, 보안 설정 및 실습 방법에 대해 다룬다.

 

 

 


 

 


 

FTP란?

FTP(파일 전송 프로토콜)는 TCP/IP 네트워크를 통해 파일을 업로드 및 다운로드할 수 있도록 해주는 프로토콜이다.
보안이 강화된 SFTP(Secure FTP) 또는 FTPS(FTP Secure)가 사용되기도 하지만, FTP는 여전히 많은 환경에서 활용되고 있다.

 

 

💡 FTP의 특징

  • 클라이언트-서버 모델을 기반으로 동작
  • 명령(제어) 채널과 데이터 채널을 분리하여 사용 (포트 21, 20)
  • 익명(Anonymous) FTP 및 인증 기반 FTP 지원
  • 액티브 모드(Active)와 패시브 모드(Passive) 지원

 

FTP 포트

포트 설명
21 FTP 제어(Control) 채널
20 FTP 데이터 전송 채널 (Active Mode)
1024~65535 Passive Mode 데이터 채널 (랜덤)

 

 

 

 


 

 

 

 

FTP Server 설정 (vsftpd)

Linux에서 가장 널리 사용되는 FTP 서버 소프트웨어는 vsftpd (Very Secure FTP Daemon)이다.

 

💡 vsftpd의 특징

  • 보안성이 뛰어난 FTP 서버
  • chroot 환경 지원 (사용자의 홈 디렉터리 제한)
  • 익명(Anonymous) FTP 접속 가능 여부 설정 가능
  • Passive Mode 지원

 

 

 

vsftpd 설치 및 방화벽 설정

 

1️⃣ 패키지 설치

yum -y install vsftpd # CentOS/RHEL 
apt install vsftpd -y # Ubuntu/Debian
 
 

2️⃣ 서비스 활성화

systemctl enable vsftpd 
systemctl start vsftpd

 

 

3️⃣ 방화벽 설정

firewall-cmd --permanent --add-port=21/tcp  # FTP 기본 포트
firewall-cmd --permanent --add-service=ftp  # FTP 서비스 추가
firewall-cmd --reload  # 방화벽 설정 적용
 
 
 

방화벽 설정 확인

firewall-cmd --list-all

 

 

 

 

FTP 환경설정 (vsftpd.conf)

FTP 서버의 주요 설정 파일은 `/etc/vsftpd/vsftpd.conf` 이다.
설정을 변경하려면 이 파일을 수정해야 한다.

vi /etc/vsftpd/vsftpd.conf
 
 

1️⃣ 익명(Anonymous) 접속 비활성화

anonymous_enable=NO # 익명 사용자 접속 차단
 
 

2️⃣ 로컬 사용자 로그인 허용

local_enable=YES # 로컬 사용자 계정 접속 허용
 
 

3️⃣ 쓰기(업로드) 허용

write_enable=YES # 파일 업로드 허용
 
 

4️⃣ 사용자의 홈 디렉터리 제한 (chroot)

chroot_local_user=YES # 사용자가 자신의 홈 디렉터리만 접근 가능
 

 

 

특정 사용자만 chroot 제한을 해제하려면

chroot_list_enable=YES  # 특정 사용자만 제한 해제
chroot_list_file=/etc/vsftpd/chroot_list  # 예외 사용자 리스트 파일

 

 

 

📌 예외 사용자 설정

echo "username" >> /etc/vsftpd/chroot_list

 

 

 

 


 

 

 

FTP 사용자 추가 및 권한 설정

 

1️⃣ FTP 전용 사용자 생성

useradd -m ftpuser -s /sbin/nologin  # FTP 전용 계정 (SSH 로그인 차단)
passwd ftpuser  # 비밀번호 설정
 

2️⃣ FTP 디렉터리 및 권한 설정

mkdir -p /home/ftpuser/ftp  # FTP 디렉터리 생성
chown -R ftpuser:ftpuser /home/ftpuser/ftp  # 소유권 변경
chmod 750 /home/ftpuser/ftp  # 디렉터리 권한 설정

 

 

파일 업로드를 허용하려면

mkdir /home/ftpuser/ftp/upload
chmod 770 /home/ftpuser/ftp/upload

 

 

 


 

 

 

FTP 접속 테스트

FTP 클라이언트를 사용하여 FTP 서버에 접속할 수 있다.

 

1️⃣ Linux에서 FTP 접속

ftp 192.168.1.100
  • 사용자명과 비밀번호 입력 후 접속
  • `ls` → 파일 목록 확인
  • `put test.txt` → 파일 업로드
  • `get test.txt` → 파일 다운로드

 

2️⃣ Windows에서 FTP 접속

  • Windows 파일 탐색기에서 `ftp://192.168.1.100` 입력 후 접속

 

 

 

FTP 보안 강화

FTP는 기본적으로 평문(Plaintext)으로 인증 정보를 전송하기 때문에 보안 설정이 필요하다.

 

1️⃣ FTPS (SSL/TLS) 활성화

ssl_enable=YES  # FTPS 활성화
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem  # SSL 인증서 경로
rsa_private_key_file=/etc/pki/tls/private/vsftpd.pem  # 개인 키 경로
 
 

📌 SSL 인증서 생성

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/vsftpd.pem -out /etc/pki/tls/certs/vsftpd.pem
 

2️⃣ FTP 패시브 모드 설정 (방화벽 문제 해결)

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
 
 
 

방화벽에서 패시브 포트 열기

firewall-cmd --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

 

 

 


 

 

 

마무리

FTP는 클라이언트와 서버 간 파일 전송을 위한 오래된 프로토콜이지만, 여전히 널리 사용된다.
vsftpd를 통해 FTP 서버를 설정하고, 보안을 강화하며, 패시브 모드를 구성하면 보다 안정적인 환경을 구축할 수 있다.

 

 

💡 정리

  • FTP는 TCP 21번 포트를 사용하며, 데이터 전송을 위한 포트도 필요
  • vsftpd를 사용하면 보안성이 높은 FTP 서버를 구축 가능
  • 기본적으로 로컬 사용자만 로그인 가능하도록 설정하는 것이 안전함
  • FTPS(SSL/TLS) 설정을 통해 보안을 강화할 수 있음

 

이제 FTP 서버를 설정하고, 실습을 통해 익혀보자!

 

 

 

 


 

 

 

Reference

 

 

 

 

 

728x90
반응형

'Networking, Security, Protocols' 카테고리의 다른 글

RSA 공개키를 이용한 SSH 접속  (0) 2022.01.20
DNS(Domain Name System)  (0) 2022.01.19
NFS(Network File System) / auto fs(auto file system)  (0) 2022.01.18
SCP(Secure Copy)  (0) 2022.01.17
SSH(Secure Shell)  (0) 2022.01.17