Vsftp

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

FTP 서버인 vsftp(Very Secure FTP Daemon)를 정리 한다.


Ubuntu용 설치 가이드

  • vsftpd 2.0.7 설치
apt-get install vsftpd
vi /etc/vsftpd.conf
    listen=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    file_open_mode=0644
vi /etc/ftpusers
    #--- FTP를 사용할 사용자 아이디를 주석으로 막아 해당 사용자가 FTP를 사용할 수 있도록 한다.
service vsftpd restart 
    #--- /etc/init.d/vsftpd restart, 예전 방식의 명령어
    #--- FileZilla로 접속시 전송 설정을 "활성"으로 한다.
  • 환경 설정 파일
  • vi /etc/vsftpd.conf : vsftp 설정 파일
  • vi /etc/ftpusers : vsftp 차단 사용자 목록
  • vi /etc/vsftpd/user_list : 차단 사용자 목록

CentOS용 설치 가이드

  • vsftp 설치
yum -y install vsftpd

vi /etc/vsftpd/user_list 파일에서 root를 제거 합니다.
vi /etc/vsftpd/ftpusers 파일에서 root를 제거 합니다.

vi /etc/vsftpd/vsftpd.conf
  anonymous_enable=NO
  userlist_enable=NO
  userlist_deny=YES
  tcp_wrappers=YES

setsebool -P ftp_home_dir=1

service vsftpd restart
  • 환경 설정 파일
  • vi /etc/vsftpd/vsftpd.conf : vsftp 설정 파일
  • vi /etc/vsftpd/ftpusers : vsftp 차단 사용자 목록
  • vi /etc/vsftpd/user_list : 차단 사용자 목록
  • vsftp 설정
getsebool -a | grep ftp
  • CentOS 방화벽 설정
setup
   #--- 21/tcp, 20/tcp를 열어 둔다. 또는 서비스 중 FTP 서비스를 열어 둔다.
  • Windows 방화벽 설정
FileZilla 프로그램을 방화벽에서 차단하지 않도록 한다.
  • FileZilla 설정
  • 일반 -> 프로토콜 : FTP
  • 일반 -> 암호화 : 일반 FTP 사용
  • 일반 -> 로그온 유형 : 일반
  • 고급 : 서버 종류 : Unix
  • 기본 리모트 디렉토리 : /tmp
  • 전송 설정 : 능동형
  • 문자셋 : UTF-8로 강제 설정

사용자 가이드

FTP 전송 모드

  • FTP Server는 기본적으로 아래와 같은 2개의 Port를 사용한다.
  • FTP Port : Default 21 port / tcp, FTP 명령어 송수신
  • FTP-Data Port : Default 20 port / tcp, FTP 데이터 송수신
  • FTP를 사용하기 위해서는 방화벽이 열려 있어야 한다.
  • 일반적으로 1024 이상의 포트는 방화벽에서 열려 있다.


Active Mode
  • Active Mode는 정해진 포트를 사용하여 송수신 한다. (Default port. 21, 20)
  • Active Mode (활성 모드)에서의 송수신 절차
#--- FTP Client에서 FTP Server의 21 port (FTP Port)로 접속 한다.
#--- FTP Client가 FTP Server에게 데이터 통신을 위한 xx2 port를 알려준다.
FTP Client:xx1/tcp -> FTP Server:21/tcp    #--- xx1은 1023보다 큰 port

#--- FTP Server에서 데이터 송수신을 위해 FTP Client의 xx2 Port로 접속 한다.
FTP Client:xx2/ucp <- FTP Server:20/ucp    #--- xx1은 1023보다 큰 port

  • Active Mode로 FTP를 사용하기 위해 방화벽을 설정 한다.
  • FTP Server 방화벽 설정 : 21, 20 port 오픈
  • FTP Client 방화벽 설정 : xx1, xx2 port 오픈
Passive Mode
  • Passive Mode는 임의의 포트를 할당하여 송수신 한다.
  • Passive Mode (수동 모드)에서의 송수신 절차
#--- FTP Client에서 FTP Server의 21 port (FTP Port)로 접속 한다.
#--- FTP Server가 FTP Client에게 데이터 통신을 위한 yy1 port를 알려 준다.
FTP Client:xx3/tcp -> FTP Server:21/tcp    #--- xx3은 1023보다 큰 port

#--- FTP Client에서 데이터 송수신시 FTP Server에서 제공한 yy1 port로 접속 한다.
FTP Client:xx4/ucp -> FTP Server:yy1/ucp   #--- xx4, yy1은 1023보다 큰 port

  • Passive Mode로 FTP를 사용하기 위해 방화벽을 설정 한다.
  • FTP Server 방화벽 설정 : 21, yy1 port 오픈
  • FTP Client 방화벽 설정 : xx3, xx4 port 오픈
  • ftp client에서 passive mode로 변경하기 위한 명령어
passive

관리자 가이드

Port 변경

  • Active Mode에서 FTP를 위한 Port 변경 방법
  • FTP 포트로 50021을 사용하고, FTP-Data 포트로 50020을 사용하도록 설정해 보자.
  • 서버 방화벽에서 50021, 50020 port가 열려 있어야 한다.
  • vi /etc/vsftpd.conf (in Ubuntu), vi /etc/vsftpd/vsftpd.conf (in CentOS)
#--- inetd 모드가 아닌 독립 모드로 vsftp 실행
listen=YES
#--- FTP를 위한 Listen Port를 지정 한다.
listen_port=50021

#--- 데이터 전송을 위해서 Active Mode를 사용도록 설정 한다.
#--- Active Mode에서 FTP 데이터 전송을 위한 디폴트 포트는 20 port 이다.
port_enable=YES
#--- 데이터 전송을 위해서 Passive Mode를 사용하지 못하도록 한다.
pasv_enable=NO

#---  20번 포트의 데이터전송 연결을 허용 한다.
connect_from_port_20=YES
#--- Active Mode에서 사용할 FTP-Data 포트를 강제로 50020 port로 변경 한다.
ftp_data_port=50020


  • Passive Mode에서 FTP를 위한 Port 변경 방법
  • FTP 포트로 50021을 사용하고, FTP-Data 포트로 50031 ~ 50040을 사용하도록 설정해 보자.
  • 서버 방화벽에서 50021, 50020, 50031 ~ 50040 port가 열려 있어야 한다.
  • 사내 방화벽이 설정되어 있을 경우, Passive Mode를 사용하여야 할 경우가 있다.
  • vi /etc/vsftpd.conf (in Ubuntu), vi /etc/vsftpd/vsftpd.conf (in CentOS)
#--- inetd 모드가 아닌 독립 모드로 vsftp 실행
listen=YES
#--- FTP를 위한 Listen Port를 지정 한다.
listen_port=50021

#--- 데이터 전송을 위해서 Active Mode를 사용도록 설정 한다.
#--- Active Mode에서 FTP 데이터 전송을 위한 디폴트 포트는 20 port 이다.
port_enable=YES
#--- 데이터 전송을 위해서 Passive Mode를 사용하지 못하도록 한다.
pasv_enable=YES

#---  20번 포트의 데이터전송 연결을 허용 한다.
connect_from_port_20=YES
#--- Active Mode에서 사용할 FTP-Data 포트를 강제로 50020 port로 변경 한다.
ftp_data_port=50020

#--- Passive Mode에서 사용할 FTP-Data 포트를 강제로 50031 port에서 50040 port까지 허용 한다.
pasv_min_port=50031
pasv_max_port=50040


  • vsftp 서버를 재기동 한다.
  • Ubuntu : /etc/init.d/vsftpd restart
  • CentOS : service vsftpd restart
  • vsftpd.conf 샘플
listen=YES
listen_port=21

port_enable=YES
connect_from_port_20=YES
ftp_data_port=50031

pasv_enable=YES
pasv_min_port=50032
pasv_max_port=50040

FTP Client 명령어

  • PASSIVE 모드로 변경
literal pasv

참고 문헌