FTP 전송 로그 xferlog - 이해하기


LINUX xferlog 한방 정리 (옵션 전체 + 예제)

0) xferlog가 뭐야?

xferlog는 FTP 서버에서 파일 업로드/다운로드 전송 기록을 남기는 로그(또는 그 표준 형식)예요.
보통 경로는 /var/log/xferlog 이고, FTP 데몬(vsftpd/proftpd 등) 설정에 따라 위치/형식이 달라질 수 있어요.


1) xferlog “로그 포맷(필드)” 전체

전통적인 xferlog 한 줄은 아래 같은 필드(항목)로 구성됩니다(구현에 따라 조금씩 차이 가능).

시간  전송시간(초)  원격호스트(IP)  파일크기(byte)  파일경로  전송타입  특수플래그  방향  접근모드  사용자  서비스  인증방식  인증ID  완료상태

(중요) 값이 정해져 있는 “옵션(값) 전체”

아래 값들을 외워두면 로그 해석이 아주 쉬워져요.

항목 의미 값(옵션)
전송타입 (transfer-type) 전송 모드 a(ASCII), b(Binary)
특수플래그 (special-action-flag) 특수 처리 C(압축), U(압축해제), T(tar), _(없음)
방향 (direction) 업/다운 구분 i(incoming=업로드), o(outgoing=다운로드)
접근모드 (access-mode) 익명/실사용자 a(anonymous), r(real user)
인증방식 (auth-method) 인증 종류 0(없음), 1(RFC931/ident 기반 표기되는 경우)
완료상태 (completion-status) 성공/실패 c(complete), i(incomplete)

시험 느낌 포인트: i/o = 업/다운, c/i = 성공/미완료만 알아도 절반은 먹고 들어갑니다.


2) (리눅스) xferlog 관련 “설정 옵션” 전체 (데몬별)

A) vsftpd (가장 흔함) — xferlog 관련 옵션들

/etc/vsftpd.conf에서 주로 아래 옵션들을 씁니다.

옵션 의미
xferlog_enable=YES/NO 전송 로그 기록 ON/OFF
xferlog_std_format=YES/NO YES면 xferlog 표준 형식으로 기록
xferlog_file=/경로 xferlog 파일 경로 지정
dual_log_enable=YES/NO xferlog + vsftpd 전용 로그를 동시에
vsftpd_log_file=/경로 vsftpd 전용 로그 파일
syslog_enable=YES/NO 로그를 파일 대신 syslog로 보냄
log_ftp_protocol=YES/NO FTP 명령/응답까지 상세 로깅(디버깅용, 로그 많아짐)

설정 예시 1) xferlog 표준 형식으로 남기기(기본)

xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog

설정 예시 2) 전송 로그(xferlog) + 접속/상세 로그도 함께

xferlog_enable=YES
xferlog_std_format=YES
dual_log_enable=YES
xferlog_file=/var/log/xferlog
vsftpd_log_file=/var/log/vsftpd.log

B) proftpd — xferlog(TransferLog) 방식

/etc/proftpd/proftpd.conf에서 흔히 아래처럼 설정합니다.

옵션 의미
TransferLog /path/xferlog 전송 로그를 xferlog 형식으로 기록(대표)
ExtendedLog ... 더 자세한 커스텀 로그(원하면 추가)

설정 예시

TransferLog /var/log/xferlog

3) xferlog 예제 3개(해석 포함)

(1) 다운로드(outgoing) 성공

Mon Jun 10 03:00:02 2025 2 192.0.2.10 104857600 /pub/db_backup.zip b _ o r alice ftp 0 * c
  • b = 바이너리 전송

  • o = 다운로드(반출)

  • r alice = 실사용자 alice

  • c = 성공(complete)

(2) 업로드(incoming) 성공 (외부에서 파일 올림)

Mon Jun 10 03:10:15 2025 1 203.0.113.8 53248 /upload/test.txt a _ i r bob ftp 0 * c
  • i = 업로드(반입) → 웹셸/악성파일 업로드 사고 때 자주 확인

(3) 다운로드 시도했지만 미완료(incomplete)

Mon Jun 10 03:12:01 2025 1 203.0.113.8 90000000 /pub/big.iso b _ o a anonymous ftp 0 * i
  • a anonymous = 익명 FTP

  • 마지막 i = 미완료(중간 끊김) → 대량 유출 시도/자동화 도구 흔적일 수도


4) 로그 분석(필터) 예제 — 실전용

환경마다 필드 위치가 약간 다를 수 있어서, 먼저 샘플 한 줄을 보고 awk 컬럼을 맞추는 습관이 좋아요.

다운로드(o) + 성공(c)만 보기

grep " o " /var/log/xferlog | grep " c$"

업로드(i)만 보기

grep " i " /var/log/xferlog

특정 IP만 보기

grep "203.0.113.8" /var/log/xferlog

대용량(예: 100MB 이상)만 보기 (대략 필터)

awk '$8 >= 100*1024*1024' /var/log/xferlog

5) 정보보안기사 포인트(한 줄 요약)

  • xferlogFTP 파일 전송(업/다운) 로그

  • 사고대응에서는 (1) 누가(IP/계정) (2) 무엇을(파일) (3) 얼마나(크기) (4) 언제(시간) (5) 성공했나(c)를 빠르게 본다


댓글 쓰기

새 댓글을 작성할 수 없습니다.*

다음 이전