먼저 Ubuntu 버전부터 확인하겠습니다. $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
그다음 package를 업데이트하고 vsftpd 데몬을 설치 합니다. $ sudo apt-get update $ sudo apt-get install vsftpd
vsftpd를 다시 시작해 줍니다. 그리고 ubuntu가 재시작 될때 같이 실행되도록 해줍니다.$ sudo systemctl stop vsftpd.service
$ sudo systemctl start vsftpd.service
$ sudo systemctl enable vsftpd.service
ftp에 사용할 계정을 만들어 줍니다. 저는 simon이라고 계정을 추가했습니다.$ sudo adduser simon
계정에 대한 home 디렉토리에 ftp폴더를 만들어 주고 권한을 변경합니다.$ sudo mkdir /home/simon/ftp
$ sudo chown nobody:nogroup /home/simon/ftp
$ sudo chmod a-w /home/simon/ftp/
ftp폴더 안에 files폴더를 만들고 테스트용 파일을 추가해 봅니다.$ sudo mkdir /home/simon/ftp/files
$ sudo chown tongchun:tongchun /home/simon/ftp/files
$ echo "vsftpd test file" | sudo tee /home/simon/ftp/files/test.txt
이제 vsftpd를 설정할 차례입니다.
설정하기 전 설정파일을 백업 카피 합니다.
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
vsftpd.conf 파일을 열고 설정을 수정합니다.
$ sudo vim /etc/vsftpd.conf
default 설정이 있는데 모두 지워줍니다.
vim에서 모든 내용을 지우려면, gg 로 첫번째 줄로 이동합니다. 그리고 dG 로 현재 줄 이하의 내용을 지웁니다.그리고 아래 내용을 작성합니다.
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
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
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
설정과 같이 userlist를 만들어 줍니다.$ sudo vim /etc/vsftpd.userlist
vsftpd.userlist 파일에 앞서 만들었던 tongchun을 추가합니다.simon
vsftpd를 재시작 해줍니다.
$ sudo systemctl restart vsftpd
이번엔 ssl/tls 설정을 하겠습니다.
cert 폴더를 만들고 pem 파일을 만들어 줍니다.$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/cert/vsftpd.pem -out /etc/cert/vsftpd.pem
pem 파일을 만들때 Distinguished Name를 작성하라고 합니다. 자신의 정보를 입력하면 됩니다.
이제 ssl/tcl에 대한 설정을 추가해야 합니다.
vsftpd.conf 파일을 열고 아래와 같이 추가합니다.
$ sudo vim /etc/vsftpd.conf
rsa_cert_file=/etc/cert/vsftpd.pem
rsa_private_key_file=/etc/cert/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
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
설정을 저장하고 vsftpd를 재시작 해줍니다.$ sudo systemctl restart vsftpd
이제 설정이 다 완료되었습니다.
서버에 방화벽이 설정되어 있다면 포트 포워딩을 설정해 주어야 합니다.
20,21 번 포트와 10000~11000 번 TCP 포트를 오픈해야 합니다.
이제 FileZilla를 실행시키고 접속해 보겠습니다.
호스트 IP와 추가한 계정/비번 그리포 21 포트로 연결합니다.
연결후 인증서가 보인다면 '이후 세션에서 항상 인증서 신뢰'를 체크해 줍니다.
접속 후 먼저 만들었던 test.txt 파일도 잘 보입니다.