FTP 패시브(Passive) 모드

FTP의 패시브(Passive) 모드는 클라이언트가 방화벽이나 NAT(Network Address Translation) 뒤에 있을 때 데이터 전송 문제를 해결하기 위해 사용됩니다. 기본적으로, FTP는 액티브(Active) 모드패시브(Passive) 모드 두 가지 방식으로 작동합니다.

1. 패시브(Passive) 모드 개요

  • 클라이언트가 서버에게 데이터 전송을 위한 포트를 열도록 요청함.
  • 서버가 사용할 포트를 클라이언트에게 알려주면, 클라이언트가 해당 포트로 연결.
  • 서버가 클라이언트로의 연결을 시도하는 것이 아니라, 클라이언트가 서버로의 연결을 주도하기 때문에 방화벽이 있는 환경에서 더 원활하게 작동.

2. 패시브 모드 활성화 방법

FTP 클라이언트와 서버 설정에서 패시브 모드를 활성화해야 합니다.

(1) FTP 클라이언트에서 패시브 모드 활성화

  • Linux FTP 명령어 사용 시
    • ftp> passive Passive mode: on
  • lftp 사용 시
    • lftp -e "set ftp:passive-mode on; open <FTP_SERVER>"
  • Windows FTP 클라이언트 (FileZilla, WinSCP 등)
    • FileZilla: 편집(Edit) -> 설정(Settings) -> 연결(Connection) -> FTP -> 패시브(Passive) 모드 선택

(2) FTP 서버에서 패시브 모드 활성화

  • vsftpd (Very Secure FTP Daemon)
    • vsftpd.conf 설정 파일 수정:
      • pasv_enable=YES
        pasv_min_port=50000
        pasv_max_port=51000
        pasv_address=<서버의 공인 IP 또는 내부 IP>
      • 설정 후 vsftpd 서비스 재시작:
        • systemctl restart vsftpd
  • ProFTPD proftpd.conf 파일 수정:
    • PassivePorts 50000 51000
    • 적용 후 재시작:
      • systemctl restart proftpd
  • Pure-FTPd
    • pure-ftpd -p 50000:51000

3. 방화벽 설정

FTP 패시브 모드에서는 클라이언트가 랜덤한 포트(예: 50000-51000)로 접속하므로 해당 포트를 방화벽에서 열어야 합니다.

(1) iptables 사용 시

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 50000:51000 -j ACCEPT
service iptables save

(2) firewalld 사용 시 (RHEL/CentOS 7 이상)

firewall-cmd --add-service=ftp --permanent
firewall-cmd --add-port=50000-51000/tcp --permanent
firewall-cmd --reload

4. 확인 방법

  1. FTP 서버에서 로그 확인 (/var/log/vsftpd.log 또는 /var/log/xferlog)
  2. 클라이언트에서 패시브 모드로 접속 및 파일 업로드/다운로드 테스트:
    • ftp <FTP_SERVER>
      ftp> passive
      ftp> ls
      ftp> get testfile.txt
      ftp> put testfile.txt
  3. netstat 또는 ss 명령어로 포트 확인:
    • netstat -tulnp | grep ftp

이제 패시브 모드에서 FTP가 정상적으로 작동할 것입니다.

Leave a Comment