강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

== 5. CentOS 4.2 VSFTP 설치및 운영하기 ==

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문


||| [CentOS] 5. FTP (vsftp) 설치 및 설정파일 정복하기 |||
 

재성이의 5번째 강좌, CentOS 기반에서 FTP ( vsftp) 설치 및 운영하기 입니다. .
 

1.FTP 란

앞 강좌인 proftp에서도 언급을 하였지만 바로 vsftp를 보시는분을 위하여 약간의 중복내용이 있겠습니다.

FTP는 "File Transfer Protocol" 의 약자로써 쉽게 말해 서버에(=홈페이지) 에 자료를 올리기위한 규정같은 것이라고 보시면 됩니다. 다른 자료들을 보면 구구절절 내용이 많은데 내용적인 측면을 공부하시려면 좀더 자료를 찾아 보시고 여기서는 간략하게 Linux 에서 ftp를 설치하고 사용하는데 필요한 계념및 정보들을 알려드리는게 맞는것 같습니다.

일반사람들이 자신의 계정이나 혹은 무계정으로 ftp에 접속하여 홈페이지자료를 올린다거나
음악,영화,프로그램의 저장목적으로 많이 사용하며 기타 저장매체가 없어도 인터넷만 된다면
아주 효율적으로 자료를 확보할수있기 때문에 ftp를 씁니다.
관리자 입장에서는 백업과 서버이전작업시 꼭 필요한 서비스이겠지요... ^^

먼저 ftp는 port 21 을 사용합니다.
보통전송모드에는 아스키모드(일반모드) 와 패시브모드(보안이강화된 모드) 가 있습니다.
우리가 설치할(컴파일로) vsftp 의 설정파일은 서버단에서 /etc/vsftpd.conf 입니다.
=>/usr/local/아래에 설치를 하는데 설치후 vsftpd.conf를 /etc 아래로 복사하여 설정합니다. 참고
하시길 바랍니다.
설정파일인 vsftpd.conf 에서 ftp에 관련된 모든 내용을 셋팅할수있습니다.
그리고 proftp보다 좀더 보안적으로 성격이 강하며 성능면에서도 더 좋다고 느꼈습니다.
이 내용은 이 강좌 마지막부분에서 낫낫히 알려 드리겠습니다.

그럼 이제 사뿐히 설치해 볼까요... (컴파일로 설치합니다. rpm은 누구나 한번에 설치다 하니 추후에...)






2. VSFTP 컴파일 설치하기

########## 설치되어 있는지 확인 하기 ##########

=> 서버에서 21번포트(ftp)를LISTEN 하고 있는 서비스들을 봅니다.

[root@lecture ~]# netstat -anp | grep LISTEN
tcp   0    0 0.0.0.0:649   0.0.0.0:*  LISTEN   1739/rpc.statd      
tcp   0    0 0.0.0.0:110   0.0.0.0:*  LISTEN   1923/xinetd         
tcp   0    0 0.0.0.0:111   0.0.0.0:*  LISTEN   1720/portmap        
tcp   0    0 0.0.0.0:631   0.0.0.0:*  LISTEN   1848/cupsd          
tcp   0    0 0.0.0.0:25    0.0.0.0:*  LISTEN   1941/sendmail: acce 
tcp   0      0 :::22            :::*         LISTEN      1910/sshd           

=> 21번 포트가 활성화 되어있지 않음을 위의 명령어로 알수가 있습니다.

자 위의 결과처림 아직 21번포트를 LISTEN하고 있는 ftp 서비스는 보이질 않는고
sendmail 및 ssh등의 서비스만이 있음을 알수있다. 그리고 pstree라는 명령어로
ftp프로세서가 있는지도 확인해 봅니다. 혹시나 설치가 되어있더라도 중복설치
가능하니 걱정말고 다음 관정으로 넘어간다.주의할점은 어떤것이든지 덮어씌워
설치를 할때는 그 서비스는 내려놓고 하는것이 정석입니다. ^^

vsftp 를 다운받아 설치하기

항상 말하는것이지만 컴파일설치시 보통 /usr/local/에서 주로 합니다.
그러나 이것은 절대적인것은 아니며 만약 rpm으로 설치를 하시면 경로는 대부분
/etc/아래에 설정파일같은것들이 다 들어가게 됩니다. 참고하시구요.
다음과같이 다운로드하고 설치합니다.


########## vsftp 설치하기 ##########

cd /usr/local
wget http://ftp.suidc.com/pub/FTP/vsftpd/vsftpd-2.0.3.tar.gz
tar xvfz vsftpd-2.0.3.tar.gz
cd vsftpd-2.0.3


make (configure 과정은 없으니 바로 make 한다.)

바로 make install하면 install시 필요한 특정위치의 디렉토리들이 없어서 오류가 뜬다
그래서 미리 오류날 부분들을 만들어 놓고 install 하는것이 좋다.


=== install 시 체크사항들 ===

grep nobody /etc/passwd (nobody계정이 존재해야한다.)
mkdir /usr/share/empty

mkdir /var/ftp
chown root:root /var/ftp
chmod og-w /var/ftp

mkdir /usr/local/sbin
mkdir /usr/local/man/man8
mkdir /usr/local/man/man5
============================


[root@lecture /usr/local/vsftpd-2.0.3]# make install
if [ -x /usr/local/sbin ]; then
install -m 755 vsftpd /usr/local/sbin/vsftpd;
else
install -m 755 vsftpd /usr/sbin/vsftpd; fi
if [ -x /usr/local/man ]; then
install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8;
install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5;
elif [ -x /usr/share/man ]; then
install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8;
install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5;
else
install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8;
install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
if [ -x /etc/xinetd.d ]; then
install -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi

cp vsftpd.conf /etc (설정파일을 /etc 로 복사해 둡니다.)
cp RedHat/vsftpd.pam /etc/pam.d/ftp (인증관련 처리)

=> 위의메세지가 보이면 설치가 정상적으로 된것입다.
나무색의 글씨처럼 /etc/xinetd.d/vsftpd 에서 우리는 수퍼데몬에서
vsftp를 실행하는 파일이 저기있구나라고 유추할수있고 실제로 이파일의
정보를 참고하여 프로세스를 띄워주게 됩니다.

vi /etc/xinetd.d/vsftpd 해봅니다.
# default: on
# description:
# The vsftpd FTP server serves FTP connections. It uses
# normal, unencrypted usernames and passwords for authentication.
# vsftpd is designed to be secure.
service ftp
{
disable = no (disable 즉 불가능이 no 니까 서비스를 가능한상태로 두겠다라는 의미)
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
# server_args =
# log_on_success += DURATION USERID
# log_on_failure += USERID
nice = 10
}


위의 내용에서 disable = no로 되어있어야 합니다.
server = /usr/local/sbin/vsftpd 부분은 실제 수퍼데몬이 참조하는 실행파일입니다.

약간다르지요. 그냥 데몬을 띄우는거랑은 조금 차이를 느끼실겁니다.
자 확인을 하셨으면 이제 데몬을 띄워봅니다. 이렇게 하세요..

netsysv로 선택했던 직접 vi /etc/xinetd.d/vsftpd 를 체크하던지
둘중에서 편안한 방법을 사용하신다음 아래와같이 슈퍼데몬을 재가동하면
포트도 열린것을 확인할수있고 pstree 하시면 프로세서가 딱 띄워져 있는것을
확인하실수 있을 것입니다.


[root@lecture ~]# /etc/rc.d/init.d/xinetd restart
xinetd 를정지함:                                          [ 확인 ]
xinetd(을)를 시작함:                                      [ 확인 ]


[root@lecture ~]# netstat -anp | grep LISTEN
tcp   0    0 0.0.0.0:649   0.0.0.0:*  LISTEN   1739/rpc.statd      
tcp   0    0 0.0.0.0:110   0.0.0.0:*  LISTEN   1923/xinetd         
tcp   0    0 0.0.0.0:111   0.0.0.0:*  LISTEN   1720/portmap
tcp   0    0 0.0.0.0:21     0.0.0.0:* LISTEN   3195/xinetd       
tcp   0    0 0.0.0.0:631   0.0.0.0:*  LISTEN   1848/cupsd          
tcp   0    0 0.0.0.0:25    0.0.0.0:*  LISTEN   1941/sendmail: acce 
tcp   0      0 :::22            :::*         LISTEN      1910/sshd           

vsftp데몬이라하여도 슈퍼데몬이 이를 관리하여 띄워주므로 표시는 xinetd라고 표시되나
포트번호를 보면 21번이라고 ftp가 추가되었음을 알수가 있습니다.

여기까지가 vsftp의 설치과정및 실행방법입니다.

설치만한다고 해서 바로 사용할수있는 것은 아닙니다. 이시죠? ^^

가장 기본적인 vsftpd.conf를 설정해주셔야지 비로서 외부에서 접속할수있겠지요.

protfp보다 더욱 체계적으로 보안셋팅을 할수있는 vsftpd.conf 를 해부해 봅시다.





3. vsftpd.conf 완전 분석하기

ftp의 계념과 설치방법에 대해 알아보았습니다. 별 어려움 없이 넘어오셨을 것입니다.
마지막으로 설치후 기본적인 셋팅과 보안적인 셋팅등 입맛에 맛게 ftp를 설정하는데
/etc/vsftpd.conf 설정파일이 그것이며 기본셋팅및 다른 어떤 셋팅
항목들이 있는지 직접 설정파일을 열어 항목들과 설명만 정리하였습니다.
빨간색 부분은 최소 기본적으로 해주셔야 할 것들이고 나머지는 상황에 따라 하시면 됩니다.
특히 vsftp와는 다르게 접근계정을 파일에 명시하고 접속을 허락하고 거부하는
정책
을 유심히 보시길 바라면 다른 사항은 비슷합니다.

=========== vsftpd.conf ==========================================================
[root@lecture ~]# vi /etc/vsftpd.conf # 익명사용자를 접속시킬것이냐? # 공개용 ftp가 아니라면 no 혹은 주석처리!! # anonymous_enable=YES # local유저 즉 이서버에 있는 계정들을 접속가능하게 # 할것이냐? 당근이지요.. local_enable=YES # # # 쓰기권한부여할거냐? write_enable=YES # 쉽게말해서 로컬접속자 접속권한을 걸어주는건데 # umask 계산법은 따로 찾아보시구요 # 022해주시면 755라는 퍼미션으로 접속하게 됩니다. local_umask=022 # 익명사용자가 업로드 할수있게 할거냐? # 함부러 큰파일들 올리면 위험하겠지요 신중히... ^^ # anon_upload_enable=YES # # # 익명사용자가 디렉토리를 만들게 할거냐? # 익명사용자를 허용안할거면 익명관련은 다 no겠지욤 ^^ #anon_mkdir_write_enable=YES #원격에서 접속하면 환영문자 사용할건지? dirmessage_enable=YES #업,다운로드 로그 남길건지? xferlog_enable=YES # # 업,다운로드 로그 파일지정 xferlog_file=/var/log/vsftpd.log # ascii 모드 파일을 취급(업,다운로드)할거냐? #ascii_upload_enable=YES #ascii_download_enable=YES # ftp서버접속시 보여줄 멘트 #ftpd_banner=Welcome to blah FTP service. # 이자식은 좀 웃깁니다. # 단순히 yes , no 계념이 아니고 # 먼저 yes를 하면 다름 나오는 파일에 명시된 # 계정들을 chroot(홈디렉토리 위로갈수있는) 하겠다라는 # 뜻이되고 no를 하면 아래파일에 적힌 계정들만 # chroot 못하게 하겠다라는 뜻 #chroot_list_enable=YES #chroot_list_file=/etc/vsftpd.chroot_list ######################################################### # # 여기서부터는 기본 설정에는 없고 필요시 추가해서 # # 쓰는 설정들입니다. # ######################################################### # PAM 파일명을 지정 (설치할 때 /etc/pam.d/vsftpd명으로 복사함) pam_service_name=vsftpd # wtmp에 로그 남기기 (YES로 해야만 last 명령어로 접속 여부 확인 가능) session_support=YES # 사용자가 자신의 home directory를 벗어나지 못하도록 설정 chroot_local_user=YES # 새로운 디렉토리에 들어갔을 때 뿌려줄 환경 메시지를 저장한 파일명 # message_file=.message # xferlog 형식으로 log를 남기려면 (위에서 이미 YES로 했음) # xferlog_std_format=NO # #  - xferlog 표준 포맷은 로긴, 디렉토리 생성등의 로그를 남기지 않음 #   그러나 vsftpd 스타일 로그는 이를 포함한 보다 상세한 로그를 남김 #  - vsftpd 스타일 로그 예 # #  Sun Jul 12 01:38:32 2003 [pid 31200] CONNECT: Client "127.0.0.1" #  Sun Jul 12 01:38:34 2003 [pid 31199] [truefeel] FAIL LOGIN: Client "127.0.0.1" #  Sun Jul 12 01:38:38 2003 [pid 31199] [truefeel] OK LOGIN: Client "127.0.0.1" #  Sun Jul 12 01:38:41 2003 [pid 31201] [truefeel] OK MKDIR: Client "127.0.0.1", "/mp3" #  Sun Jul 12 01:39:06 2003 [pid 31201] [truefeel] OK UPLOAD: Client "127.0.0.1", "/델리 #  스파이스 5집 - [04]키치죠지의 검은 고양이.mp3", 6855473 bytes, 3857.39Kbyte/sec # 전송속도 제한 (0은 제한없음, 단위는 초당 bytes) anon_max_rate=0 local_max_rate=0 trans_chunk_size=0 # 최대 접속 설정 (단 xinetd를 통하지 않고 standalone으로 동작할 때만 사용 가능) # standalone을 위해서는 listen=YES 추가하고 별도로 vsftpd를 띄워야 함 # # max_clients=최대 접속자 수, max_per_ip=IP당 접속 수 # max_clients=100 # max_per_ip=3 # Standalone 으로 운영할 때 listen=YES. 포트 변경을 원할 경우 listen_port 설정 # 디폴트 포트는 21번 포트이다. # listen=YES # listen_port=21 http://kltp.kldp.org/stories.php?story=03/10/09/5659809 참고함

==================================================================================


지금까지 재성이의 FTP 강좌였습니다. 최대한 간단하게 기술하면서 최소한의 계념과 설치 그리고 가장 궁금해 하시는 ftp설정에 관하여 다루어 보았습니다. 다른 문서들을 보면 설치만 자세히 있고 어떤것은 설정파일 내용만 있는 것들이 많은데 여기서는 이강좌 하나로 ftp 은 거의 해결되었으면 하는 바램이며 그럼 다음 강좌때 뵙겠습니다.
 
 
 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,845 개
  • 현재 접속자 :  95 명