파일 전송 프로토콜(File Transfer Protocol)의 약자로 TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다.
네트워크 상에서 컴퓨터들이 파일을 교환하기 위한 목적으로 개발되었다.
FTP에는 20번, 21번 포트를 사용하는데
20번 포트는 데이터 전송을 위해 사용되고, 21번 포트는 명령과 응답 등의 제어정보를 위해 사용된다.
FTP 전송모드
전송모드 기본 값은 Active Mode이고 클라이언트가 Active 또는 Passive 모드를 선택할 수 있다.
데이터 포트 요청은 Active의 경우 클라이언트가, Passive의 경우 서버가 요청한다.
1) 능동 연결 (Active mode)
- 클라이언트가 서버의 21번 포트로 접속 후 명령을 송수신 하기 위해 제어 채널을 생성한다.
- 이후 사용자가 ls명령을 입력하면 클라이언트가 사용할 5150포트를 서버에 알려준다.
- 서버는 이에 대해 Ack로 응답한다.
- 서버의 20번 포트는 클라이언트가 알려준 두번째 포트로 접속 후 데이터 채널을 생성한다.
- 마지막으로 클라이언트가 Ack로 응답한다.
문제점)
서버에서 클라이언트로 요청을 하기 때문에 클라이언트 PC에 방화벽이 설치되어 외부에서의 접속을 허용하지 않는다면 ftp 접속은 되지만 이후 데이터 채널 연결이 불가능하여 파일을 받을 수 없는 문제가 발생할 수 있다.
Active mode 에서는 클라이언트가 파일을 받을 IP/ Port를 지정하고 전달한다.
이 과정에서 IP를 변경하여 공격자가 원하는 목적지로 데이터를 보내거나, 목적지의 port를 스캔하는 공격을 할 수 있다.
2) 수동 연결 (Passive mode)
- 클라이언트의 서버의 21번 포트로 접속 후 제어 채널을 생성한다.
- 이후 사용자가 명령어를 입력하면 클라이언트는 passive mode로 연결하기 위해 PASV 명령어를 전송한다.
- 서버에서는 서버가 사용할 3267포트를 알려준다.
- 클라이언트는 서버가 알려준 포트번호로 접속을 시도하여 데이터 채널을 생성한다.
- 서버는 Ack로 응답한 후 데이터를 송신한 후 데이터 채널 연결을 종료한다.
수동 모드에서는 20번 포트를 사용하지 않고 임의의 비 특권 포트를 사용한다.
서버에서 포트번호를 알려주기 때문에 해당 대역의 방화벽 포트를 열어 두어야 한다.
FTP 보안 취약점
1. FTP Bounce Attack
: 제어 채널과 데이터 채널을 다르게 사용하고 데이터 채널을 생성할 때 목적지를 확인하지 않는 FTP 설계의 구조적 취약점을 이용한다.
공격 방법)
- PORT 명령을 조작하여 공격대상 네트워크를 스캔 후 FTP 서버로 하여금 공격자가 원하는 곳으로 데이터 전송을 하게 한다.
- 다른 서비스가 20번 포트 접속을 요청하면 거절하도록 설정한다.
2. 익명 FTP(Anonymous FTP)
: 서버에 계정이 없는 사용자가 서버 자원에 한정된 접근을 할 수 있는 권한을 제공한다.
익명 사용자가 보안 절차를 거치지 않고 서버에 접속할 수 있고, 쓰기 권한이 있을 경우 악성코드 생성이 가능하다.
대응)
/etc/passwd 파일에서 익명 FTP에 불필요한 항목을 제거한다.
반드시 사용해야 하지 않는 경우 서비스를 제고하고,
익명 사용자는 핵심 디렉토리의 권한을 설정하여 접근을 금지한다.
3. TFTP(Trivial FTP)
: 소프트웨어 패키지를 읽기 전용 메모리나 디스크 없는 워크스테이션에 설치할 때 주로 사용되고
자체 디스크를 가지고 있지 않은 워크스테이션에 부팅 이미지를 전달할 목적으로 사용된다.
69/UDP 포트를 사용하여 별도의 인증과정 없이 지정된 디렉토리에 접근할 수 있는 보안상 취약점을 이용한다.
FTP 접근 제어 설정
1. ftpuser 파일을 통한 접근 제어
ftpuser 파일에 접속을 제한할 계정 정보를 담고 있다. 중요계정에 대해서는 ftpuser 파일에 명시하여 접속을 제한한다.
2. TCPWrapper를 통한 접근 제어
host.allow, host.deny 파일을 이용하여 IP 기반의 접근 제어를 수행한다. FTP 데몬 프로그램 별로 TCPWrapper 연동 설정이 필요하다.
FTPS 와 SFTP
FTP의 경우 비밀번호가 평문으로 가기 때문에 보안에 취약하다
때문에 FTP가 제공하지 않는 인증 옵션을 통해 보호 기능을 제공하는 FTPS와 SFTP를 사용한다.
1) FTPS
기존 FTP에 계층을 추가해서 SSL/TLS를 사용한 통신으로 보안성을 추가한 것
HTTP 통신에 보안을 위해 만들어졌다.
속도는 느리지만 데이터를 안전하게 주고 받을 수 있는 비대칭키 방식
호환성이 뛰어나지만 FTP 기반이기 때문에 FTPS도 두가지 채널이 필요하다.
따라서 방화벽 설정 문제로 작동이 안되는 경우가 생길 수 있다.
2)SFTP
SFTP는 SSH가 추가된 것으로 보안성을 강화했다.
서버와 클라이언트 간의 데이터 전송 시 계정 정보 등을 암호화하여 해킹이나 보안 상의 문제를 사전 방지 가능하다.
접속하는 방법은 일반 FTP와 동일하지만 , 22번 포트를 사용한다.
SFTP는 보안 강화용 공개키 또는 개인 인증키 등을 사용할 수 있어 보다 안전한 데이터 송수신이 가능하다.
주요 FTP 클라이언트
파일질라, windows 탐색기, 알드라이브 등이 있다.
> FTP 접속은 홈페이지 파일이나 이미지 업로드 시 많이 이용
참고 : https://peemangit.tistory.com/66
FTP (File Transfer Protocol) 란?
1. FTP (File Transfer Protocol) 란? 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 표준 기능이다. 20번 포트는 데이터 전송을 위해 사용되고, 21번 포트는 명령과 응답
peemangit.tistory.com
https://cloudedi.tistory.com/17
FTPS와 SFTP 비교하기
지난번에 FTP, SFTP, FTPS를 간단하게 설명했었습니다. (FTP, SFTP, FTPS 내용 확인하기↓) FTP, FTPS, SFTP 오늘은 프로토콜에서 FTP와 FTPS, SFTP를 알아보겠습니다. (프로토콜부터 공부하고 싶다면, 여기서 확
cloudedi.tistory.com
'CS 스터디 > 네트워크' 카테고리의 다른 글
[전송 계층] 1. 전송 계층의 개요 (0) | 2023.09.09 |
---|---|
[응용 계층] 5. SMTP / POP3 & IMAP4 (0) | 2023.09.09 |
[응용 계층] 3. HTTP (0) | 2023.09.08 |
[응용 계층] 2. DNS 서버 (0) | 2023.09.08 |
[응용 계층] 1. 응용 계층 개요 (0) | 2023.09.08 |