본문 바로가기

IT이야기/ubuntu

ubuntu 18.04 vsftpd 설치 셋팅!

명령어 복붙만 해도 해결! 설명 달아둘태니 원하는데로 커스텀해보자!

 

sudo apt-get install vsftpd

vsftpd 설치

 

sudo systemctl stop vsftpd.service

vsftpd 서비스 종료


sudo systemctl start vsftpd.service

vsftpd 서비스 시작


sudo systemctl enable vsftpd.service

ubuntu 재시작 될시 같이 실행되게 설정

 

sudo adduser ftpUser

ftp를 사용을 유저를 생성한다

sudo passwd ftpUser

유저 비밀번호를 변경한다

 

sudo mkdir /home/ftpUser/ftp

ftp를 사용할 디렉토리를 만들어준다
sudo chown nobody:nogroup /home/ftpUser/ftp

그룹을 설정해준다.
sudo chmod a-w /home/ftpUser/ftp/

디렉토리의 권한을 설정해준다. chomod 다음이 권한 설정. 형식은 755라던지 a-w라던지 다양함.

 

sudo mkdir /home/ftpUser/ftp/files

ftp에서 사용할 files 디렉토리를 만들어준다. 명칭은 자유롭게 해도 무관

sudo chown ftpUser:ftpUser /home/tongchun/ftp/files

files 폴더의 소유자를 지정해준다. 방금 만들어준 id로 할것.

 

 

vsftpd의 설정을 위한 셋팅

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

conf파일을 건드리기전 원본을 미리 백업해둔다. .orig대신 다른것을 써도 무방.

 

sudo vim /etc/vsftpd.conf

설정파일 수정을 위해 오픈. vim가 없으면 vi를 써도 되는데 아마 있을거임.

 

default 설정을 전부 지워준다.

gg를 입력하면 첫줄로 이동되며 dG를 입력하면 현재줄 이하를 전부 제거한다.

한줄씩 제거하고싶으면 dd를 입력하면 된다. 

화면에는 아무것도 안써지니 당황하지말고 일단 눌러볼것.

 

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

 

다 지웠으면 해당 내용을 복사해서 그대로 붙여넣으면 된다.

vim에서 i를 눌러 입력상태로 전환후 ctrl + c 한것을 마우스 우클릭으로 붙여넣을 수 있음.

 

이제 접속 가능한 userlist를 만들어줘야한다.

sudo vim /etc/vsftpd.userlist

그 후 내가 방금 만든 id를 입력한다.

ftpUser

입력했으면 저장하고 종료. 

vim 사용법은 알거라고 생각하니 생략.

 

sudo systemctl restart vsftpd

설정을 변경했으니 vsftpd를 재실행해준다.

 

이것만 해도 될거라 생각하지만 보안 이슈가 있을수도 있으니

ssl/tls를 설정해주겠다.

 

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 파일을 만들 디렉토리를 생성 후 만들어 준다.

뭐라뭐라 뜨는데 그냥 밑에거 그대로 복붙해도 된다.

 

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) []:ftpUser

Email Address []:ftpUser@ngle.co.kr

 

해당 항목을 그대로 복붙해도 문제는 없다.


sudo vim /etc/vsftpd.conf

이제 설정한 ssl/tcl을 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

 

해당 내용을 제일 아래에 넣어주면 된다.

 

sudo systemctl restart vsftpd

설정이 완료되었으니 재시작 후 ftp를 사용하면 된다.

 

이렇게 설정했는데도 안될경우

1. port의 확인

2. 서버 방화벽 확인

3. iptable 확인 

등을 통해 해결하면 되겠다. 

 

참고로 conf파일은 실제 운영할 경우 추가되거나 변경된 설정이 있는데

 

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

ascii_upload_enable=YES
ascii_download_enable=YES

pasv_enable=Yes
pasv_min_port=9900
pasv_max_port=9999

pasv_address=192.168.0.44

# address는 ftp 서버 ip를 입력하면 된다. 

# 서버가 내부라면 router ip를 지정하면 됨.

 

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

 

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

 

이것을 넣어주면 된다.

vsftp에 대한 자세한 레퍼런스는 

vsftpd.beasts.org/vsftpd_conf.html를 보면 됨.