본문 바로가기

INFOSEC/ NETWORK

FTP ( File Transfer Protocol )

FTP(File Transfer Protocol)

- 직접 접근을 통한 정보 공유를 목적으로 개발 됨
- 1970년 후반 ~ 1980년 초반에 네트워크 상에서 파일을 전송 하기 위한 TCP 기반의 프로토콜

 

 

• 제어 연결


- FTP 세션이 연결될 때 생성되는 TCP연결
- FTP 세션이 유지되는 동안 계속 연결 상태를 유지 함
- FTP 명령과 응답과 같은 제어 정보를 전달
- PI(Protocol Interpreter, 프로토콜 해석기)가 제어 연결을 관리하고 명령을 처리 함
- 허용된 사용자만 서버에 접근하도록 통제 함 → 접근 제어
- 허용된 사용자가 사용할 수 있는 자원의 종류를 선정 함 → 자원 선별

 


• 데이터 연결


- 서버와 클라이언트간 공유되는 데이터가 전달될 때 마다 따로 생성되는 TCP연결
- 실제 데이터가 전송되는 연결 → 실제 파일을 보내고 받는 작업을 처리 함
- DTP(Data Transfer Process, 데이터 전송 프로세스)가 실제 데이터를 전달하는 동작을 처리 함
- DTP 사이에서 연결을 수립 함
- 서버의 디렉터리 목록 출력 등의 데이터 전송에도 데이터 연결이 필요 함
- 종류
- ACTIVE 방식 → 서버에서 데이터 연결을 시도 함
- PASSIVE 방식 → 클라이언트에서 데이터 연결을 시도 함

 

 

TCP 21,20

control(21),data(20)

 

 

Active, Passive 구분 -> 데이터 연결. ( 3way handshaking 시작점이 서버면 active. 클라이언트면 passive )

기본적으론 원래 Active

 

 

Active 모드의 문제점 

:  클라이언트 측에서 방화벽이 동작 중이면 서버가 시도하는 데이터 연결 요청이 차단될 수 있음

 

 

 

 

Control connection (제어 연결) 하기 위한 3way-handshaking 따로,

그 후에 Data Connection 을 위한 3way-handshaking 이 따로 또 함.

 

그 data-connection 을 위한 3way-handshaking TCP 연결을 서버에서 먼저 시작하면 Active. (20번 포트)

근데 이렇게 하면, 서버에서 먼저 시도한 것이기 때문에 (현실적으로 대부분의 환경이 NAT 인 것을 생각했을 때,)

데이터 전송 (명령어 실행에 대한 결과 출력, 실질적인 파일 전송 등등) 이 불가능함.

따라서 일반적으로 웬만하면 다 Passive 모드를 지원하고 Passive mode 로 실행이 됨.

 

클라이언트에서 시작하는 것이 Passive 모드. (21번 포트). 

 





 

 실습

 

root@localhost ~]# chkconfig --list | grep vsftpd

vsftpd          0:해제 1:해제 2:해제  3:해제 4:해제 5:해제 6:해제

[root@localhost ~]# chkconfig vsftpd on

[root@localhost ~]# chkconfig --list | grep vsftpd

vsftpd          0:해제 1:해제 2:활성  3:활성 4:활성 5:활성 6:해제

 

//이렇게 하면 부팅 후에도 vsftpd 가 on 될 수 있음.

 

 

 


 

* Active Mode 실습

서버설정

pasv_enable=NO

 

/etc/vsftpd/vsftpd.conf

 

 

 

클라이언트에서 서버로 ftp 접속했을 때의

와이어샤크로 잡은 패킷

 

 

리눅스 클라이언트로 하면 계속 자기가 알아서 passive 모드로 들어가버림.. (대부분의 os 들이 거의 원래 이럼. )

 

그래서 윈도우xp 를 클라이언트로 다시 해보면 Active mode 로 3way handshaking 한 거를 확인할 수 있다.

 

20번 포트 이용. Active mode 확인.

 

 

 


 

 

* mget  테스트 

 

FTP 서버]

[root@localhost ~]# touch /root/11.txt /root/12.txt /root/13.txt

[root@localhost ~]# ls

 

FTP 클라이언트]

ftp> ls

227 Entering Passive Mode (200,200,200,9,223,88).

150 Here comes the directory listing.

-rw-r--r--    1 0 0             6 Sep 19 11:14 1.txt

-rw-r--r--    1 0 0             0 Sep 19 11:16 11.txt

-rw-r--r--    1 0 0             0 Sep 19 11:16 12.txt

-rw-r--r--    1 0 0             0 Sep 19 11:16 13.txt

 

 

 


 

FTP는 익명 계정을 허용함.

 

서버의 자원을 이용하려면 account > permission , ownershtip

 anonymous(익명)

- 이름이 없음

- ftp의 경우 익명을 표시 anonymous

 

ftp 사용자가 접속을 하면 사용자의 홈디렉터리로 접속

익명사용자인경우 

[root@localhost pub]# pwd

/var/ftp/pub

 

 


 

FTP 접속시 메시지 

#ftpd_banner=Welcome to blah FTP service.

ftpd_banner=warning!! this is JINA's FTP Server

 

 

 


 

 

chroot_local_user=YES 하게 되면,

모든 계정에 대해 chroot 가 적용됨. (상위 경로로 더 못올라가게. 최상위가 제한되는 거.)

 

chroot_local_user=NO 하면 아래 두 개의 옵션으로, 예외로 계정을 지정할 수 있음.

 

'INFOSEC > NETWORK' 카테고리의 다른 글

시스템보안운영  (0) 2019.09.20
시스템보안솔루션 종류  (0) 2019.09.20
SMTP, POP3  (0) 2019.09.18
DNS  (0) 2019.09.16
Static NAT 설정  (0) 2019.09.06