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 설정 방법, 예제, 명령어
답글 남기기