본문 바로가기
카테고리 없음

[Linux] 파일 송신/수신 서비스 FTP 개념 & 종류 ①

by 떵해이 2020. 12. 28.
300x250

CentOS 7, 그래픽 환경 GUI, root(관리자)계정으로 실행하였습니다.

 

● 목    차 ●

1. FTP 개념 & 종류 & FTP 모드    

2. FTP 구축 (vsftpd) & 윈도우에서 'cmd' 와 '탐색기' 로 FTP 접속(+기본 명령어)    

3. 윈도우에서 cmd로 FTP 파일 업로드/다운 & 윈도우에서 탐색기로 FTP 접속    

4. FTP 설정 파일 분석 & 설정 파일 추가 옵션    

5. filezilla (파일질라) 설치 & WinSCP 설치 & 알FTP 설치    


○ FTP 란?

    ▷ File Transfer Protocol TCP/IP 환경에서 파일 전송 프로토콜의 약자

    ▷ 특수한 TFTP를 제외한 FTP는 TCP만을 사용

    ▷ 파일을 옮기는 용도로 보통 사용 (VMware에서 외부로 빼낼 때 용이함)

 

 

    ▷ 윈도우에서 리눅스(유닉스)에 접속하려면 프로그램을 이용하여야 함

        (따로 윈도우에 설치하면 cmd에서도 ftp를 사용할 수 있습니다.)

    vsftpd (Very Secure FTP server Daemon 약자)로 ftp를 컨트롤 할 수 있습니다.

        리눅스(유닉스)환경에서 보안성과 성능이 우수한 FTP서버 입니다.

 

 

    ▷ FTP 모드가 2가지 존재 (Active 모드, Passive 모드)

        모드는 서버가 아닌 사용하는 클라이언트가 결정합니다.

        (FTP 모드에 의해 포트번호가 달라짐)

    ▷ FTP는 일반적인 서비스랑 다르게 Data포트, Command(Control)포트 2개를 사용

        (기본적으로 Data 전송 포트는 20번, Command 제어용 포트는 21번)

 

 

    ▷ FTP 서비스는 2가지 종류의 계정을 이용할 수 있음

        1. 시스템에 등록되어 있는 사용자들을 위한 FTP

        2. 익명의 모든 사용자에게 개방하는 익명 FTP (Anonymous FTP 서비스라고 함)

           (이 서비스는 다수를 위한 계정이므로 파일을 다운받기만을 위한 것이고,

            업로드는 보안 때문에 금지)

 

FTP service 종류

기본적으로 FTP 서비스는 암호화하지 않은 채로 파일을 전송하기 때문에 보안에 취약합니다.

이런 이유에 의해서 여러가지 보안 기술을 사용한 FTP 서비스가 생겨났다고 생각하시면 됩니다.

이보다 종류가 더 있는 것으로 알고 있지만 제가 아는 3가지에 대해 특징을 적어보도록 하겠습니다.

vsFTP

- Very Secure File Transfer Protocol 약자
- Red Hat Linux계열에 기본FTP 패키지로 사용
- 사용자 설정과 IP를 설정할 수 있음
- PAM 지원
  (PAM이란?
   리눅스에서 사용하는 인증 모듈로써 응용 프로그램(서비스)에 대한 사용자의 인증이 필요할 때
   인증을 처리하는 모듈 or 사용자의 사용 권한을 제어하는 모듈)

SFTP

- Secure File Transfer Protocol 약자 (또는 SSH File Transfer Protocol 약자)
- 기본 보안이 SSH로 강화된 파일 전송 방식
- 파일 전송 시 로그인 정보, 파일 정보를 암호화해서 통신
- SFTP를 지원하는 프로그램을 사용해야 함
- SSH에 chroot를 구현하지 않으면 보안상 문제가 발생
   (일반 사용자가 상위 디렉토리로 이동하는 문제가 발생)

FTPS

- FTP SSL 또는 FTP Secure 약자
- SSL은 Secure Sockets Layer 약자로써 암호화 프로토콜을 지원
- client와 server 사이의 인증 또는 암호화 통신을 위해서 사용

 

※ 간단 설명 (tip)

● Command Connection (=Control Connection)

 

    ▷ 21번 포트

    ▷ 명령 or 응답 형태의 제어 정보를 전송

    ▷ 전체 FTP 서비스 사용하는 동안 계속 연결 상태 유지

 

 

● Data Connection

 

    ▷ 파일이 전송될 때 생성되는 데이터 연결

    ▷ 20번 포트 or 시스템 예약 포트가 아닌 1024번 이후 포트

    ▷ 파일이 전송때 연결하고 완료되면 폐쇄

 

○ FTP 모드

FTP 모드는 2가지가 있고, 서버가 아닌 클라이언트가 결정합니다.

 

● Active Mode

 

    ▷ client는 FTP 서버의 Data포트에 직접 접속할 수 없음

    ▷ FTP 서버가 데이터 전송을 위해 접속해야할 client 포트를 알려줌

    ▷ FTP 서버에서 client 포트에 접속하는 것이 침입으로 간주되어 방화벽에 차단되는 경우가 생김

 

     서버에서 클라이언트로 접속을 시도하는 방법

 

 

통신 순서 (Active Mode)

 

1. 먼저 Client에서 서버의 Command포트에 접속하여 서버에게 Data포트를 알려줍니다.

여기서 Client의 Command포트는 시스템 예약 포트를 제외한 1024~65536사이의 랜덤 포트이며,

Data 포트의 값 = Command포트 랜덤값 + 1 이 됩니다.

 

2. 서버는 Client Command 포트에 응답을 회신합니다.

 

3. 서버의 Data 포트에서 클라이언트 Data 포트(3334)에 접속을 합니다.

 

4. Client Data 포트에서 서버에 회신을 합니다.

 

5. 이제 통신이 연결되었으면

서버 Data 포트(20) -> Client Data 포트로 파일 리스트를 전송

그리고 서버 Command 포트(21) -> Client Command 포트로 전송 완료 신호 보냄

 

발생하는 문제점 (Active Mode)

 

1. Client쪽에 방화벽이 있을 경우 정상적인 데이터 전송이 불가능

 

문제 해결

-> Passive Mode를 만듬

 

 

※ 방화벽이란 ?

방화벽은 시스템 보호, 네트워크 보호 2개가 있습니다.

(CentOS 7 이상의 경우에는 firewall가 침입을 차단)

 

inbound -> 외부에서 내부로 접근 (시스템 방화벽)

outbound -> 내부에서 외부로 접근 (시스템 방화벽)

forward -> 네트워크 보호 방화벽

 

일반 사용자들의 방화벽은 보통 inbound는 모든 수신 거부(deny)

                                         outbound는 모든 수신 허용(allow)을 합니다.

 

 

● Passive Mode

 

    ▷ PASV라고도 불림

    ▷ 서버가 클라이언트로 접속을 시도하는 문제점을 해결하기 위한 FTP 연결 모드

    ▷ 두개의 포트 모두 Client에서 서버에 접속 (Active Mode의 문제 해결)

    ▷ Client는 PORT 명령어 대신 PASV명령어를 호출

     서버에 사용되지 않는 랜덤 포트를 열어 Client Data 포트랑 연결하여 진행

        (보안을 강화하기 위해 기존 20번 포트를 사용하지 않음)

 

     Active Mode의 문제점을 보완, Client에서 서버로 접속하는 방법

 

 

통신 순서 (Passive Mode)

 

1. Client Commend 포트(랜덤 포트)가 서버의 Command 포트(21)에 접속, PASV 명령어 호출

 

2. 서버는 Data포트를 Client에게 전송

여기서 서버는 원래 사용하던 Data포트인 20번이 아닌 다른 랜덤 포트 번호를 줍니다.

 

3. Client는 데이터 연결을 위해 자신의 Data 포트(Command 포트 + 1)로 서버가 지정한

   랜덤 포트로 연결

 

4. 서버가 Client Data 포트에 응답을 회신

 

5. 이제 통신이 연결되었으면

서버 Data 랜덤 포트(6666) -> Client Data 포트로 파일 리스트를 전송

그리고 서버 Command 포트(21) -> Client Command 포트로 전송 완료 신호 보냄

 

발생하는 문제점 (Passive Mode)

 

1. 서버쪽에 랜덤 포트는 1024 ~ 65535 사이의 포트를 랜덤으로 할당한다.

네트워크 연결이 있을 때마다 신규 포트를 이용

그렇게 되면 대량 접속을 하면 네트워크 자원이 부족하게 되어 접속 장애 발생

 

문제 해결

-> FTP 서버가 사용할 포트 범위를 지정

    (Passive Mode로 접속 시 사용할 수 있는 랜덤 포트 범위를 제한)

 

 

2. Client가 Passive모드 지원하는지 여부에 따라 문제 발생

 

문제 해결

-> 웹 브라우저를 FTP Client로 이용

    대부분의 웹 브라우저는 # ftp://URL 을 이용하여 FTP 접속할 때 Passive모드만 지원

 

반응형

댓글