vsftpd 설치 (on Ubuntu 18.04)
전에 사용하던 ftp가 이사하면서 디스크가 날아갔습니다.
다시 설치해 보겠습니다.
이번에는 Ubuntu 18.04에 설치합니다. 설치 방법은 기존과 동일합니다.
먼저 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에 사용할 계정을 만들어 줍니다. 저는 tongchun이라고 계정을 추가했습니다.
$ sudo adduser tongchun
계정에 대한 home 디렉토리에 ftp폴더를 만들어 주고 권한을 변경합니다.
$ sudo mkdir /home/tongchun/ftp $ sudo chown nobody:nogroup /home/tongchun/ftp $ sudo chmod a-w /home/tongchun/ftp/
ftp폴더 안에 files폴더를 만들고 테스트용 파일을 추가해 봅니다.
$ sudo mkdir /home/tongchun/ftp/files $ sudo chown tongchun:tongchun /home/tongchun/ftp/files $ echo "vsftpd test file" | sudo tee /home/tongchun/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을 추가합니다.
tongchun
vsftpd를 재시작 해줍니다.
$ sudo systemctl restart vsftpd
이번엔 ssl/tls 설정을 하겠습니다.
cert 폴더를 만들고 pem 파일을 만들어 줍니다.
$ sudo mkdir /etc/cert $ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/cert/vsftpd.pem -out /etc/cert/vsftpd.pem
pem 파일을 만들때 Distinguished Name를 작성하라고 합니다.
저는 아래와 같이 작성했습니다.
Country Name (2 letter code) [AU]:KR State or Province Name (full name) [Some-State]:Gyeonggi-do Locality Name (eg, city) []:Seongnam Organization Name (eg, company) [Internet Widgits Pty Ltd]:nGle Organizational Unit Name (eg, section) []:platform Common Name (e.g. server FQDN or YOUR name) []:tongchun Email Address []:tongchun@ngle.co.kr
이제 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
이제 설정이 다 완료되었습니다.
서버에 방화벽이 설정되어 있다면 아래 링크를 참고하세요.
https://dejavuqa.tistory.com/252
이제 FileZilla를 실행시키고 접속해 보겠습니다.
호스트 IP와 추가한 계정/비번 그리포 21 포트로 연결합니다.
연결후 인증서가 보인다면 '이후 세션에서 항상 인증서 신뢰'를 체크해 줍니다.
접속 후 먼저 만들었던 test.txt 파일도 잘 보입니다.
접속이 잘 되었네요.
여기까지 ssl/tcl을 적용한 vsftpd 설치였습니다.
실제 ftp 서버를 운영하면서 config 설정이 추가되거나 변경되는 경우가 있습니다.
운영중인 ftp 서버의 configuration 설정을 다시 정리했습니다.