Ubuntu 20.04 서버에 FTP 서버 vsdtpd 설치하기

sudo apt update
sudo apt install vsftpd

설치가 완료되면 자동으로 FTP 서비스가 시작됩니다.
서비스 상태를 확인하려면 아래 명령어로 확인합니다.

sudo systemctl status vsftpd

vsftpd 설정
서버 설정은 /etc/vsftpd.conf 파일입니다.

sudo vim /etc/vsftpd.conf

FTP에 액세스
로컬 사용자 혹은 aninymous 에게 FTP 서버에 대한 액세스를 허용합니다.

anonymous_enable=NO
local_enable=YES

업로드 활성화

write_enable=YES

Chroot jail(액세스 제한)
로컬 FTP 사용자가 홈 디렉토리 외부의 파일에 액세스하지 못하도록 하려면

chroot_local_user=YES

기본적으로 보안상의 이유로 chroot를 사용하도록 설정한 경우 사용자가 잠긴 디렉토리가 쓰기 가능한 경우 vsftpd는 파일 업로드를 거부합니다.
chroot를 사용할 때 업로드를 허용하려면 다음 솔루션 중 하나를 사용하십시오.

방법 1. – chroot 기능을 사용하도록 설정하고 FTP 디렉터리를 구성하는 것이 좋습니다.
이 예에서는 사용자 홈 내부에 파일을 업로드하기 위한 chroot 및 쓰기 가능한 업로드 디렉토리 역할을 하는 ftp 디렉토리를 생성합니다.
/etc/vsftpd.conf
user_sub_token=$USER
local_root=/home/$USER/ftp

방법 2. – 또 다른 옵션은 allow_writeable_chroot 지시어를 사용하도록 설정하는 것입니다.
/etc/vsftpd.conf
allow_writeable_chroot=YES
홈 디렉토리에 대한 쓰기 가능 권한을 사용자에게 부여해야 하는 경우에만 이 옵션을 사용하십시오.

패시브 FTP 연결
기본적으로 vsftpd는 활성 모드를 사용합니다.
수동 모드를 사용하려면 포트의 최소 및 최대 범위를 설정합니다.
패시브 FTP 연결에는 아무 포트나 사용할 수 있습니다. 수동 모드가 활성화된 경우 FTP 클라이언트는 선택한 범위의 임의 포트에 있는 서버에 대한 연결을 엽니다.

pasv_min_port=30000
pasv_max_port=31000

사용자 로그인 제한
특정 사용자만 로그인할 수 있도록 vsftpd를 구성할 수 있습니다.
이렇게 하려면 파일 끝에 다음 줄을 추가하십시오.

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

이 옵션을 사용하면 /etc/vsftpd.user_list 파일에 사용자 이름을 추가하여 로그인할 수 있는 사용자를 명시적으로 지정해야 합니다(한 줄에 한 명의 사용자).

SSL/TLS로 전송 보호
SSL/TLS로 FTP 전송을 암호화하려면 SSL 인증서를 가지고 있고 이를 사용하도록 FTP 서버를 구성해야 합니다.
신뢰할 수 있는 인증 기관에서 서명한 기존 SSL 인증서를 사용하거나 자체 서명된 인증서를 생성할 수 있습니다.
FTP 서버의 IP 주소를 가리키는 도메인 또는 하위 도메인이 있는 경우, SSL 암호화 허용 인증서를 빠르게 생성할 수 있습니다.
2048비트 개인 키와 10년간 유효한 자체 서명 SSL 인증서를 생성합니다.

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

개인 키와 인증서가 모두 동일한 파일에 저장됩니다.
SSL 인증서가 생성되면 vsftpd 구성 파일을 엽니다.

sudo nano /etc/vsftpd.conf

rsa_cert_file 및 rsa_private_key_file 디렉토리를 찾고 해당 값을 pem 파일 경로로 변경하고 ssl_enable 디렉티브를 YES로 설정합니다.

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

달리 지정하지 않으면 FTP 서버는 TLS만 사용하여 보안 연결을 만듭니다.

vsftpd 서비스를 다시 시작
편집을 마치면 vsftpd 구성 파일(주석 제외)은 다음과 같이 표시됩니다.

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

파일을 저장하고 vsftpd 서비스를 다시 시작하여 변경 내용을 적용합니다.

sudo systemctl restart vsftpd

서버 중지는 stop 으로 합니다.

도움받은 사이트: Linux : Ubuntu 20.04 : VSFTPD 로 FTP Server 설정 방법, 예제, 명령어


게시됨

카테고리

작성자

태그:

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다