AWS EC2 FTP SERVER 구축

Date:     Updated:

카테고리:

태그:

1. AWS EC2 VSFTP 설치

VSFTP 설치

하드웨어 : AWS EC2 t2.micro OS : Amazon linux 2023

FTP는 특이 사항이 없으니 yum을 통해 설치해보자

# vsftpd 설치
sudo yum -y install vsftpd
# 설치 결과
Installed:
  vsftpd-3.0.5-1.amzn2023.0.2.x86_64 

Complete!

2. AWS EC2 VSFTP 설정

vsftpd.conf 파일 수정

sudo vi /etc/vsftpd/vsftpd.conf

image

anonymous_enable=NO 를 확인한다.

초기 설정이 YES인 경우도 있으니 YES인 경우 NO로 변경한다.

이 값이 YES인 경우 익명계정으로 FTP 접속이 가능해 진다. 아무나 들어와서 파일을 쓰거나 읽을 수 있다.

vsftps 모드 설정

FTP는 2가지 모드로 동작한다. Active, Passive 2개의 모드로 동작한다. 각 모드는 2개 이상의 포트가 연결을 맺고 데이터를 전송한다.

  1. Command 포트 : 연결이나 명령어를 전달
  2. Data 포트 : Data를 주고 받음

대부분의 FTP의 기본 설정은 Active 모드이다. 기본설정을 사용하면 21번은 Command, 20번은 Data로 사용된다. 그래서 항상 보안에서 21,20번 포트를 방화벽 설정을 해야한다. 그런데 포트가 고정되면 해킹이 위험이 있으니 환경 설정을 통해 변경이 가능하다.

active 모드

image

동작 단계

  1. FTP Client에서 FTP Server서버로 인증 요청을 한다. (클라이언트 포트 : 2222, 서버 포트 :21)
  2. Client PC에서 DATA 전송 포트번호(2223)를 패킷에 포함하여 서버로 전달한다.
  3. FTP Server에서 Client PC로 OK 응답을 보낸다.
  4. FTP Server에서 Data포트(20)로 Client의 Data포트(2223) 연결 요청한다. (클라이언트 포트 : 2223, 서버 포트 :20)
  5. FTP Client는 Server에게 OK 응답을 보내면 연결 완료

별문제가 없는 것 처럼 보이지만 4번에서 장애가 발생한다. FTP서버를 구축한 SERVER측은 연결포트든 DATA포트든 설정을 해서 지정할 수 있고 당연히 방화볔도 해지가 되어 있을 것이다.
그런데 Client PC의 포트번호 1024이상 중에서 사용 가능한 포트를 랜덤으로 지정해서 접속 및 Data포트로 지정해서 전달한다.
Client PC가 서버가 되어서 인바운드 데이터를 처리해야한다. 이 때 Client PC나 네트워크 장비에서 방화볔이 있다면 정상적으로 DATA를 주고 받을 수가 없다. 만약 Client PC의 네트워크 장비에서 포트 보안이 걸려있다면 Active로는 아마 접속이 힘들 것이다. 최악의 경우 접속이 될 때도 있고 안될 때도 있는 이상한 경험을 할 수도 있다.

passive 모드

image

동작 단계

  1. FTP Client에서 FTP Server서버로 인증 요청을 한다. (클라이언트 포트 : 2222, 서버 포트 :21)
  2. Client PC Passive Mode로 연결할 것을 전달한다.
  3. FTP Server에서 FTP Client로 OK 응답과 데이터 포트(1025)를 전달한다.
  4. Client PC에서 사용가능한 포트(2223)로 Server 데이터 포트(1025)으로 연결 요청한다.(outbound)
  5. FTP Server가 Client PC에게 OK 응답을 보내면 연결 완료

Active 모드와 다르게 Client는 인바운드 접속이 없다. 서버에서 지정된 포트로 연결을 하여 처리가 FTP 사용이 가능하다. 서버측에서는 설정을 통해 연결포트 지정, 데이터 포트 범위 지정 등이 가능하다.

이번 FTP SER 구축은 Passive모드를 기준으로 진행한다.

vsftps passive 모드 설정

pasv_enable=YES
allow_writeable_chroot=YES
pasv_min_port=12000
pasv_max_port=12100

passive 모드를 적용 root 접근허용 포트 범위 12000 - 12100 환경 설정을 한 후 서버를 기동한다.

sudo systemctl start vsftpd

AWS EC2 방화볔 설정

image

AWS EC2 대시보드 > 보안그룹으로 이동한다.

사용 중인 보안 그룹을 클릭한다.

image

인바운드 규칙 편집을 클릭한다.

규칙 추가를 클릭한다.

image

위와 같이 범위포트를 지정하여 설정한다. 보안을 위해선 특정 IP대역을 지정하는 것이 안전하다.

설정이 완료되었으면 규칙 저장을 클릭 한다.

3. FTP 접속 해보기

USER 생성

# user생성
sudo useradd testftp

# 패스워드 입력
sudo passwd testftp
password input : 
password input retry : 

유저를 생성하고 패스워드를 지정한다..

FTP 접속하기


개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
댓글 또는 메일로 알려주시면 감사하겠습니다.

맨 위로 이동하기

aws 카테고리 내 다른 글 보러가기

댓글 남기기