FTP 서버 · 5 min read · Dec 22, 2025

Debian 12에서 vsftpd로 안전한 FTP 서버 설치하는 방법

vSFTPd 또는 Very Secure FTP Daemon은 무료 오픈 소스 FTP 서버 소프트웨어입니다. 이는 유닉스 계열 운영 체제를 위한 FTP 데몬이며 GNU 일반 공용 라이선스 하에 라이선스가 부여됩니다. vSFTPd는 가장 널리 사용되는 FTP 데몬 중 하나로, 시스템 리소스 측면에서 빠르고 가벼우며 PAM 및 SSL 통합 덕분에 안전하고 안정적입니다. vSFTPd는 RedHat, SUSE, Debian, Gnome, KDE 등과 같은 주요 기업의 신뢰를 얻었습니다.

vSFTPd는 IPv6에서 실행할 수 있으며 가상 IP 구성 및 사용자를 지원합니다. 독립 실행형 데몬으로 실행하거나 inetd를 통해 실행할 수 있습니다. 사용자 관리를 위해 vSFTPd는 사용자가 소스 IP 제한, 재구성 가능성 및 대역폭 제한과 같은 자신의 구성을 설정할 수 있는 기능을 제공합니다. 또한 vSFTPd는 가상 사용자를 위한 플러그인 인증 모듈(PAM)을 지원하며 SSL/TLS와의 보안 통합도 제공합니다.

이 튜토리얼에서는 Debian 12 서버에서 vsftpd로 안전한 FTP 서버를 설정하고 만드는 방법을 배웁니다. 이 가이드에서는 UFW(간단한 방화벽)를 통해 FTP 서버 설치를 보호하는 방법과 FTP 클라이언트 FileZilla를 사용하여 FTP 서버에 연결하는 방법도 배웁니다.

전제 조건

진행하기 전에 다음 사항을 확인하십시오:

  • Debian 12 서버.
  • sudo 관리자 권한이 있는 비루트 사용자.
  • 서버에 openssl 패키지가 설치되어 있어야 합니다.

vsftpd 설치하기

vsftpd는 UNIX 및 Linux 운영 체제를 위한 FTP 프로토콜의 구현입니다. vsftpd 패키지는 Debian을 포함한 대부분의 Linux 배포판에서 사용할 수 있습니다. 이제 APT를 통해 vsftpd를 설치하고 vsftpd 서비스가 실행되고 있는지 확인합니다.

vsftpd 패키지를 설치하기 전에 다음 명령을 실행하여 Debian 리포지토리를 업데이트합니다.

sudo apt update

update repo

이제 아래의 apt install 명령을 사용하여 vsftpd 패키지를 설치합니다.

sudo apt install vsftpd

설치를 확인하려면 y를 입력하고 ENTER를 누릅니다.

install vsftpd

vsftpd가 설치된 후, vsftpd 서비스는 자동으로 실행되고 활성화됩니다. 다음 명령을 사용하여 vsftpd 서비스를 확인합니다.

sudo systemctl is-enabled vsftpd  
sudo systemctl status vsftpd

다음 출력은 vsftpd 서비스가 실행 중이며 활성화되어 있음을 확인합니다. 또한 vsftpd 서비스는 시스템 부팅 시 자동으로 실행됩니다.

verify vsftpd

vsftpd 구성하기

다음 단계에서는 vsftpd로 안전한 FTP 서버를 구성하고 생성합니다. SSL/TLS 인증서를 생성하고 기본 vsftpd 구성 /etc/vsftpd.conf를 수정합니다.

먼저, 아래의 openssl 명령을 실행하여 vsftpd 서버 설치에 사용할 새로운 TLS 인증서를 생성합니다.

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

요청 시 세부 정보를 입력합니다. 프로세스가 완료되면 TLS 인증서는 /etc/ssl/private/vsftpd.pem에 저장됩니다.

generate tls

이제 아래 명령을 실행하여 FTP 사용자를 저장할 새 파일 /etc/vsftpd.userlist를 생성합니다.

touch /etc/vsftpd.userlist

그 후, 다음 명령을 실행하여 vsftpd 구성을 백업합니다. 그런 다음 nano 편집기를 사용하여 vsftpd 구성 /etc/vsftpd.conf를 엽니다.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig  
sudo nano /etc/vsftpd.conf

anonymous_enable 옵션을 NO로 변경하여 vsftpd 서버에 대한 익명 액세스를 비활성화합니다.

anonymous_enable=NO

local_enable 옵션을 YES로 변경하여 /etc/passwd 파일 내의 로컬 사용자와 PAM 사용자가 vsftpd 서버에 로그인할 수 있도록 허용합니다.

local_enable=YES

write_enable 옵션을 YES로 변경하여 FTP 사용자가 vsftpd 서버에 파일을 업로드할 수 있도록 허용합니다.

write_enable=YES

이제 다음 옵션을 추가하여 FTP 사용자에 대한 chroot 또는 감옥을 활성화합니다. 이렇게 하면 FTP 사용자가 /home/$USER/chroot 디렉토리에 잠기게 됩니다. 예를 들어, FTP 사용자 bob/home/bob/chroot 디렉토리에 잠기게 됩니다.

chroot_local_user=YES  
user_sub_token=$USER  
local_root=/home/$USER/chroot

다음으로, vsftpd 가상 사용자를 설정하기 위해 다음 구성을 추가합니다. /etc/vsftpd.userlist 파일 내의 모든 사용자는 vsftpd 서버에 로그인할 수 있습니다.

userlist_enable=YES  
userlist_file=/etc/vsftpd.userlist  
userlist_deny=NO

SSL/TLS 인증서로 vsftpd 서버를 보호하기 위해 다음 줄을 추가합니다. 이렇게 하면 사용자 로그인 및 데이터 전송 연결이 안전한 연결을 사용하도록 강제됩니다.

rsa_cert_file=/etc/ssl/private/vsftpd.pem  
rsa_private_key_file=/etc/ssl/private/vsftpd.pem  
ssl_enable=YES  
force_local_data_ssl=YES  
force_local_logins_ssl=YES  
ssl_tlsv1=YES  
ssl_sslv2=NO  
ssl_sslv3=NO  
require_ssl_reuse=NO  
ssl_ciphers=HIGH

이제 2000025000 사이의 포트를 사용하여 수동 모드 연결을 설정하기 위해 아래 구성을 추가합니다.

pasv_min_port=20000  
pasv_max_port=25000

작업이 완료되면 파일을 저장하고 종료합니다.

이제 다음 systemctl 명령을 실행하여 vsftpd 서비스를 재시작하고 변경 사항을 적용합니다.

sudo systemctl restart vsftpd

이로써 새로운 구성으로 vsftpd 서버가 실행되고 있습니다.

방화벽 설정하기

다음 단계에서는 Debian 서버에 UFW(간단한 방화벽)를 설치하고 이를 통해 FTP 서버 설치를 보호합니다. APT를 통해 UFW를 설치하고 FTP 서버 포트 20:21/tcp 및 수동 모드 데이터 연결 포트 20000:25000/tcp를 엽니다.

다음 apt 명령을 사용하여 UFW를 설치합니다. 설치를 진행하려면 y를 입력합니다.

sudo apt install ufw

install ufw

UFW가 설치된 후, 아래의 ufw 명령을 실행하여 OpenSSH 서비스, vsftpd 서버 포트 20:21, 및 포트 20000에서 25000 사이의 수동 모드 FTP 연결을 위한 포트를 엽니다.

sudo ufw allow OpenSSH  
sudo ufw allow 20:21/tcp  
sudo ufw allow 20000:25000/tcp

다음으로, 아래의 ufw 명령을 실행하여 UFW를 시작하고 활성화합니다.

sudo ufw enable

확인을 위해 입력하면 UFW가 실행 중이며 Debian 시스템에서 활성화됩니다.

setup ufw

아래 명령을 사용하여 UFW의 자세한 상태를 확인합니다.

sudo ufw status

출력된 active는 UFW가 실행 중이며 활성화되어 있음을 확인합니다. 또한 OpenSSH 서비스가 추가되었고 vsftpd 서버의 일부 포트 20:21/tcp20000:25000/tcp가 추가되었습니다.

verify ufw

FTP 가상 사용자 설정하기

이 시점에서 vsftpd 서버 구성을 완료했습니다. 이제 FTP 서버에 로그인하고 파일을 업로드하는 데 사용할 새 FTP 사용자를 생성합니다.

다음 명령을 실행하여 새 파일 /bin/ftponly를 생성합니다. 그런 다음 아래의 chmod 명령을 통해 실행 가능하게 만듭니다. 파일 /bin/ftponly는 FTP 사용자의 기본 셸로 사용됩니다.

echo -e '#!/bin/sh
echo "Shell for FTP users only."' | sudo tee -a  /bin/ftponly  
sudo chmod a+x /bin/ftponly

파일 /bin/ftponly/etc/shells에 추가하여 유효한 셸임을 보장합니다.

sudo echo "/bin/ftponly" >> /etc/shells

이제 새 FTP 사용자 bob을 생성하고 아래 명령을 실행하여 비밀번호를 설정합니다. 비밀번호를 입력하고 반복합니다.

sudo useradd -m -s /bin/ftponly bob  
sudo passwd bob

그 후, 다음 명령을 실행하여 사용자 bob을 위한 새 chroot /home/bob/chroot 디렉토리를 생성합니다. 또한 chroot 디렉토리 /home/bob/chroot가 적절한 소유권을 가지고 있는지 확인합니다.

sudo -u bob mkdir -p /home/bob/chroot  
sudo chown -R bob: /home/bob/chroot

다음으로, 아래 명령을 실행하여 FTP 사용자 데이터를 저장하는 데 사용될 또 다른 새 디렉토리 dataupload를 생성합니다. 이러한 디렉토리에 대한 적절한 소유권을 구성하는 것을 잊지 마십시오.

sudo -u bob mkdir -p /home/bob/chroot/{data,upload}  
sudo chown -R bob: /home/bob/chroot/{data,upload}

이제 아래 명령을 실행하여 /home/bob/chroot 디렉토리의 권한을 550으로, dataupload 디렉토리의 권한을 750으로 변경합니다.

sudo chmod 550 /home/bob/chroot  
sudo chmod 750 /home/bob/chroot/{data,upload}

새 사용자를 생성했으므로 아래 명령을 실행하여 사용자 bob/etc/vsftpd.userlist 파일에 추가합니다.

echo "bob" >> /etc/vsftpd.userlist

마지막으로, 아래 명령을 실행하여 vsftpd 서비스를 재시작하고 변경 사항을 적용합니다. 명령을 실행한 후, FTP 사용자 bob이 준비됩니다.

sudo systemctl restart vsftpd

FTP 서버에 파일 업로드하기

vsftpd 서버 설치를 확인하기 위해, FTP 클라이언트 소프트웨어를 통해 새로 생성한 사용자로 FTP 서버에 연결합니다. 그런 다음, 설치가 성공적으로 완료되었는지 확인하기 위해 새 파일을 업로드합니다.

로컬 머신에 FTP 클라이언트를 다운로드하고 설치합니다. Windows, Linux 및 MacOS에서 설치할 수 있는 FileZilla를 사용할 수 있습니다. FileZilla가 설치되면 열어서 안전한 FTP 서버에 연결합니다.

FTP 서버 IP 주소와 FTP 사용자 이름 및 비밀번호를 입력합니다. 그런 다음 Quickconnect를 클릭하여 확인합니다.

Always trust this certificate in future sessions 옵션을 선택하고 OK를 클릭하여 확인합니다.

accept certificates

FTP 서버에 연결되면 FTP 서버에서 사용할 수 있는 data 및 upload 두 개의 디렉토리가 표시됩니다. 두 디렉토리 data 및 upload에 파일을 업로드할 수 있지만, chroot를 통해 보호된 디렉토리 외부에 파일을 업로드할 수는 없습니다.

connected to ftp server

파일을 드래그 앤 드롭하여 FTP 서버에 업로드할 수 있습니다.

uploAded files

결론

마무리하자면, Debian 12 서버에서 vsftpd로 안전한 FTP 서버를 성공적으로 생성했습니다. 또한 UFW(간단한 방화벽)를 통해 FTP 서버 설치를 보호하고 FTP 사용자를 생성하는 방법을 배웠습니다. 이제 FTP 서버를 로컬 머신과 서버 간의 주요 데이터 전송 수단으로 사용할 수 있으며, 선호하는 다른 FTP 클라이언트 소프트웨어를 찾을 수도 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.