don't stop believing

vsftpd 설치 (on Ubuntu 18.04) 본문

Tools/VSFTPD

vsftpd 설치 (on Ubuntu 18.04)

Tongchun 2018. 9. 11. 16:02

전에 사용하던 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 설정을 다시 정리했습니다.

http://dejavuqa.tistory.com/289


Comments