티스토리 뷰

dev

ftp, ftps, sftp(ssh) 개념 정리

IT's me 2021. 7. 26. 18:33

IT를 전공하거나 아니면 실무를 접하다보면 이 놈의 ftp, ftps, sftp(ssh) 프로토콜에 대해서 이야길 하게 되거나 듣거나 사용하게 됩니다만 개념이라도 좀 정확하게 갈무리하고 접해야한다는 생각이 듭니다. 

 

PROTOCOL

그냥 FTP 하면 파일질라나 사용하고 telnet 이나 ssh를 이용한다고 해서 putty만 사용할 줄 안다고 해서 다가 아닌것 같습니다. 적어도 IT를 공부하고 일을 해나가야 하는 입장이라면요. 다른 직군이라 하더라도 최소한의 기본 개념은 알고 가는 것이 좋을 것 같네요. 코더를 하려고 해도 기본적인 지식은 필요하니까요. 

 

지난번에 http와 https에 대한 설명을 했으니 남은 대표적인 프로토콜에 대해서 알아보겠습니다. ( 알기 쉽게 설명하는 http와 https의 차이점 ) 이번 포스팅에서는 ftp ftps, sftp입니다.

 

먼저, 프로토콜이란 뭘까?

두가지를 비교하기 전에 프로토콜의 정의는 알고 계시죠? 네, 디바이스 간에 데이터를 교환하기 위한 통신 규약이라고 알고 있으면 됩니다. 잘 와닿지 않는다고요?

 

예를 들어 봅시다. 사람들을 디바이스로 규정하면 우리가 대화하기 위해 사용하는 언어를 프로토콜이라

얘기할 수 있겠죠? 한국은 KLP ( Korea Language Protocol ) 이런식으로 말입니다.

 

조금 더 얘기해볼까요? http, ftp와 같은 프로토콜은 IETF( Internet Engineering Task Force, 인터넷 기술표준화위원회)에서 RFC ( Request For Comment)라는 항목으로 번호를 매겨서 작성하고 있습니다. ( https://www.ietf.org/rfc/ )

 

쉽계 애기하자면 IETF는 훈민정음을 창제한 세종대왕님과 같은 역할인 것이고 RFC는 훈민정음과 같은 역할이라 보면 될것 같습니다.

[한국민족문화대백과] : 훈민정음이 만들어진 사실이 기록에 난 것은 ≪세종실록≫ 25년(음력 1443년)이다. 그 해 12월조에 “이 달에 임금께서 몸소 언문 스물여덟 글자를 만들어내니……이것을 훈민정음이라 부른다(是月上親制諺文二十八字……是謂訓民正音).”라는 기록이 있다. 세종대왕 만쉐이...

 


 

FTP ( 21 포트 )

FTP는 File Transfer Protocol로 말 그대로 파일을 전송하는 통신 규약입니다. 기본 포트는 21이지만 바꿔서 사용하는 경우도 있겠고요, 옛날엔 좀 사용했는데 지금은 보안이 안좋아서 실무에서는 사용하지 않습니다. 

 

FTP는 명령어를 전달하는 21 포트와 데이터를 전달하는 20(혹은 랜덤) 포트가 있다고 기억하면 되겠습니다. 데이터를 전달하는 방식에 따라 액티브와 패시브 모드가 있는데. 좋은 그림이 있어 가져왔습니다.

텍스트 추가

~/d3linux 인듯..

 

FTP는 서버에서 서비스를 열면 클라이언트에서 접속을 해서 명령어들을 이용해서 데이터(파일)를 가져가거나 업로드하거나 그런건데... 예를 들어 생각해보자면 철수(서버)와 영희(클라이언트)가 있다면 액티브 모드는 영희(클라)가 철수(서버)에게 번호(포트)를 알려줘서 철수가 전화를 걸어 얘길 하는거고 패시브 모드는 철수(서버)가 영희(클라)에게 번호(포트)를 알려줘서 영희가 전화를 걸어 얘길 하는 그림이라고 생각하면 될듯 합니다. 

 

ftp는 명령어 방식으로 커맨드 창으로도 이용할 수 있고 여러가지 gui 프로그램으로도 이용이 가능하죠~ 윈도우 탐색기, 파일질라, 알ftp 등등이요~

 

위키 - ftp 사용화면

 

파일질라 GUI 프로그램

 

GUI 프로그램도 명령어를 뒤에서 입력해주는 방식이니 사용 방법은 동일하다고 할 수 있습니다. 사실 명령어를 직접 타이핑 하면서 사용할 일은 별로 없는 것 같습니다. 주거니 받거니 패킷을 보면 RFC에 정해진 명령어를 토해 파일 리스트를 얻어오고 다운받고 업로드하고 그런거지요~ 아니 그렇겠습니까?

 

이렇게 ftp가 두개의 포트를 이용하는걸 알았습니다. 그래서 21번 포트로 접속이 되더라도 사용 모드에 따라 서버의 20번 포트 혹은 클라이언트의 방화벽 정책에 따라서 접속만 되고 실제 파일은 받거나 올리지 못하는 일이 발생합니다. 이 경우는 모드를 변경해보거나 방화벽 정책을 확인해보도록 합시다. ㅎㅎ

 


 

FTPS (SFtp가 아니다)

ftps 는 https 때와 동일한 개념입니다. 인터넷을 검색해보면 맨 TLS/SSL 을 거쳐서 안전한 채널이라고만 나오는 자료가 많은데 결국 TLS/SSL을 거친다는 의미는 공개키 암호화 방식을 이용하여 통신 라인을 거쳐다는 21번, 20번 포트를 안전하게 암호화한단 말입니다. ( 거듭 말하지만 포트는 설정에서 변경 가능 )

 

SSL/TLS 데이터 암호화 개요

공개키 암호화 방식은 결국 서버 공개키로 암호화하면 서버가 가진 비공개 개인키로만 풀수 있다. 라는 대전제로 공개키가 노출되어도 문제가 없기 때문에 할 수 있는 암호화 방식입니다. 좀 더 쉽게 얘기하자면 서버가 건네주는 보자기(공개키)로 클라이언트가 감싸서 건네주면 그 보자기의 내용물은 서버만 열어볼 수 있다는 논리입니다. 

 

FTPS 장점

 

  • SFTP와 달리 FTPS를 사용하면 사람이 통신을 이해하고 읽을 수 있습니다.
  • 서버 간 파일 전송 실행을 허용합니다.
  • SSL/TLS는 강력한 인증 메커니즘 역할을 하는 X.509 인증서 기능과 함께 제공됩니다.
  • 여러 인터넷 통신 인프라에 FTP 및 SSL 지원이 내장되어 있습니다.

 

FTPS 단점

 

  • 프로토콜에는 디렉토리 목록에 대한 표준화된 형식이 포함되어 있지 않습니다.
  • FTPS는 보조 데이터 채널의 사용을 요구하므로 방화벽 뒤에서 사용이 복잡해집니다.
  • 프로토콜에는 인코딩 또는 파일 이름 문자 집합에 대한 지침이 없습니다.
  • 모든 FTP 서버에서 SSL/TLS 지원을 사용할 수 있는 것은 아닙니다.
  • 프로토콜은 디렉토리 또는 파일 속성을 보호하고 수정하는 표준 방법을 정의하지 않습니다.

 

SFtp (포트 22)

sftp는 ssh의 파일 전송 버전이라 생각하면 됩니다. FTP 이름을 달고 있지만 실상은 ssh와 같은 방식을 사용하니 ssh 에 대해서 알아야겠죠? ssh(Secure SHell) 는 텔넷(telnet)의 보안 버전이죠. 실무에서는 sftp와 ssh만을 이용하고 있네요. ssh(sftp)에서 터널링을 하는 방법은 ftps에서의 방식과 상당히 유사합니다. 

 

SSH는 3개의 프로토콜로 이루어져있죠.이 그림을 알아야 ssh에 대해서 조금은 안다고 얘기할수 있을 거 같습니다.

 

SSH 프로토콜 스택

 

아래 그림은 첫번째. 전송 프로토콜 부분입니다. 얘도 결국 키를 교환하여 암호화 한다는 데 ftps와 맥을 같이 하고 있습니다만 위에 신원확인용 스트링 교환이라는 부분이 다르네요. 다른건 비슷한거 같습니다. ssh-1은 보안 취약점으로 ssh-2 버전을 이용한다고 합니다. 

 

ssh 전송 계층

 

사용자 인증 프로토콜 부분에서는 우리가 알고 있듯이 공개키, 패스워드, 호스트 인증방식을 사용할 수 있죠. 나머지 하나 연결 프로토콜이 있는데 이 부분은 따로 포스팅을 해야할 부분인듯 합니다.

 

기억할 건, SFtp는 ssh 방식을 이용하여 안전하게 암호화된 구간에서 ftp 기능을 이용할 수 있다는 겁니다.

 

SFtp 장점

 

  • SFTP는 하나의 연결만 필요하며 데이터 연결이 필요하지 않습니다.
  • 연결이 안전하게 보호됩니다.
  • SFTP는 기계가 읽을 수 있고 균일한 디렉토리 목록을 자랑합니다.
  • 프로토콜에서 제공하는 추가 기능에는 파일 잠금, 속성 조작, 권한 작업 및 더 많은 기능이 포함됩니다.

SFtp 단점

 

  • 이 프로토콜은 사람이 읽을 때 "있는 그대로" 기록할 수 없음을 의미하는 이진 통신에 관여합니다.
  • SSH 키의 유효성 검사 및 관리는 더 복잡합니다.
  • 여러 공급업체의 소프트웨어 타이틀 간에 호환성 문제를 일으킬 수 있는 여러 SFTP 구성 "표준"이 있습니다.
  • 프로토콜은 서버 간 복사 외에 재귀 디렉터리에 대한 제거 작업을 제공하지 않습니다.
  • .NET 및 VCL에는 기본적으로 SSH/SFTP 지원이 포함되어 있지 않습니다.

 

SFTP에서 추가적으로 기억할만한 요소로서 SFTP는 SSH 기반으로 동작하는 FTP가 아니며 국제 인터넷 표준화 기구(IETF) SECSH 워킹 그룹에 의해 처음부터 설계된 새로운 프로토콜입니다. 

(SFTP는 SSH 확장 프로토콜입니다. )

 

 

  SFTP FTPS
데이터 교환 SFTP는 고유한 데이터 및 명령 채널을 사용하지 않습니다. SFTP 내에서의 전송은 고유한 형식의 패킷을 통한 단일 연결 수단을 통해 이루어집니다. 데이터 채널과 명령 채널은 FTPS 프로토콜에서 교환을 용이하게 하기 위해 두 개의 개별 채널로 사용됩니다.

명령 채널은 일반적으로 서버 21 포트에서 실행하여 서버 및 FTP 클라이언트 사이의 간단한 명령 교환을 관리하는 역할을한다.
따라서 데이터 채널 은 클라이언트(능동 모드) 또는 서버(수동 모드)에서 수신 대기하는 주문형 임시 포트를 사용하여 작동합니다. 이 채널은 파일 전송 또는 디렉토리 목록과 관련하여 데이터 교환을 담당합니다.
보안 데이터 암호화는 상호 합의된 암호화 암호를 통해 발생합니다. 공개 및 개인 키 배포를 통해 세션을 추가로 보호합니다. 이는 '공개 키 인증'이라는 대체 인증으로 볼 수 있습니다. FTPS 명시적 SSL 및 FTPS 암시적 SSL은 SSL 암호화를 사용하는 FTP의 보호된 변형입니다.

SFTP, FTPS 선택 판단

 

FTPS 클라이언트를 설치하는 것과 OpenSSH 패키지를 설치하여 공유할 수 있는 환경을 검토하여 더 적절한 것을 선택하는 것이 좋다. SFTP >> FTPS 가 좀 더 낫다. 

 

 

오늘은 IT쪽에 있다보면 꼭 접할만한 상식인 ftp, ftps, sftp(ssh) 개념 총 정리를 해봤습니다. 참고가 되시면 좋겠습니다. 감사합니다. 

 

참고.

 

https://www.msp360.com/resources/blog/sftp-vs-ftps/

 

SFTP vs. FTPS: Pros, Cons, What to Choose

While choosing between SFTP and FTPS, weighing the pros and cons of each option will allow users to have a better understanding of the available choices. Here is a head-to-head SFTP and FTPS comparisonthat overviews the advantages and limitations of each

www.msp360.com

 


댓글
최근에 올라온 글
최근에 달린 댓글