서버운영관리

이승호 에반젤리스트

vsftpd 설치 및 설정

vsftpd 는 리눅스 서버에서 가장 흔히 사용하는 FTP (File Transfer Protocol) 서버 프로그램이며 일반적으로 vsftpd 패키지가 서버에 설치되어 있다.

FTP의 역할은 데이터를 서버에 파일을 업로드하거나 다운로드 하는 용도이며 요즘 나오는 웹에디터들도 FTP 를 통해 데이터 전송을 지원하기 때문에 

서버에서 데이터 전송을 위해 사용되는 대표적인 프로그램이라고 할 수 있다.

  

리눅스 서버에서 가장 흔히 사용하는것이 VSFTP 이다. 간략하게 소개하자면 아래와 같은 장점이 있다.

• FTP 에 대한 보안설정 옵션들이 많다.

• 설정 파일 수정과 의미가 명확하여 초보자들도 쉽게 사용 가능하다.

• 리눅스에 기본탑재하고 있어서 따로 설치할 필요없이 바로 사용 가능하다.

 

vsftp 설치


 

 

1. vsftp 설치 여부 확인

 $ rpm -qa | grep vsftpd
vsftpd-2.2.2-14.el6.x86_64

 

2. vsftp는 기본적으로 포함되어 있거나 아래와 같이 간단하게 설치 가능하다.

 $ yum install vsftpd 혹은 apt-get install vsftp

 

3. 설정파일의 경로는 아래와 같다

 $  vi /etc/vsftpd/vsftpd.conf

 

4. FTP 명령 실행 방법은 아래를 참고한다.

 $ /etc/init.d/vsftpd stop : 정지

$ /etc/init.d/vsftpd start : 시작

$ /etc/init.d/vsftpd restart : 정지했다가 다시 시작

 

여기서는 몇가지 대표적인 설정옵션을 알아본다.

 • anonymous_enable=NO

익명사용자 접근을 허용하지 않음 (누구나 ID/PW 없이 FTP에 접근하여 자료를 업로드 및 다운로드 할수 있게하는 옵션이다)
편리해보이는 기능이긴 하지만 보안상 좋지 않으므로 NO 로 설정한다.

 

• anon_upload_enable=YES
익명 사용자가 파일업로드를 가능하게 하겠다는 의미 계정 생성하지 않고 파일을 받을수 있어 편리하긴 하지만 보안상 좋지는 않다.

 

• anon_mkdir_write_enable=YES
익명 사용자가 디렉토리를 생성 가능하게 하겠다는 옵션이다.

 

• 계정 JAIL 설정
chroot_local_user=YES
FTP 접속한 계정이 자신의 홈디렉토리 (공간) 이외에는 접근할수 없게 하는 옵션이다. 
NO 로 설정하거나 주석처리가 되어 있는경우에는 모든 계정이 다른 디렉토리로 접근이 가능하다. (JAIL 설정이라고도 하는듯 하다)

 

• 특정 계정만 JAIL 적용하기
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
/etc/vsftpd/chroot_list 파일에 JAIL 할 계정 등록해주면 된다.

 

• 특정계정만 제외하고 JAIL 하기
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
/etc/vsftpd/chroot_list 파일에 JAIL 제외할 계정 등록해주면 된다.

 

• 계정의 홈디렉토리는 /etc/passwd 파일에서 확인가능하다.
ex) ddongho:x:502:502::/home/ddongho:/bin/bash
ddongho 라는 계정의 홈디렉토리는 /home/ddongho 라는것을 확인할수 있다

 

• idle_session_timeout=600
사용자가 로그인후 아무런 작업이 없을시 600초후에는 강제로 접속을 끊겠다는 의미이다.
사용자가 잠시 PC 앞에서 떠난후 다른 누군가가 내 자료를 불법적으로 다운로드 혹은 업로드 등의 작업을 할 수 있으므로 꼭 설정하는것이 좋다.

 

• data_connection_timeout=120
다운로드 시작시간부터 지정된 초동안 완료되지 않으면 접속을 강제로 끊는다.

 

• write_enable=YES
사용자의 쓰기 권한입니다. YES를 주면 권한이 있는 사용자는 누구든지 파일 업로드 및 파일 수정 삭제 등을 할 수 있다.
NO라고 하면 누구든지 파일 수정, 삭제, 업로드는 할 수 없다.

 

• local_enable=YES
리눅스 로컬 사용자 일반 계정이 FTP에 접근할수 있게 한다는 의미한다.

 

• local_umask=022
FTP 로 접근한 로컬 사용자들이 파일을 생성할때 기본으로 권한을 644 로 가지게 하겠다는 의미한다.

 

• dirmessage_enable=YES
사용자가 어떤 디렉토리로 이동할때 디렉토리에 지정된 메세지를 보여주는 기능을 사용하겠다는 옵션이다.

 

• xferlog_enable=YES
사용자들의 파일 업로드/다운로드 등의 기록을 LOG 로 남기겠다는 의미이다. (xferlog_std_format parameter 에 따라 형식이 정해지는듯 하다)

 

• ftpd_banner=Welcome to iwinv FTP
FTP 접속시 보여줄 메세지, 활성화되지 않을시 FTP의 버젼 정보가 나타난다.

 

 

vsftp 패시브 포트 및 방화벽 설정


  

간혹 방화벽 때문에 FTP 접속이 안되거나 데이터 전송이 안되는 경우가 종종 발생한다.

FTP 사용때문에 방화벽 사용을 중단할수는 없으니 아래와 같이 패시브 포트라는것을 설정하는 방법이 있다.

  

• vsftp 패시브 포트 설정

 pasv_enable=Yes
pasv_min_port=50000
pasv_max_port=50005

∗ 50000 ~ 50005 번 포트까지는 패시브 포트로 사용하겠다는 의미이며 동시접속자와 동시 파일 전송갯수를 고려하여 범위를 잡아야 한다.

 

• 방화벽 설정

 

1. 위와 같이 설정하였다면 ELCAP 방화벽에서 인바운드 TCP 50000 ~ 50005 번까지 포트를 오픈해주면 된다.

 

2. 혹시 리눅스 서버에 iptables 방화벽을 사용하고 있다면 아래와 같이 방화벽 설정을 하고 저장해준다.

 iptables -I INPUT 1 –m state —state NEW –m tcp –p tcp —dport 50000:50005 –j ACCEPT

 

iptables-save > /etc/sysconfig/iptables

FTP 서버를 구축완료 하였다면 FTP 클라이언트 프로그램을 이용하여 데이터를 전송하거나 다운 받을 수 있으며

일반적으로는 FTP 아이디와 패스워드는 root 계정이 아닌 일반계정을 사용하여 로그인하게 된다.