2022. 1. 20. 13:04ㆍServer
FTP(File Transfer Protocol)
파일 전송 프로토콜은 TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다. 파일 전송 프로토콜을 TCP/IP 프로토콜 테이블의 응용 계층에 속하며, 역사는 오래 되었지만 지금도 인터넷에서 자주 사용된다. 최초의 FTP 클라이언트 애플리케이션들은 운영 체제가 그래픽 사용자 인터페이스를 갖추기 이전에 개발된 명령 줄 프로그램이었으며, 대부분의 윈도우, 리눅스, 유닉스 운영 체제에 현재도 기본 포함되어 있다. 그 뒤로 수많은 FTP 클라이언트 및 오토메이션 유틸리티들이 데스크톱, 서버, 모바일 장치, 하드웨어용으로 개발되고 있으며, FTP는 웹 페이지 편집기와 같은 생산성 응용 프로그램들에 통합되고 있다.
프로토콜 개요
제어정보 전달 = TCP 21번(반 이중 방식 연결)
데이터 전달 = TCP 20번 사용(전 이중 방식 연결)
HTTP와는 달리 연결의 종류는 2가지가 있다.
명령 연결
먼저 제어 포트인 서버 21번 포트로 사용자 인증, 명령을 위한 연결이 만들어지고, 여기를 통해 클라이언트에서 지시하는 명령어가 전달된다.
데이터 전송용 연결
능동모드(Active)
서버가 자신의 데이터 포트인 20번 포트에서부터 클라이언트가 지정한 지점으로의 데이터
연결을 만든다. 클라이언트가 지정하는 포트는 주로 1023 보다 큰 번호가 매겨진 포트이다.
클라이언트가 방화벽, NAT(IP 마스킹) 등을 사용하는 환경일 때에 잘 동작하지 않을 수 있
는데, 이때 수동 모드를 이용하면 된다.
수동모드(Passive)
클라이언트가 서버가 지정한 서버 포트로 연결 할 수 있게 한다. 이 때에는 보통 양쪽 포트
모두 1023보다 큰 포트를 사용한다.
어느 모드에서도 2개의 연결을 만드는 점은 다르지 않다. 하지만 FTP 포트를 변경하게 되고 방화벽이 있는 경우, 방화벽 Inspection 모드 설정에 따라 FTP 통신은 정산적이지만, get 명령이나, Ls 명령어 등 FTP-DATA 포트를 이용한 통신은 정상적으로 이루어지지 않를 수 있다.
제어 연결에서 명령어 구분
접근제어 명령어
- USER, PASS, ACCT, REIN, QUIT, ABOR
파일 관리 명령어
- CWD, CDUP, DELE, LIST, NLIST, MKD, PWD, RMD, RNFT, RNTO, SMNT
전송 데이터 형태 정의 명령어
- TYPE(A,E,I,N,T), STRU(F,R,P), MODE(S,B,C)
포트 정의 명령어
- PORT, PASV
파일 전송제어 명령어
- RETR(파일 읽기 : 서버 -> 클라이언트), STOR(파일 저장 : 클라이언트 -> 서버), APPE, STOU, ALLO, REST, STAT
기타 부가적인 명령어
- HELP, NOOP, SITE, SYST
FTP 보안 강화
FTPS(FTP over SSL/TLS secured channel)
- 응용계층 FTP와 전송계층 TCP 사이에 보안 소켓계층(SSL)을 추가하여 사용하는 형태
SSH 보안 채널 위에서 동작하는 구형 FTP 프로토콜
FTPS 포트 : 990(controlchannel), 989(Datachannel)
SFTP(SSH File Transfer Protocol)
-SSH 프로토콜 일부인 SSH 응용요소로써, 쌍방향 파일 전송을 위한 인터페이스 명령어 세트
를 사용하는 형태
FTP와는 완전히 다르고, 독립된 파일 전송 어플리케이션으로써 SFTP
SFTP 포트 : SSH가 22번 사용
실습1
Windows10에서 프로그램을 이용해 FTP서버 기능을 활성화 하여 각 동작모드에 대한 패킷을 분석한다.
IP 대역 : 192.168.253.0/24
VMnet1의 DHCP 사용
Actvie 모드 사용하기
1. R1 IP 받아오기
2. 서버 IP받아오기
3. Filezilla-server 프로그램 사용하여 서버 기능 사용하기
계정을 만들어주고 경로설정을 해준다.
R1에서 FTP 접속 설정하기
하지만 방화벽을 열어주지 않아서 실패하게 된다.
FTP server에서 방화벽 열어주기
윈도우에서 방화벽은 2가지 방법으로 열어줄 수 있다.
1. 포트번호
2. 프로그램
필자는 프로그램으로 방화벽을 열어주겠다.
방화벽을 열어주면 성공적으로 확인 할 수 있다.
서버에서 전송 파일 확인하기
Pasv모드 사용하기
passive 모드로 3721번을 사용했다.
R1에서 passive모드로 설정한다
21번 3721번 포트번호를 만들어준다.
똑같이 ftp running-config를 전송한다.
서버에서 전송 파일 확인하기
Tftp모드 설정
TFTP
Windows10 tftp32.exe사용하기
tftp경로를 지정해주고 Tftp의 포트는 69이다.
방화벽을 허용해주는 방법은 2가지가 있다
1. 프로그램으로 적용
2. 포트번호
나는 프로그램으로 방화벽 매칭을 시켜주었다.
R2에서 TFTP서버로 Running-config 전송하기
실습2
실습환경
server : CentOS7 - vsftp사용
client : Windows 10 - file zilla client
리눅스에서 vsftpd 설치
배너 설정하기
배너 위치를 설정해주고 파일을 만든다.
chroot 설정을 파일로 해준다.
Active모드
Passive모드 추가설정 해주기
위의 설정들이 /etc/vsftpd/vsftpd.conf 파일에서 설정 해 준다.
Passive모드이기 때문에 인증포트 21과 30000~30100포트를 열어준다.
확인하기
filezilla에서 passive모드 접속 설정을 한다.
FTP 패킷
ID, Passwd까지 평문으로 보이게 된다.
중간과정에서 Pasv라는 패킷도 보이게 된다.
FTP-DATA
FTP는 Passive인지 Active인지 Client가 선택하게 된다.
Active mode일 때
35946번호는 client에서 보내는 포트
21번은 서버에서 응답하는 포트번호이다. 이때 출발지와 도착지에 따라 Active, passive로 나뉘게 된다.
Passive mode일 때
3721은 직접 Passive 설정해준 포트번호가 나온다.
TFTP
69번 UDP를 쓴다
block을 나누어서 데이터 전송을 하게된다.
'Server' 카테고리의 다른 글
DHCP(실습) (0) | 2022.06.19 |
---|---|
CA(Certification Authority) 인증기관 (0) | 2022.06.13 |
CDN(Content Delivery Network) (0) | 2022.06.13 |
Linux Server 3일차(DNS) (0) | 2022.01.21 |
Linux Server 1일차(dhcp) (0) | 2022.01.17 |