참고① : https://qnfmfmd.tistory.com/383
참고② : http://purekid79.tistory.com/62
참고③ : http://faq.hostway.co.kr/?mid=Linux_ETC&page=8&document_srl=1405
참고④ : https://ribin.tistory.com/10
■ FTP 서버(PORT 21)
-. FTP(File Transfer Protocol)는 가장 대표적인 파일 전송 프로토콜이다.
(서버에 파일을 올리거나 내려 받을 때 사용하는 프로토콜이다.)
-. 파일 전송 프로토콜 중에는 가장 오래된 축에 속하지만 지금도 가장 많이 사용된다.
-. 비슷한 목덕을 가진 프로토콜로는 NFS, SMB, WebDAV 같은 것들이 있다.
-. FTP 서버 프로그램에는 대표적으로 ProFTPD와 VSFTPD 같은 프로그램이 있다.
(우분투는 기본적으로 VSFTPD를 사용한다.)
■ 우분투에 VSFTPD 설치
VSFTPD의 설치는 apt-get 명령어를 통해 간단하게 설치 할 수 있다.
$ sudo apt-get install vsftpd
|

|
■ VSFTPD 설정하기
VSFTPD의 설치가 완료되었다면 이제 vsftpd.conf 파일을 열고 수정한다.
아래 설정은 필자가 사용하기 위한 설정들로만 잡아둔 것이다.
설정한 내용들에 주석을 달아두었고, 위 참고 링크들을 확인하여,
필요한 내용들로 작업을 진행하는것이 좋다.
01. 먼저 VIM을 사용하여 vsftpd.conf를 수정한다.
$ sudo vim /etc/vsftpd.conf
|
# STANDALONE(독립형) 모드로 서비스 할 경우 설정하는 옵션 listen=NO
# STANDALONE(독립형) 모드로 서비스 할 경우 설정하는 옵션 listen_ipv6=YES
# 로컬 계정 사용자의 FTP 접속 허용 여부를 정의한다. # 서버에 존재하는 일반 계정으로 FTP 접속을 할 경우 YES로 설정한다. local_enable=YES
# 쓰기권한을 허용 여부를 정의한다. # NO로 설정할 경우는 파일업로드가 불가능하게 된다. write_enable=YES
# 파일 및 디렉토리 생성시의 권한을 지정한다. # 파일의 허가권한은 최대 666 # 디렉토리의 허가권한은 최대 777 # 여기서 UMASK의 뺀 값이 해당 파일의 허가권이 된다. local_umask=022
# 디렉토리에 접근할때 보여줄 메세지를 표시한다. dirmessage_enable=YES
# 서버의 로컬 시간을 사용할지를 지정 use_localtime=YES
# 파일 전송 로그를 남길 것인지 여부를 정의한다. xferlog_enable=YES
# FTP의 20 포트 사용 여부를 묻는다. # STANDALONE(독립형)모드에서, FTP 포트변경을 원할때 설정한다. connect_from_port_20=YES
# 파일 전송 로그를 기록할 파일명을 정의한다. # 로그를 저장하지 않을거라면 주석처리 해두자. # xferlog_file=/var/log/vsftpd.log
# xferlog 형식으로 FTP LOG를 남기기 위한 설정이다. # xferlog 표준 포맷은, 디렉토리 생성 등의 로그를 남기지 않으며, # vsftpd 스타일의 로그는 디렉토리 생성을 포함한 보다 상세한 로그를 남기기 때문에, NO로 설정할 것을 권장한다. xferlog_std_format=NO
# 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정을 정의한다. # FTP 접속 후, 홈디렉토리 상위의 시스템 파일에 접근하지 못하게 하기위한 설정이다. # 개인용으로 사용할 경우 NO, 여러사람과 함께 사용할경우 YES chroot_local_user=NO
# 상위 디렉토리의 접근의 허용 여부를설정 allow_writeable_chroot=YES
# 발급받은 SSL / TLS 인증서의 경로를 입력하여 FTPS를 구성한다. # P.S : 처음설치하고 세팅할때는 없는 부분이었다 자동으로 주석이 풀리고 입력되었는데) # SSH 서버 설치 이후(openssh-server) 추가된 것으로 추측된다. rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# SSL 보안 연결을 활성화 여부 ssl_enable=NO
#####################################################################################################
# # 아래부터는 Ubuntu 에서 설치한 vsftpd.conf 설정에 적혀있지 않은 설정들로 직접 입력하여 작성하였다.
# Ubuntu 버전 : 18.04 # VSFTPD 버전 : 3.0.3.-9 # # 네트워크 서비스에 관련된 트래픽을 제어하고 모니터링할 수 있는 가장 기본적인 방화벽 도구 # xinetd 수퍼데몬으로 관리하는 서비스 데몬만 제어가 가능하다. # standalone방식으로 서비스하는 데몬은 TCP Wrapper로 접근제어가 불가능하다. tcp_wrappers=YES
# 사용자 리스트의 활성여부를 묻는다. # userlist_enable=YES // 유저 리스트를 활성화 시킨다. # userlist_enable=NO // 거부자목록으로 쓰지 않으면 유저리스트에 등록된 사용자에 한해서만 FTP 사용이 가능하다. # // 유저 리스트에 등록되어 있더라도 /etc/vsftpd/ftpuser에 등록된 사용자는 접속이 불가능하다. # # /etc/vsftpd/user_list에 등록된 사용자는 접속 거부 / 승인 목록이 될수 있다. # /etc/vsftpd/ftpuser에 등록된 사용자는 user_list에 상관 없이 접속할 수 없다. # root 등의 사용자는 보안을 위해 접속을 허용하지 않는것이 보통이다. # 그렇지만 userlist_enable=NO 설정을 해주고 ftpusers에서 root를 삭제하면 root로도 FTP 접속이 가능하다. # # P.S : 필자가 설정한 우분투에는 기본적으로 없던 항목들이고. # 실제 세팅에서는 해당부분은 아예 적지 않았다. # 사용을 원한다면 특정경로에 user_list 파일을 생성해주고 작성하여야 한다.
# /var/log/xferlog 파일과 /var/log/vsftpd.log 파일 모두에 FTP 파일 전송 기록이 저장됨 dual_log_enable=YES
# 클라이언트와 서버 사이의 모든 FTP 프로토콜 트랜잭션 로그를 기록함. log_ftp_protocol=YES
# anonymous 사용자의 접속 허용 여부를 정의한다. # 기본은 YES이며 공개용 FTP 서버로 사용하지 않는 경우는, NO로 변경해서 사용한다. anonymous_enable=YES |
02. 설정이 끝났으면 vsftpd를 리스타트 해준다.
$ sudo service vsftpd restart
|

|
03. VSFTPD가 정상적으로 재시작 되었다면 이제 FTP에 붙는지 확인해 보자.
$ ftp 120.0.0.1(설정한 서버의 IP를 작성) Name : 우분투 계정 아이디 Password : 우분투 계정 비밀번호
|

|
04. 모든 작업이 완료되었으면, 이제 우분투 재부팅 시에도 VSFTPD가 자동 실행되도록 설정해 주자.
$ sudo systemctl enable vsftpd
|

|
※ 기타 프로그램을 통한 접근시 유의사항
필자와 같은 VSFTPD를 설정한 이후 FTP접근 툴을 통해
FTP로 접근을 할때 주의 사항이 한가지 있다.
혹 전송이 안되는 경우 전송 설정을 능동형 으로 변경해 주자.
