728x90

FTP서버(vsftpd) 구축


 서버 설치후 FTP 서버설치는 옵션이 아닌 필수가 되었습니다. 예전에는 proftpd를 많이 사용하였지만, vsftpd 몇가지 장점(bin모드로만 파일 전송, 쉬운환경설정등)이 있어 최근에는 vsftpd를 많이 사용하고 있습니다.


 

1. 설치
  vsftpd는 앞의 설치 강좌데로 설치했다면, 이미 설치되었을 것입니다.
하지만 설치가 되었는지 확인할 필요가 있습니다.  확인하는 법은 다음과 같습니다.

[root@study ~]# rpm -qa | grep vsftpd
vsftpd-2.0.1-5
위와같은 결과가 나왔다면 배포판과 함께 이미 설치된 것입니다.
만약 위의 결과와 같이 나오지 않아도, 걱정하실 필요 없이 다음에 설명하는 방법으로 설치한다면 쉽게 설치 가능합니다.


2. vsftpd 설치
  금번 강좌를 따라서 설치하고 2. Fedora Core 3 설치후 기본 셋팅강 좌를 보셨다면, yum을 사용하여 쉽게 업데이트 할 수있는 방법이 있습니다. 다음과 같은 방법으로 설치도 가능합니다.

[root@study ~]# yum install vsftpd
Setting up Install Process
Setting up Repos
base 100% |=========================| 1.1 kB 00:00
updates-released 100% |=========================| 951 B 00:00
Reading repository metadata in from local files
base : ################################################## 2622/2622
updates-re: ################################################## 910/910
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for vsftpd to pack into transaction set.
vsftpd-2.0.1-5.i386.rpm 100% |=========================| 12 kB 00:00
---> Package vsftpd.i386 0:2.0.1-5 set to be updated
--> Running transaction check

Dependencies Resolved
Transaction Listing:
Install: vsftpd.i386 0:2.0.1-5 - base
Total download size: 119 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): vsftpd-2.0.1-5.i38 100% |=========================| 119 kB 00:02
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: vsftpd 100 % done 1/1

Installed: vsftpd.i386 0:2.0.1-5
Complete!

설치가 되어 있지않다면, 위와 같이 설치하겠냐고 묻게 됩니다.. "y"를 눌러 설치 하시기 바랍니다.


3. FTP 서비스 운영 ( 시작, 종료, 재시작, 자동시작설정)
  설치가 끝났다면, ftp서비스를 위해서 vsftpd를 시작합니다. 

[root@study ~]# /etc/rc.d/init.d/vsftpd start
vsftpd에 대한 vsftpd을 시작합니다: [ 확인 ]

이렇게 시작되었다면, ftp 프로그램을 사용하여 접속 테스트를 해 보도록 하겠습니다.

[root@study ~]# ftp localhost
Connected to study.superuser.co.kr.
220 (vsFTPd 2.0.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): study
331 Please specify the password.
Password: 비밀번호
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,158,1)
150 Here comes the directory listing.
226 Directory send OK.

위와같이 바로 접속되며, 사용자계정 및 비밀번호를 넣으면 접속이 된다.

ftp 서비스를 하고 싶지 않다면, 다음과 같이 정지 시킵니다.
[root@study ~]# /etc/rc.d/init.d/vsftpd stop
vsftpd를 종료하고 있습니다:                 [  확 인  ]

서버 부팅시 자동 시작을 위해 다음 명령으로 등록합니다.

[root@study ~]# chkconfig vsftpd on

이렇게 설정했다면, 재 시작시 자동으로 ftp 서비스가 시작 됩니다.


4. vsftpd의 다양한 기능 설정(vsftpd.conf)
  vsftpd는 다양한 기능이 있습니다. 꼭 필요한 몇개의 지시자에 대해 알아보도록 하겠습니다.

  1) 아스키모드로 파일전송 하려면?
vsftp는 기본적으로 아스키모드(ASCII)로의 파일 전송을 허용하지 않습니다. 윈도우와 리눅스등의 엔터문자로 인한 text파일 변조(??)등 때문에 기본 허용하지 않습니다. 만약 필요해서 허용 하려면 다음과 같이 설정하시기 바랍니다.

ascii_download_enable=YES
ascii_upload_enable=YES


  2) 쉘권한이 없는 사용자들이 ftp를 사용가능하게 하려면?
대부분의 ftp서버는 로그인시 쉘을 요구하게 됩니다. 하지만 쉘 권한을 주지 않은 사용자들에게 ftp접근 권한을 주려면 /etc/pam.d/vsftpd파일에서 4번째 줄에 #을 입력하여 주석 처리 합니다.
(check_shell=NO 라는 지시자가 있었지만 PAM인증을 받는 곳에서는 작동하지 않았다.)


#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
auth       required     pam_stack.so service=system-auth
#auth       required     pam_shells.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth


  3) 사용자 home 디렉토리를 벗어나지 못하게 하려면?
ftp사용자가 자기 home디렉토리를 벗어나지 못하게 하려면 다음과 같이 설정합니다.

chroot_list_enable=YES
chroot_local_user=YES
위와같이 설정합니다. 접속하면 /etc/vsftpd.chroot_list 파일이 없다고 에러가 나게 됩니다.
단순히 touch /etc/vsftpd.chroot_list 이렇게 파일을 만들어 주면 됩니다. 
 그리고 특정유저는 제외하려면 /etc/vsftpd.chroot_list 파일에 사용자 계정을 넣어줍니다.



  4) "."으로 시작하는 숨김파일을 기본적으로 보이게 하려면?
리눅스에서 "."으로 시작하는 파일은 숨김 파일입니다. 하지만, 다른 os에서는 "."으로 시작해도 숨김파일으로 취급하지 않는 경우가 있습니다. 이런경우 항상 "."으로 시작하는 파일을 보여주려면 다음과 같이 설정합니다.
force_dot_files=YES



  5) ftp 접속시 파일과 디렉토리의 소유권을 숨기려면?
특수한 목적으로 파일 및 디렉토리의 소유자를 숨길 경우가 있습니다. 이런 경우 다음과 같이 설정하면, ftp라는 사용자로 보이며, 본 ID는 보이지 않습니다. 
hide_ids=YES



  6) 하위디렉토리의 파일 및 디렉토리를 볼수 있는 ls -R 명령 허용하려면?
하위디렉토리 리스트를 보여주기 위해서 ls -R 명령어를 내릴때가 있습니다. 이런경우 대부분의 ftp 서버는 부하등의 이유로 막아 두게 됩니다. vsftpd또한 기본적으로 막아 놓은 상태이며, 허용하기 위해서는 다음 지시자를 입력하세요.
ls_recurse_enable=YES



  7) openssh에 chroot 패치가 된 것을 사용하는데 정책을 같이 적용하려면?
openssh에 패치를 가하면, ssh 또한 자기 home 디렉토리를 벗어나지 못하게 설정가능합니다. 이 정책은 /etc/passwd파일의 홈디렉토리 부분에 /home/사용자/./ 와 같이 "/./"을 붙여 사용자를 홈디렉토리로 제한하게 됩니다. 이 정책에 따라 적용하려면, 다음 옵션을 적용하시기 바랍니다.
passwd_chroot_enable=YES


  8) 파일을 올렸는데 시간이 이상하게 보인다면?

대부분의 ftp서버에서 시간 표현은 표준시각(GMT)을 보여주게 됩니다. 국내에서만 사용하는 ftp서버는 다음 옵션으로 국내 시간으로 보여줄 수 있습니다.
use_localtime=YES


  9) 전송속도를 제한하고 싶다면?
다운로드 받는 한 사용자가 네트웍 트래픽을 모두 사용해 버리는 것을 방지하기 위해서 대역폭을 조정해야 하는 경우가 있습니다. 다음 옵션으로 가능합니다. 뒤에 나오는 숫자의 단위는  (Bytes/Sec) 입니다.
local_max_rate=300000
위 설정은 300KByte/Sec의 대역폭을 제공합니다.


  10) 동시 접속자수를 제한하려면?
ftp서버에 접속할 수 있는 최대 접속수를 제한하려면, 아래의 설정으로 제한 가능합니다.
max_clients=10
위 설정은 동시에 10개의 연결으로 제한합니다.


  11) 한 IP당 접속할 수 있는 동시접속 수 제한하려면?
ftp서버의 한 사용자가 대역폭을 모두 사용해 버리는 것을 방지하기 위해, 전송 속도를 제한하면, flashget 등의 유틸리티로 몇개의 접속으로 나눠 받으면 대역폭 제한을 우회 할 수 있습니다. 이런경우 한 IP에서 접속 가능한 동시접속 수를 제한하므로 해결 가능합니다.
max_per_ip=2
위 설정은 한 IP에서 접속할 수 있는 연결을 2개로 제한합니다.


  12) PASSIVE 모드 사용시 사용하는 포트 범위를 제한하려면?
FTP에서 데이터 전송을 위해서 20번 포트를 사용합니다. 이경우 서버에서 클라이언트 쪽으로 연결을 하기 때문에 중간에 방화벽 또는 공유기등을 사용한다면, 정상작동하지 않을 수 있습니다. 이런 문제를 해결하기위해서 PASSIVE모드라는 것이 있고, 이 모드에서는 서버의 1024이후 포트를 사용합니다. 이 포트의 범위를 제한하기 위해서는 다음과 같이 설정합니다.
pasv_min_port=40000pasv_max_port=50000
위 설정은 PASSIVE에서 사용할 포트를 40000~50000로 합니다.



  13) mp3, wmv 등의 확장자를 가진 파일의 업로드를 금지하려면?
ftp를 통해 인증된 사용자가 파일을 올리는 것을 막는 방법은 거의 없었습니다. 이 vsftpd는 특이하게 특정파일 패턴을 제한하는 기능이 있습니다. 
deny_file={*.mp3,*.wmv}
위 설정은 mp3, wmv 파일을 전송하지 못하게 하는 방법입니다.



  14) 특정파일 패턴을 숨기려면?
특정파일이 서버내에는 존재하지만, ftp접속시 보여지지 않게 설정할 수 있습니다. 다음예를 보시기 바랍니다.
hide_file={*.mp3,.hidden,hide*,h?}
위 설정은 mp3파일, .hidden 파일, hide로 시작하는 파일을 보여지지 않게 하는 옵션입니다.

출처 : Tong - rockk님의 Linux통

728x90

'Programming > linux왕초보' 카테고리의 다른 글

리눅스 gcc 설치 방법  (0) 2008.09.10
CRON  (0) 2008.09.10
리눅스에서 압축파일 다루기  (0) 2008.09.10
iptables  (0) 2008.09.10
vsftp 설정 옵션  (0) 2008.09.10
RPM으로 패키지 관리하기  (0) 2008.09.10
NFS 마운트 (NAS장비)  (0) 2008.09.10
리눅스 CD 부팅법  (0) 2008.09.10
[펌]유닉스 및 리눅스 명령어 팁  (1) 2008.09.10
리눅스 tail 사용법  (0) 2008.09.10

+ Recent posts