728x90

 

1. FTP(File Transfer Protocol)이란?

FTP는 클라이언트와 서버간에 파일을 전송하기 위한 TCP/IP 기반의 표준 통신 프로토콜입니다.

FTP는 1970년대에 처음 설계되었고, 현재도 파일 전송 용도로 널리 사용되고 있습니다.

 

 

2. FTP의 주요 목적

  • 파일 업로드 : 클라이언트에서 서버로 파일 전송
  • 파일 다운로드 : 서버에서 클라이언트로 파일 전송
  • 파일 관리 : 디;렉터리 생성, 삭제 파일이름변경 등

 

3. FTP의 동작 방식

FTP는 클라이언트-서버 구조로 동작합니다.

  • 연결 구성
    • 클라이언트가 서버에 접속하려면 서버의 IP주소와 포트번호(기본 21번)가 필요합니다.
    • 사용자는 일반적으로 아이디/비밀번호로 로그인합니다.(익명 로그인도 가능)
  • 2개의 연결을 사용
    • FTP는 2개의 별도 연결을 사용합니다.
      • 제어 연결(Control Connection) : 명령어와 응답을 주고받는 용도(기본 21번 포트)
      • 데이터 연결(Data Connection) : 실제 파일을 전송하는 용도
  • 모드
모드 설명
Active Mode 클라이언트가 제어 연결을 열고, 서버가 데이터 연결을 역방향으로 한다.
Passive Mode 클라이언트가 제어 및 데이터 연결을 모두 연다(방화벽 우회 가능)

 

4. FTP의 장단점

  • 장점
    • 오랜 역사를 가진 안정적인 프로토콜
    • 대용량 파일 전송에 적합
    • 다양한 운영체제 지원
  • 단점
    • 보안이 약함
    • 아이디/비밀번호도 평문으로 전송됨
    • 보안을 위하여 FTPS, SFTP 사용이 권장됨

 

 

5. FTP 프로토콜

  • SFTP
    • SFTP는 이름에 FTP가 들어가지만 FTP와는 전혀 다른 프로토콜임
    • SSH 상에서 동작하며, 기본포트는 22번으로 모든 데이터 전송은 암호화됨
항목 내용
프로토콜 기반 SSH
포트번호 22
보안성 매우 높음(암호화 + 인증)
인증방식 비밀번호 또는 공개키
전송방식 단일 연결(제어/데이터 통합)
명령어 지원 파일 전송, 이름 변경, 삭제[, 디렉토리 생성 등

 

구현이 상대적으로 복합하고 기존 FTP와의 명령어 호환이 되지않는 단점이 존재하지만 모든 트래픽이 암호화되기 때문에 보안성이 매우 우수하며, 접근제어와 로그관리가 쉽다.

 

 

  • TFTP
    • 매우 단순한 형태의 FTP로 UDP 기반(포트 69번)으로 동작하고 인증과 암호화 기능이 존재하지 않음
    • 자원이 제한된 임베디드 또는 라우터 환경에서도 사용할 수 있다.
    • 일반적으로 네트워크 장비의 펌웨어 업데이트 또는 PXE 부팅에 사용
  • FTPS(FTP Secure/FTP-SSL)
    • 기존 FTP에 SSL/TLS 암호화 계층을 추가한 프로토콜이며 21번포트로 명령, 990번 포트로 암호화된 연결을 수행함
    • SSL 인증서를 통해 데이터/사용자 보안을 보장하며 FTP의 명령 체계를 유지한다는 장점이 있다.ft

 

6. FTP 접근 통제 파일

  • /etc/ftpusers
    • FTP 접근을 금지할 사용자 계정을 나열하는 파일
    • 파일에 포함된 사용자는 FTP로 로그인 자체가 차단됩니다.
    • 보안상 중요도가 높은 계정은 기본적으로 차단되어야 합니다.(ex. root, daemon, bin ..)
# /etc/ftpusers
root
bin
daemon
sys

 

 

  • /etc/hosts.allow & /etc/hosts.deny
    • 이 두파일은 TCP Wrapper 시스템의 일부로 네트워크 서비스를 호스트를 기준으로 허용 또는 차단합니다.
    • FTP 뿐만 아니라 sshd, telnet, rsync, rlogin, finger 등 TCP 기반의 여러 데몬에 사용됩니다.
  • /etc/hosts.allow
    • 접근을 허용할 호스트나 네트워크를 정의
    • 먼저 이 파일이 확인되며, 여기서 허용되면 바로 접속허가됨
<서비스명> : <호스트 주소> [ : 옵션 ]
vsftpd : 192.168.1.100
vsftpd : .mycompany.com
ALL : 127.0.0.1

 

  • /etc/hosts.deny
    • 접근을 거부할 호스트나 네트워크를 정의
    • hosts.allow에 명시되지 않은 요청은 이 파일을 통해 차단 여부를 결정
<서비스명> : <호스트 주소> [ : 옵션 ]
vsftpd : ALL

 

 

 

7. FTP 주요 로그 파일

로그 종류 파일 경로 설명
접속/명령 로그 /var/log/vsftpd.log 사용자 로그인, 파일 업로드/다운로드 등
시스템 인증 로그 /var/log/secure(RHEL 계열)
/var/log/.auth.log(Debian/Ubuntu)
로그인 시도, 인증 실패 등의 보안 로그
xferlog 형식 로그 /var/log/xferlog 전송된 파일 내역(접속 IP, 파일 크기 등)


로그 예시:

Fri May 17 13:12:04 2024 [pid 12345] CONNECT: Client "192.168.1.50"
Fri May 17 13:12:07 2024 [pid 12345] [ftpuser] OK LOGIN: Client "192.168.1.50"
Fri May 17 13:12:10 2024 [pid 12345] [ftpuser] UPLOAD: Client "192.168.1.50", "/upload/test.txt", 2048 bytes

 

로그 형식

필드 의미
날짜/시간 전송 시간
바이트 수 파일 크기
클라이언트IP 접속자 IP
경로 전송된 파일 경로
b/o/i 전송 방향(b:바이너리, a:ASCII 등)
사용자 로그인 사용자

 

 

 

8. FTP 보안 취약점

  • 암호화 되지 않은 통신
    • FTP는 ID, 비밀번호, 명령어, 데이터 모두 평문으로 전송하므로 공격자가 네트워크 패킷을 스니핑하는 경우 로그인 정보 및 파일 내용을 탈취할 수 있습니다.
    • 해결방안
      • FTP 대신 SFTP 또는 FTPS를 사용
      • 내부망에서도 암호화된 프로토콜을 사용
  • 익명 로그인(Anonymous FTP)
    • 별도의 인증없이 anonymous 계정으로 로그인 가능하게 설정되어 있으면, 누구나 접속할 수 있음
    • 디폴트로 anonymous는 읽기만 가능하지만, 잘못 설정되면 파일 업로드, 삭제까지 가능해짐
    • 해결방안
      • anonymous_enable=NO로 익명 접속 비활성화
      • 업로드 디렉터리는 쓰기전용 + 실행금지 설정
  • 디렉터리 트래버셜(Directory Traversal)
    • 공격자가 ../ 같은 상대경로를 이용하여 루트 디렉터리 밖의 시스템 파일에 접근할 수 있음
    • 취약한 FTP 서버에서 발생
    • 해결방안
      • chroot(가상 루트 디렉터리) 설정 : 사용자를 자신의 홈 디렉터리에만 제한
        chroot_local_user=YES
      • 최신버전 FTP  서버를 사용
  • FTP Bounce Attack
    • FTP PORT 명령을 악용해 서버가 제3자 시스템에 연결하도록 유도
    • 공격자가 FTP 서버를 중계서버로 활용 가능
    • 해결방안
      • FTP 서버 설정에서 bounce attack 차단
        deny_data_connection=YES
      • 대부분의 최신 FTP 서버에서 기본적으로 차단됨
  • 무차별 대입 공격(Brute Force Attack)
    • 공격자가 여러 ID/비밀번호 조합을 시도하여 FTP 계정 탈취 시도
    • 특히 취약한 패스워드나 계정명이 존재할 경우 위험
    • 해결방안
      • 강력한 비밀번호 정책 사용
      • fail2ban 등을 사용해 일정 횟수 로그인 실패시 차단
      • PAM 모듈로 인증 보안 강화
  • 버퍼 오버플로우 및 코드 실행 취약점
    • FTP 서버 소프트웨어의 버그나 취약점을 이용해 악의적인 명령어를 보내면 서버에서 임의 코드 실행 가능
    • ProFTPD, vsftpd, wu-ftpdf 등의 구버전에서 발생
    • 해결방안
      • FTP 서버 소프트웨어를 쵯니 버전으로 업데이트
      • 보안 패치 정기적으로 확인
  • 로그 파일 노출
    • FTP 로그 파일에는 사용자명, 접속 IP, 경로 등 민감 정보가 포함될 수 있음
    • 롷그 파일 접근 권한이 잘못 설정되면 정보 유출 위험
    • 해결방안
      • /var/log/vsftpd.log 등 로그 파일 권한 제한(chmod 600)
      • 로그 파일 주기적 로테이션 및 모니터링
728x90

+ Recent posts