Ubuntu에서 FTP 서버 구성하기

FTP(File Transfer Protocol)는 컴퓨터 네트워크에서 호스트 간에 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜입니다. 이 프로토콜은 클라이언트-서버 모델을 기반으로 하며, 사용자가 서버에 파일을 업로드하거나 서버에서 파일을 다운로드할 수 있도록 합니다. FTP는 원격 파일 시스템에 접근하는 데 사용되는 가장 오래된 프로토콜 중 하나이며, 여전히 널리 사용되고 있습니다. FTP 더 알아보기

그러나, FTP는 데이터 전송 시 보안에 취약한 문제가 있습니다. 이는 FTP가 기본적으로 암호화를 지원하지 않기 때문에 네트워크를 통해 전송되는 정보가 중간에서 가로채일 수 있기 때문입니다. 이러한 이유로, 최근에는 SFTP(Secure File Transfer Protocol)를 사용하는 것이 권장되고 있습니다. SFTP는 SSH(Secure Shell) 프로토콜 위에서 작동하여 파일 전송을 안전하게 수행하도록 합니다.

그러나, 특정 상황에서는 여전히 FTP 서버가 필요한 경우가 있습니다. 예를 들어, 내부 네트워크에서만 접근 가능한 서버에서는 FTP를 사용하여 파일을 손쉽게 전송할 수 있습니다. 또는, 레거시 시스템이나 오래된 장비와의 호환성을 유지해야 하는 경우에도 FTP가 필요할 수 있습니다.

FTP 서버는 다양한 방식으로 구현이 가능하지만 이번글에서는 vsftpd(Very Secure FTP Daemon)라는 도구를 중심으로 설명하겠습니다. vsftpd는 강력한 보안 기능을 갖춘 FTP 서버로, 속도와 안정성 면에서도 우수한 성능을 보입니다. 이 도구를 이용하면 손쉽게 FTP 서버를 설정하고 관리할 수 있을 것입니다. vsftpd 더 알아보기

아래 설명은 comeinsidebox.com 에서 테스트 및 검증 후 작성 된 내용이지만 이것이 본문의 내용의 정확성이나 신뢰성에 대해 보증을 하는 것은 아니니 단순 하게 참고용으로 확인바랍니다.

튜토리얼 환경: Ubuntu 22.04, vsftpd 3.0.5, FileZilla 3.66.5,

vsftpd FTP 서버 설치

가장 인기 있는 FTP 서버 중 하나인 vsftpd를 이용해 FTP 서버를 구성합니다.

패키지-업데이트
패키지 업데이트

vsftpd를 설치하기 전 다음 명령으로 설정된 소프트웨어 저장소의 위치에서 최신 패키지 정보를 다운로드 받아 로컬의 패키지 데이터베이스를 업데이트 합니다. apt-get은 Ubuntu 및 그 외 Debian 기반의 Linux 배포판에서 사용되는 패키지 관리자입니다. apt 더 알아보기

apt-get update
vsftpd-설치
vsftpd 설치

패키지 업데이트가 완료되면 다음 명령으로 vsftpd를 설치합니다. 설치는 그리 오래 걸리지 않습니다.

apt-get install vsftpd
Which-services-should-be-restarted
Which services should be restarted

설치가 완료되면 Which services should be restarted? 라는 창이 보여지게 되는데 이 메시지는 vsftpd 패키지 설치 후 시스템이 새로 설치된 패키지와 연관된 몇몇 서비스를 재시작해야 할지 묻는 것이니 선택 후 <OK> 합니다.

  • dbus.service: 시스템 간 메시지 버스 시스템인 D-Bus의 서비스입니다. 이는 프로세스 간 통신(IPC)을 담당합니다.
  • networkd-dispatcher.service: systemd-networkd의 이벤트에 대한 스크립트 디스패처입니다. 네트워크 상태의 변화에 따라 필요한 작업을 수행합니다.
  • systemd-logind.service: 시스템 로그인 관리를 담당하는 서비스입니다. 사용자 로그인, 로그아웃 등을 처리합니다.
  • user@1000.service: 특정 사용자(UID 1000)에 대한 사용자 서비스입니다. 이 서비스는 해당 사용자가 로그인한 동안에만 실행됩니다.
실행-상태-확인
실행 상태 확인

다음 명령으로 vsftpd가 정상적으로 실행 중인지 현재 상태를 확인할 수 있습니다.

service vsftpd status
설정-파일-위치-이동
설정 파일 위치 이동

다음 명령으로 해당 경로로 이동한 뒤 ls 명령으로 파일을 확인하면 vsftpd.conf를 찾을 수 있습니다.

cd /etc/
설정-파일의-설정-값-찾아-수정
설정 파일의 설정 값 찾아 수정

이 vsftpd.conf 파일을 vi 또는 nano 에디터를 통해 수정합니다. 본문에서는 vi 에디터를 사용하기 위해 vi vsftpd.conf 명령으로 파일을 열고 아래 정리해준 값들을 찾아 하나씩 수정합니다. vi 에디터를 사용 중이라면 명령 모드에서 /와 검색할 텍스트를 입력 후 Enter키로 실행하면 검색어를 찾을 수 있습니다. n 키와 N키로 이전과 이후 검색어를 찾을 수 있습니다.

# FTP 접속을 허용
listen=YES

# IPv6를 위한 vsftpd 실행 차단
listen_ipv6=NO

# 익명 FTP 접속을 차단
anonymous_enable=NO

# 로컬 사용자 FTP 접속을 허용
local_enable=YES

# 로컬 사용자가 파일 쓰기를 허용
write_enable=YES

# FTP 사용자의 HOME 디렉토리에 chroot 적용
chroot_local_user=YES
PASV-모드-옵션-추가
PASV 모드 옵션 추가

PASV모드를 사용하기 위해서는 아래 내용을 설정 파일 하단에 추가로 작성하고 :wq 저장하고 종료합니다. 지정된 포트는 방화벽에서 추가적으로 포트를 오픈해야 하며 이 값은 상황에 따라 수정할 수 있습니다.

# PASV 모드를 허용
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=10100

FTP(File Transfer Protocol)에는 크게 두 가지 연결 방식이 있습니다. Active 모드와 Passive(PASV) 모드입니다. 이 두 모드는 FTP 클라이언트와 서버 사이의 데이터 연결을 어떻게 설정하는지에 차이가 있습니다. 대부분의 경우, PASV 모드가 Active 모드보다 더 안정적이고 호환성이 높습니다. 그래서 현재는 대부분의 FTP 클라이언트와 서버에서 PASV 모드를 기본으로 사용합니다.

  • Active 모드: 이 모드에서는 클라이언트가 데이터 연결을 위한 포트를 열고, 서버에 이 포트 정보를 알려주어 서버가 이 포트로 연결하게 됩니다. 따라서 클라이언트 측의 방화벽이나 라우터 설정에 따라 연결에 문제가 발생할 수 있습니다.
  • Passive (PASV) 모드: 이 모드에서는 서버가 데이터 연결을 위한 포트를 열고, 이 포트 정보를 클라이언트에게 알려주어 클라이언트가 이 포트로 연결하게 됩니다. 따라서 클라이언트 측의 방화벽이나 라우터 설정에 영향을 받지 않습니다. 이 모드는 방화벽이나 NAT 라우터 뒤에 있는 클라이언트가 FTP 서버에 연결할 때 유용합니다.
서버-재시작
서버 재시작

설정을 적용하기 위해 다음과 같이 명령해 vsftpd를 다시 시작 합니다.

sudo systemctl restart vsftpd
nginx service Failed to parse PID from file 오류 해결 방법

방화벽 오픈

vsftpd를 사용하려면 해당 서버의 방화벽에서 FTP 서비스가 사용하는 포트를 개방해야 합니다. FTP는 기본적으로 21번 포트를 사용하며, 이 포트를 개방하지 않으면 외부에서 FTP 서비스에 접속할 수 없습니다.

21번-포트-개방
21번 포트 개방

사용 중인 방화벽에서 21번 포트를 개방합니다. 본문에서는 UFW를 기준으로 안내합니다.

sudo ufw allow 21
PASV-포트-개방
PASV 포트 개방

그리고 PASV 모드에서 FTP 서버는 데이터 연결을 위해 추가적인 포트를 사용하게 됩니다. 이 포트 범위는 앞서 pasv_min_port와 pasv_max_port에서 설정한 범위인 10000번부터 10100번까지로 이 포트도 방화벽에서 열어주어야 합니다.

sudo ufw allow 10000:10100/tcp

FTP 서버 접속

vsftpd 설치와 설정, 그리고 방화벽에서 FTP 서비스가 사용하는 포트를 개방한 후에는 FileZilla와 같은 FTP 클라이언트를 사용하여 vsftpd 서버에 접속할 수 있습니다.

클라이언트에-서버-정보-입력-후-접속
클라이언트에 서버 정보 입력 후 접속

FileZilla 클라이언트를 실행 후 새 사이트를 추가하고 서버 정보를 입력한 뒤 연결(C)를 클릭합니다.기본적인 내용은 파일질라 클라이언트 기본 사용 방법 문서를 확인하세요.

접속-완료
접속 완료

위와 같이 로그인이 완료되면 정상적으로 접속이 된 것 입니다.

새-폴더-생성
새 폴더 생성

새로운 폴더를 생성하면 위와 같이 추가된 것을 확인할 수 있습니다.

파일 또는 폴더가 수정 되지 않는 경우

FileZilla는 기본적으로 사용자 폴더로 접속하게 되는데 파일을 생성 및 삭제 등 수정하기 위해서는 쓰기 권한이 부여되어야 합니다. username은 본인의 사용자 폴더 명(FTP 사용자의 이름)으로 변경합니다. Linux의 권한에 대해 알아보기


sudo chmod u+w /home/username

구글 지메일 '보안 수준이 낮은 앱의 액세스' 사용 설정

관련 글

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

2 thoughts on “Ubuntu에서 FTP 서버 구성하기”

Leave a Comment