2008. 3. 17.

[Linux] vsftpd install

아래 리스트는 현재 VSFTP 를 신뢰하고 사용하고 있는 대표적인 사이트입니다.
ftp.redhat.com
ftp.suse.com
ftp.debian.org
ftp.openbsd.org
ftp.freebsd.org
ftp.gnu.org
ftp.gnome.org
ftp.kde.org
ftp.kernel.org
rpmfind.net
ftp.linux.org.uk
ftp.gimp.org
ftp-stud.fht-esslingen.de
gd.tuwien.ac.at
ftp.sunet.se
ftp.ximian.com
ftp.engardelinux.org
ftp.sunsite.org.uk
ftp.isc.org



1. VSFTP 설치

vsftp 홈페이지 : http://vsftpd.beasts.org/
vsftp 다운로드 : ftp://vsftpd.beasts.org/users/cevans/

먼저 VSFTP의 설치를 위해 ftp://vsftpd.beasts.org/users/cevans/ 에 접속해 최신버젼을
다운받습니다. 현재 이 강좌를 쓰고 있는 시점의 최신버젼은 vsfpd-2.0.1 버젼이군요..
그럼 vsftpd-2.0.1을 다운받았다는 가정하에 이강좌를 진행하겠습니다.
버젼별로 큰 차이는 없으니까 다른 버젼을 1.2.2 버젼을 선택하신분들도 설치하시는데는
큰 어려움이 없으실겁니다.

다운로드 : wget http://ftp.superuser.co.kr/pub/FTP/vsftpd/vsftpd-2.0.3.tar.gz

ex)
# cd /home/imsi/
# tar xvfz vsftpd-2.0.3.tar.gz
# cd vsftpd-2.0.3
# make


VSFTP를 운영하기 위해서는 nobody 사용자가 필요합니다. 다음과 같이 현재 nobody 사용자가
존재하는지 체크를 하세요

[root@develop vsftpd-2.0.3]# grep nobody /etc/passwd
nobody:x:99:99:Nobody:/:/bin/bash
VSFTP는 empty 라는 디렉토리를 필요로 합니다. 기본구성은 /usr/share/empty 입니다.
/usr/share/empty 디렉토리가 존재하는지 확인한 후 존재하지 않는다면 empty 디렉토리를 생성해 줍니다.

다음은 Anonymous FTP에서 사용할 ftp 계정이 필요합니다.
ftp 계정이 존재하지 않는다면 추가해야 됩니다.
ftp 계정의 HOME Directory 즉 Anonymous 접근의 루트로
/var/ftp 로 설정하기 위해 -d /var/ftp 옵션을 주어 ftp 계정을 생성해 줍니다.
먼저 /var/ftp 디렉토리를 생성합니다. 만약 이미 /var/ftp 라는 디렉토리가 있을 경우 다음과 같이
디렉토리의 소유자와 그룹을 root로 변경하고 og(Other, Group)에 w(쓰기권한)을 제거합니다


* ftp 계정이 없고 /var/ftp가 존재하지 않을경우
[root@develop vsftpd-2.0.3]# mkdir /var/ftp --> /var/ftp 가 없을 경우


이제 install 과정을 진행하겠습니다.
make install 을 해 줌으로서 생성된 vsftpd 파일이 /usr/local/sbin 에 복사가 되고 vsftpd의 man 페이지가 /usr/local/man/man5, /usr/local/man/man8 로 복사가 되고 inet 모드로 운영할 때 사용할 vsftpd 파일도 /etc/xinetd.d 디렉토리에 복사됩니다.
make install을 진행하기 전에 /usr/local/sbin 디렉토리와 /usr/local/man/man5, /usr/local/man/man8 디렉토리를 먼저 생성해 줍니다.
[root@develop vsftpd-2.0.3]# mkdir /usr/local/sbin
[root@develop vsftpd-2.0.3]# mkdir /usr/local/man/man8
[root@develop vsftpd-2.0.3]# mkdir /usr/local/man/man5

위와 같이 출력되면 에러 없이 install 이 실행된것입니다.

이제 VSFTP의 환경설정파일인 vsftpd.conf를 /etc 디렉토리에 복사합니다.
[root@develop vsftpd-2.0.3]# cp vsftpd.conf /etc



시스템의 local 사용자들의 접속을 허가 하기 위해 복사된 /etc/vsftpd.conf 를 열고
local_enable=YES 부분과 write_enable=YES, local_umask=022 부분의 주석을 제거합니다.
[root@develop vsftpd-2.0.1]# vi /etc/vsftpd.conf





VSFTP 설치하기

리눅스에서 사용할 수 있는 ftp 데몬은 proftp, wu-ftp를 비롯하여 많은 데몬들이 있습니다.
그중 레드헷의 최신 배포판에서 기본 ftp 데몬으로 채택하고 있는 vsftp의 설치방법과 운영방법,
활용법에 대해 얘기하려 합니다.

0. 왜 VSFTP를 추천하는가?
서버 운영에 있어서 가장 중요한 요소는 보안문제입니다.
기존의 proftp와 wu-ftp 는 보안 홀에 대한 보고가 빈번히 일어나 서버의 보안이 흔들린 경우가
많았습니다.
vsftp 는 보안부분을 특히 강조한 서버데몬으로서 REDHAT, SUSE, OPEN-BSD에서 기본 FTP 데몬으로
채택하고 있으며 vsftp를 매우 신뢰하고 있씁니다.
vsftp에서 보안, 빠른 퍼모먼스, 안정성을 주요 특징으로 소개하고 있고 그 성능도 여느 ftp 서버
보다 탁월한듯 합니다.
지원하는 대표적인 기능으로는 가상IP 지원, 가상유저 지원, Standalon 과 inetd 지원, 강력한 사용자
설정, 전송 대역폭 조절기능, 환경설정파일을 IP별로 독립적 운영 지원, IP별 제한기능등이 있습니다.
또한 config 파일의 설정문법도 아주 간단해서 FTP 서버관리를 쉽게 할 수 있습니다.

아래 리스트는 현재 VSFTP 를 신뢰하고 사용하고 있는 대표적인 사이트입니다.
ftp.redhat.com
ftp.suse.com
ftp.debian.org
ftp.openbsd.org
ftp.freebsd.org
ftp.gnu.org
ftp.gnome.org
ftp.kde.org
ftp.kernel.org
rpmfind.net
ftp.linux.org.uk
ftp.gimp.org
ftp-stud.fht-esslingen.de
gd.tuwien.ac.at
ftp.sunet.se
ftp.ximian.com
ftp.engardelinux.org
ftp.sunsite.org.uk
ftp.isc.org

이러쿵 저러쿵 얘기하는것 보다 위의 리스트들이 더 신뢰를 주는것 같군요.


1. VSFTP 설치

vsftp 홈페이지 : http://vsftpd.beasts.org/
vsftp 다운로드 : ftp://vsftpd.beasts.org/users/cevans/

먼저 VSFTP의 설치를 위해 ftp://vsftpd.beasts.org/users/cevans/ 에 접속해 최신버젼을
다운받습니다. 현재 이 강좌를 쓰고 있는 시점의 최신버젼은 vsfpd-2.0.1 버젼이군요..
그럼 vsftpd-2.0.1을 다운받았다는 가정하에 이강좌를 진행하겠습니다.
버젼별로 큰 차이는 없으니까 다른 버젼을 1.2.2 버젼을 선택하신분들도 설치하시는데는
큰 어려움이 없으실겁니다.

다운받은 파일을 /root/SRC 라는 디렉토리에 옮겨서 설치작업을 시작하도록 하겠습니다.
/root/SRC 에서 작업하는 특별한 이유가 있는건 아닙니다. 그러니까 각자 작업공간을 만들어
작업하시면 됩니다. 저는 소스설치한 데몬이나, 유틸의 소스들을 한곳에 모아두는 습관이
있어 /root/SRC 에서 항상 작업을 하는편입니다. 뽀족히 설치작업할 위치가 없다면 저를 따라
/root/SRC 에서 작업을 하는게 좋겠네요


파일이 설치할 디렉토리로 옮겨졌으면 vsftpd-2.0.1.tar.gz 을 압축을 해제합니다.





압축이 풀리면 vsftpd-2.0.1 이라는 디렉토리가 생깁니다. 설치를 위해 이 디렉토리로 이동합니다.




VSFTP 소스가 있는 디렉토리에서 make 명령을 하면 vsftpd 라는 바이너리 파일이 생성됩니다.





ls 명령으로 새로 생성된 vsftpd 바이너리 파일을 확인할 수 있습니다.



VSFTP를 운영하기 위해서는 nobody 사용자가 필요합니다. 다음과 같이 현재 nobody 사용자가
존재하는지 체크를 하세요
[root@develop vsftpd-2.0.1]# grep nobody /etc/passwd
nobody:x:99:99:Nobody:/:/bin/bash



위와같이 nobody 가 존재할 경우는 nobody를 새로 생성하지 않아도 됩니다.
만약 nobody 사용자가 존재하지 않을경우 아래와 같이 nobody 사용자를 추가해 줍니다.




VSFTP는 empty 라는 디렉토리를 필요로 합니다. 기본구성은 /usr/share/empty 입니다.
/usr/share/empty 디렉토리가 존재하는지 확인한 후 존재하지 않는다면 empty 디렉토리를 생성해 줍니다.





다음은 Anonymous FTP에서 사용할 ftp 계정이 필요합니다.
ftp 계정이 존재하지 않는다면 추가해야 됩니다.
ftp 계정의 HOME Directory 즉 Anonymous 접근의 루트로 /var/ftp 로 설정하기 위해 -d /var/ftp 옵션을 주어 ftp 계정을 생성해 줍니다. 먼저 /var/ftp 디렉토리를 생성합니다. 만약 이미 /var/ftp 라는 디렉토리가 있을 경우 다음과 같이 디렉토리의 소유자와 그룹을 root로 변경하고 og(Other, Group)에 w(쓰기권한)을 제거합니다

* /var/ftp가 존재할 경우


* ftp 계정이 없고 /var/ftp가 존재하지 않을경우
[root@develop vsftpd-2.0.1]# mkdir /var/ftp --> /var/ftp 가 없을 경우




이제 install 과정을 진행하겠습니다.
make install 을 해 줌으로서 생성된 vsftpd 파일이 /usr/local/sbin 에 복사가 되고 vsftpd의 man 페이지가 /usr/local/man/man5, /usr/local/man/man8 로 복사가 되고 inet 모드로 운영할 때 사용할 vsftpd 파일도 /etc/xinetd.d 디렉토리에 복사됩니다.
make install을 진행하기 전에 /usr/local/sbin 디렉토리와 /usr/local/man/man5, /usr/local/man/man8 디렉토리를 먼저 생성해 줍니다.
[root@develop vsftpd-2.0.1]# mkdir /usr/local/sbin
[root@develop vsftpd-2.0.1]# mkdir /usr/local/man/man8
[root@develop vsftpd-2.0.1]# mkdir /usr/local/man/man5




디렉토리가 모두 생성되었으면 make install을 합니다.



위와 같이 출력되면 에러 없이 install 이 실행된것입니다.

이제 VSFTP의 환경설정파일인 vsftpd.conf를 /etc 디렉토리에 복사합니다.
[root@develop vsftpd-2.0.1]# cp vsftpd.conf /etc




시스템의 local 사용자들의 접속을 허가 하기 위해 복사된 /etc/vsftpd.conf 를 열고
local_enable=YES 부분과 write_enable=YES, local_umask=022 부분의 주석을 제거합니다.
[root@develop vsftpd-2.0.1]# vi /etc/vsftpd.conf



주석을 제거했으면 저장하고 편집모드를 빠져나옵니다.


마지막으로 local 계정 사용자들의 로그인 인증을 위해 설치디렉토리안의 RedHat 디렉토리안에
있는 vsftpd.pam 파일을 /etc/pam.d 디렉토리에 ftp 라는 이름으로 복사를 합니다.


이제 모든 설치 과정은 끝났습니다. 그럼 VSFTP가 잘 작동하는지 테스트를 해 볼껀데 테스트는
xinetd 모드로 VSFTP 데몬을 돌리고 VSFTP의 standalone 모드로 운영하는 방법과 xinetd 모드로
운영하는 자세한 방법은 'VSFTP 운영및 활용 강좌'에서 다루도록 하죠.

우선 install 할때 복사되었던 /etc/xinetd.d/vsftp 파일을 열어 disable = no 로 설정되어 있나 확인합니다.
혹시 disable = yes 로 되어 있다면 no 로 변경해 줍니다.

[root@sslife03 /etc/init.d]# /etc/init.d/vsftpd restart


# ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.0.3)
Name (localhost:root):

## 여기까지 완료

정상 포트 확인
# netstat -na | grep 21 | grep LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

댓글 없음: