FTP
연결 모드¶
능동 모드¶
제어 포트(TCP/21) / 데이터 전송(TCP/20)
- 클라이언트는 서버의
21번 포트
로 연결(제어채널 생성) - 사용자가 파일 목록을 불러오는 명령(
ls
)을 입력 - 클라이언트는
임시 포트
(1024 이상)를 결정하여 서버에게 전달 (PORT 명령) - 서버는 클라이언트가 알려준 포트로 연결을 설정(데이터채널 생성)
- 데이터채널을 통해 데이터를 송신한 후 연결 종료
FTP 클라이언트의 기본 모드
수동 모드¶
제어 포트(TCP/21) / 데이터 전송(TCP/1024~)
- 클라이언트는 서버의
21번 포트
로 연결(제어채널 생성) - 사용자가 파일 목록을 불러오는 명령(
ls
)을 입력 - 클라이언트는 수동모드로 연결하기 위해
PASV 명령
을 전송 - 서버는
임시 포트
(1024 이상)를 결정하여 클라이언트에게 전달 - 클라이언트는 서버가 알려준 포트로 연결을 설정(데이터채널 생성)
- 데이터채널을 통해 데이터를 송신한 후 연결 종료
종류¶
익명 FTP(Anonymous FTP)¶
서버에 계정이 없는 사용자가 서버자원에 한정된 접근이 가능하도록 권한을 제공
ID: anonymous, PW: email_address
로 로그인- 비밀번호는 서버 로그에 기록하기 위한 용도
TFTP(Trivial File Transfer Protocol)¶
오직 기본적인 IP와 UDP
만을 필요로 하는 FTP (포트 : UDP/69)
- 보안 기능이 없음
- FTP와의 차이
- 전송
- 프로토콜 차이
- TFTP는 부스트래핑 시 자주 사용
- 한정된 개수의 명령
파일 전송
만 가능
- 한정된 데이터 표현 방식
- FTP가 지원하는 데이터 표현 방식을 전부 지원하지 않음
인증의 부재
보안 위협 및 대책¶
FTP 보안¶
비밀번호, 데이터 전송이 평문
이므로 공격자에게 노출 가능성이 있으므로 아래와 같은 프로토콜 사용이 권장된다.
- SFTP(SCP)
SSH기반
파일 전송 프로토콜(TCP/22)- FTPS
SSL/TLS 기반
파일 전송 프로토콜(TCP/990)- FTP 응용계층, TCP 계층사이에 보안소켓을 추가하는 형식
TFTP 보안¶
중요하지 않은 파일에만 접근할 수 있도록 제한하거나 TFTP 서버 근처에 있는 라우터에 보안을 구현하여, 특정 호스트만 서버에 접근하도록 해야 한다.
보안 대책¶
secure mode
로 운영- 지정 디렉터리를 루트 디렉터리로 지정하여 상위 디렉터리로 접근을 제한
익명 FTP 보안¶
익명 사용자에게 쓰기 권한이 있을 경우 악성코드 생성이 가능
보안 대책¶
중요 디렉터리(/bin, /etc 등)의 소유자와 권한(permission)을 관리하거나 사용을 금지
Bounce attack¶
FTP 서버가 데이터를 전송할 때 목적지를 검사하지 않는 문제점을 이용한 공격
- 능동모드에서
PORT
명령어로 공격자는 원하는 곳으로 데이터 전송 가늩
보안 대책¶
- FTP 규약을 어느 정도 제한
- 다른 서비스가 20번 포트 접속을 요청하면 거절
- 익명 FTP 서버의 경우 임시적으로
./incoming
에 파일 업로드 제한
서비스 운영¶
proftpd¶
- 보안과 기능의 중점을 둔 FTP 데몬
- 매우 빠르고 안정적
xinetd / standalone
형태로 동작가능
FTP 접속 시 확인 설정¶
/etc/passwd
,/etc/shadow
에 사용자 계정이 있는지 검사/etc/ftpusers
에 사용자 id가 있으면 거부/etc/shell
에 등록되지 않는 쉘을 사용하는 유저는 거부
설정 파일 옵션¶
옵션 | 설명 |
---|---|
ServerType type |
서버 타입 설정(xinetd / standalone) |
RootLogin on/off |
루트 계정 로그인 허용/거부 |
user name |
익명 접속할 경우 사용자를 name 으로 인식 |
MaxClients num |
최대 접속 허용 |
TimeoutLogin second |
클라이언트가 인증을 유지할 수 있는 시간 |
TimeoutIdleftp second |
접속 후 아무런 작업도 없는 상태 유지 시간 |
TimeoutSession second |
second 초 후에 무조건 접속 종료 |
vsftpd(Very Secure FTP Daemon)¶
- 가상 IP별 별도의 환경 설정 기능
- 가상 사용자 설정
- 전송 대역폭 지정
- PAM 지원
- 상세 자체 로그 파일 형식을 지원
xinetd / standalone
형태로 작동 가능
Last update :
4 juin 2023
Created : 3 juin 2020
Created : 3 juin 2020