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) : 실제 파일을 전송하는 용도
- FTP는 2개의 별도 연결을 사용합니다.
- 모드
| 모드 | 설명 |
| 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 서버를 사용
- chroot(가상 루트 디렉터리) 설정 : 사용자를 자신의 홈 디렉터리에만 제한
- FTP Bounce Attack
- FTP PORT 명령을 악용해 서버가 제3자 시스템에 연결하도록 유도
- 공격자가 FTP 서버를 중계서버로 활용 가능
- 해결방안
- FTP 서버 설정에서 bounce attack 차단
deny_data_connection=YES - 대부분의 최신 FTP 서버에서 기본적으로 차단됨
- FTP 서버 설정에서 bounce attack 차단
- 무차별 대입 공격(Brute Force Attack)
- 공격자가 여러 ID/비밀번호 조합을 시도하여 FTP 계정 탈취 시도
- 특히 취약한 패스워드나 계정명이 존재할 경우 위험
- 해결방안
- 강력한 비밀번호 정책 사용
- fail2ban 등을 사용해 일정 횟수 로그인 실패시 차단
- PAM 모듈로 인증 보안 강화
- 버퍼 오버플로우 및 코드 실행 취약점
- FTP 서버 소프트웨어의 버그나 취약점을 이용해 악의적인 명령어를 보내면 서버에서 임의 코드 실행 가능
- ProFTPD, vsftpd, wu-ftpdf 등의 구버전에서 발생
- 해결방안
- FTP 서버 소프트웨어를 쵯니 버전으로 업데이트
- 보안 패치 정기적으로 확인
- 로그 파일 노출
- FTP 로그 파일에는 사용자명, 접속 IP, 경로 등 민감 정보가 포함될 수 있음
- 롷그 파일 접근 권한이 잘못 설정되면 정보 유출 위험
- 해결방안
- /var/log/vsftpd.log 등 로그 파일 권한 제한(chmod 600)
- 로그 파일 주기적 로테이션 및 모니터링
728x90
'정보보호' 카테고리의 다른 글
| 리눅스 세션 타임아웃 설정 방법 TMOUT (0) | 2025.05.25 |
|---|---|
| linux umask 개념 및 umask값 설정 (0) | 2025.05.24 |
| linux chmod 명령어 사용방법과 특수권한(setuid, setgid, sticky bit) (0) | 2025.05.11 |
| XXE Injection의 개념과 방어 방법 (0) | 2025.05.10 |
| X.509 인증서의 개념, Openssl을 사용한 인증서 생성 방법 (0) | 2025.05.08 |