정보보안기사

[정보보안기사] SECTION 31 FTP 보안

tnvori 2026. 2. 15. 22:01

벌써 필기 시험까지 10일 남았다. 시간 왤케 빠름

소금빵. 짭짤한 게 맛있다. 사진 찍기도 전에 메론빵이 썰려버린 모습

  1. 파일 관련 프로토콜
    1. FTP
      1. 개요
        • 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 표준 기능
        • 호스트간에 두 개의 연결 설정
          • 20번 — 데이터 전송
          • 21번 — 명령과 응답 등의 제어 정보
      2. FTP 로그인 순서와 인증
        • 사용자명/비밀번호 방식 — USER, PASS
        • 사용자 DB에서 대조 및 확인
      3. FTP 연결
        • FTP Active Mode(능동 모드, 일반 연결)
          • 특징
            • 클라이언트에서 서버측 21번 포트로 접속하여 제어 채널을 생성하고, 데이터는 서버에서 클라이언트로 접속하여 데이터를 보내는 방식
            • 클라이언트 PC에 방화벽이 설치되어 외부에서의 접속을 허용하지 않는다면 FTP 접속은 되지만, 데이터 채널 연결이 불가능함
          • 동작 방식
            1. FTP 클라이언트는 FTP 서버의 21번 포트로 연결 설정하여 제어 채널 생성
            2. 사용자가 파일 목록을 보기 위해 ls를 입력하면 FTP 클라이언트는 사용할 임시 포트(1024번 이상)를 결정하여 FTP 서버에 알림
            3. FTP 서버는 임시 포트로 연결을 설정하여 데이터 채널 생성
            4. 데이터 송신 후 데이터 채널 연결 종료
        • FTP Passive Mode(수동 모드, 수동 연결)
          • 특징 — 클라이언트에서 서버측 21번 포트로 접속하여 제어 채널을 생성하고, 데이터 채널도 클라이언트에서 서버로 접속하여 데이터 전송
          • 동작 방식
            1. FTP 클라이언트는 FTP 서버의 21번 포트로 연결 설정하여 제어 채널 생성
            2. 사용자가 파일 목록을 보기 위해 ls를 입력하면 클라이언트는 수동 모드 연결을 위해 PASV 명령을 전송하고, FTP 서버는 사용할 임시 포트를 결정하여 FTP 클라이언트에게 알림
            3. FTP 클라이언트는 임시 포트로 연결을 설정하여 데이터 채널 생성
            4. 데이터 송신 후 데이터 채널 연결 종료
    2. 익명 FTP
      1. 개요
        • 익명 FTP를 지원하여 서버에 계정이 없는 사용자가 서버 자원에 한정된 접근을 할 수 있는 권한 제공
        • 기술 지원, 고객 지원, 파일 배포 등을 하고자 하는 단체에서 사용
        • 사용자 이름으로 anonymous, 패스워드로 이메일 주소 사용 → 서버 로그 기록용
    3. FTP(Trivial File Transfer Protocol)
      1. 개요
        • 기본 개념
          • FTP의 기능을 전부 지원할 필요가 없거나 모두 지원하는 것이 비현실적인 경우를 위해 더 간단한 TFTP 개발
          • UDP(69번 포트) 사용
          • 소프트웨어 패키지를 읽기 전용 메모리나 디스크 없는 워크스테이션에 설치할 때 사용
        • FTP와 TFTP의 차이점
          • 전송 — 다양한 기능을 지원하는 것이 중요하지 않을 때 사용. 부트 스트래핑할 때 사용
          • 한정된 개수의 명령 — 보내고 받는 기능만 지원
          • 한정된 데이터 표현 방식 — ASCII, 바이너리
          • 인증의 부족
      2. 데이터 전송
        • 파일은 데이터와 블록으로 나뉘고, 마지막 블록을 제외한 각 블록은 정확히 512바이트의 크기를 가짐. 마지막 블록은 0~511바이트
        • TFTP는 연속적인 데이터 블록으로 파일을 전송하기 위해 흐름 제어와 오류 제어 메커니즘을 생성해야 함
    4. NFS와 Samba
      1. NFS(Network File System)
        • TCP/IP 프로토콜을 사용하여 네트워크상에서 파일 시스템을 운영할 수 있도록 하는 프로토콜
        • 데이터 보안과 무결성을 보장하면서 인증된 네트워크 사용자가 공유된 네트워크 파일을 마치 자신의 저장 장치에 있는 것처럼 사용할 수 있는 방법 제공
        • 함께 사용하는 대용량 프로그램이나 데이터를 하나의 호스트에 넣어두고 NFS로 연결하여 사용 → 디스크 공간 절약
      2. Samba
        • SMB 프로토콜을 사용하여 유닉스 계열 시스템과 윈도우 시스템 간에 파일 및 프린터 자원을 공유할 수 있는 기능 제공
        • 리눅스는 기본 제공
  2. FTP 보안 위협 및 대책
    1. FTP 보안
      • FTP의 비밀번호는 평문으로 저장됨
      • FTP 응용 계층과 TCP 계층 사이에 보안 소켓 계층 추가 → SSL-FTP
      • FTPS(FTP over SSL/TLS) — 990/tcp 포트
    2. SFTP
      • SSH 프로토콜의 일부분
      • SSH 클라이언트와 서버 사이에서 파일을 전송하기 위해 인터페이스 명령 세트 사용
    3. TFTP 보안
      • 중요하지 않은 파일에만 접근할 수 있도록 제한
      • 최소한의 보안성을 위해 TFTP 서버 근처의 라우터에 보안을 구현하여 특정 호스트만 접근 가능하도록
      • secure mode — chroot 기능 이용. 지정한 디렉터리를 최상위 디렉터리로 지정하여 상위 디렉터리로 접근하지 못하도록
    4. Bounce attack
      • 개요
        • 제어 채널과 데이터 채널을 다르게 사용하고 데이터 채널을 생성할 때 목적지를 확인하지 않는 FTP 설계의 구조적 취약점 이용
        • 능동 모드에서 FTP 서버의 파일을 요청하면 클라이언트에서 파일을 받을 IP와 포트를 지정해서 전달. 이때 IP와 포트를 요청한 클라이언트가 아닌 임의의 주소를 지정할 수 있는 것 이용
        • 익명 FTP 서버를 이용, PORT 명령을 조작하여 공격 대상 네트워크를 스캔하고 FTP 서버로 하여금 공격자가 원하는 곳으로 데이터 전송
      • 보안
        • FTP의 원래 규약 제한
        • FTP의 원래 규약은 인정하되 다른 서비스가 20번 포트 접속을 요청하면 거절
    5. Anonymous FTP 취약점
      • 개요
        • 보안 절차를 거치지 않은 익명의 사용자에게 FTP 서버로의 접근 허용
        • 익명 사용자가 쓰기 원한이 있을 때 악성코드 생성 가능
      • Anonymous FTP 보안 대책
        • 웬만하면 서비스 제거
        • anonymous 사용자의 루트 디렉터리, bin, etc, pub 디렉터리의 소유자와 퍼미션 관리
    6. FTP 접근제어 설정
      • ftpusers 파일을 통한 접근제어
        • 중요 계정에 대해 접속을 제한해야 함
        • ftpusers — 접속을 제한할 계정 정보를 담고 있는 설정 파일
      • TCPWrapper를 통한 접근제어
        • TCPWrapper의 설정 파일인 hosts.allow, hosts.deny 파일을 이용하여 IP 기반의 접근제어 수행
        • FTP 데몬 프로그램별로 TCPWrapper 연동 설정 필요
  3. FTP 서비스 운영
    1. proftpd
      • 특징
        • wu-ftpd의 대안으로 개발
        • 매우 안정적이고 빠름
        • xinetd / standalone 형태로 작동 가능
      • ftp 접속 시 확인 설정
        • /etc/passwd, /etc/shadow에 사용자 계정이 있는지 검사
        • /etc/ftpusers에 사용자 id가 있다면 거부
        • /etc/shell에 등록되지 않은 셸을 사용하는 유저 접근 거부
        • RequireValidShell off
      • proftpd 설정 파일 옵션
        • ServerType standalone (inetd) — 서버 타입 설정
        • RootLogin off — 루트 계정 로그인 허용 안함
        • User nobody — 데몬 동작 계정
        • Group nobody — 데몬 동작 그룹
        • ServerIdent On “Welcome to FTP” — 버전 정보 숨기기
        • MaxClients — 최대 접속 허용
        • TimeoutLogin — 아이디/암호로 인증이 완료될 때까지의 제한 시간
        • TimeoutIdleftp — 접속 후 아무런 데이터 전송이 없는 idle 상태
        • TimeoutSession — 일정 시간 후 무조건 접속 종료
        • Limit Command — 사용 가능한 command 제한
    2. vsftpd(Very Secure FTP Daemon)
      • 주요 기능
        • 가상 IP별 별도의 환경 설정 기능(설정 파일의 listen_address = 이용)
        • 가상 사용자 설정
        • 전송 대역폭 지정
        • PAM 지원(1.2.0부터는 PAM을 통한 wtmp에 로그인 로그를 남김)
        • xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원
        • Standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원)
        • IP 별로 다른 환경 파일 지정 가능(tcp_wrappers와 함께 사용)
      • vsftpd 서비스 관련 파일
        • /etc/vsftpd — vsftpd의 메인 디렉터리
        • /etc/vsftpd/vsftpd.conf
        • /etc/vstfpd/ftpusers — PAM에서 사용하는 ftp 접속 제한자 리스트 파일.
        • /etc/rc.d/init.d/vsftpd — vsftpd 시작/종료/재시작 스크립트
        • /etc/xinetd.d/vsftpd — xinetd 환경에서 서비스하기 위한 vsftpd의 xinetd 설정 파일
        • /var/log/xferlog — FTP 업로드 및 다운로드 기록을 위한 로그 파일