본문 바로가기
Server (LInux & Windows)/Centos(센토)

(Centos 6.4 ) FTP 설치 및 설정법 (VSFTP 데몬 - vsftpd)

by izen8 2014. 2. 12.
반응형



1. 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 를 신뢰하고 사용하고 있는 대표적인 사이트입니다.


참고 : 여기



2. VSFTP 설치하기

A. YUM으로 설치
# yum -y install vsftpd

설정파일 1 (/etc/vsftpd/vsftpd.conf)
# vi 
/etc/vsftpd/vsftpd.conf

/*
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Welcome to izen8 FTP SERVER(환영메시지, 원하는 것으로 바꾸시면 됩니다.)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_port=8821
port_enable=YES
pasv_enable=YES
ftp_data_port=8820
pasv_min_port=50031
pasv_max_port=50040
session_support=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrapper=YES
*/

설정파일 2 (/etc/vsftpd/user_list)
--> 상단 userlist_enable=YES 로 설정하면 /etc/vsftpd/user_list 설정에 들어있는 특정 계정의 접근을 막는다는 의미이다. 접속 거부자 명단으로 사용한다는 뜻...
FTP 프로그램으로 접근하려는 계정이 /etc/vsftpd/user_list 설정에 존재한다면 [ 530 퍼미션( permission ) 오류 ] 발생

설정파일 3 (/etc/vsftpd/ftpusers)
--> 설정파일 2와 동일한 내용

설정 파일 2~3을 적용해야 접속이 가능해진다.

설정파일 4 (vi /etc/vsftpd/chroot_list 
)
빈파일 생성후  접속을 허용할 사용자 추가  'root'

-- 방화벽 설정 --
설정파일 5 (
/etc/sysconfig/iptables)
# vi /etc/sysconfig/iptables

/*
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8820 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8821 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 50031:50040 -j ACCEPT
*/

20, 21 포트는 사용 불가함 대체 포트로 8821과 8820을 사용
패시브 모드를 위한 포트를 50031~50040까지 할당
관리자 사용자는 자신의 계정 상위로 이동이 가능하도록 설정

출처 : 여기


방화벽 재시작

# /etc/init.d/iptables restart
# /etc/init.d/iptables status

3. 자동 실행 설정

이제 standalone으로 vsftpd를 실행/정지/재시작 시키는 방법은 아래와 같습니다.

# /etc/init.d/vsftpd start
# /etc/init.d/vsftpd stop
# /etc/init.d/vsftpd restart

주로 이 세 가지를 많이 사용하고 다른 옵션으로는 condrestart, status가 있습니다.

# /etc/init.d/vsftpd
사용법: /etc/init.d/vsftpd {start|stop|restart|condrestart|status}

서버를 재부팅할 때마다 일일이 켜줄 수 없으므로 자동으로 켜지도록 설정을 할 차례입니다.

# chkconfig –add vsftpd
# chkconfig –list | grep vsftpd
vsftpd 0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제

현재는 모든 런레벨에서 아예 안켜지도록 되어있으니 2345 런레벨에서 자동으로 켜지도록 아래처럼 설정합니다.

# chkconfig –level 2345 vsftpd on
# chkconfig –list | grep vsftpd
vsftpd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제

보통 웹서비스를 위해서 동작하는 레벨인 5레벨과 그 이하의 레벨인 234에서도 vsftpd는 동작하게 됩니다. 서버 재부팅이 필요하다면 그냥 재부팅만 시켜주면 vsftpd가 동작하게 되는 것이지요!


프로세스 확인 및 포트확인
# ps -ef | grep vsftpd
# netstat -ntlp



.........................................................................................................................................................................

오류사항

vsftp에서 500 OOPS: cannot change directory 오류가 나올 때
참조 : http://opencode.co.kr/bbs/board.php?bo_table=linux_tips&wr_id=27Viewer
/etc/vsftpd/vsftp.conf를 수정했는데도 불구하고 500 애러가 나오면서 접속이 안될때는
SELinux 때문이라고 합니다.
- OOPS: cannot change directory:/home/ueco

-> # setsebool -P ftp_home_dir=1 명령으로 해결

- OOPS: could not read chroot() list file:/home/ueco
-> vsftp.conf설정에서 chroot관련 설정을 모두 주석처리함

- OOPS: 500 OOPS: child died
디렉터리 목록을 획득할 수 없습니다.
Entering Passive Mode (10,250,114,243,21,35).
->컴퓨터의 FTP툴에서 Passive 모드를 비활성화해서 접속함



반응형

댓글