You cannot see this page without javascript.

centOS FTP서버 구축

Linux 조회 수 1592 추천 수 0 2014.07.03 11:41:00

 

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 에서 작업을 하는게 좋겠네요

001.png

 

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

002.png

 

003.png

 

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

004.png

 

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

005.png

 

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

006.png

 

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

007.png

 

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

008.png

 

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

009.png

 

 
다음은 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가 존재할 경우
010.png

 

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

011.png

 

이제 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

012.png

 

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

013.png

 

위와 같이 출력되면 에러 없이 install 이 실행된것입니다.
 
이제 VSFTP의 환경설정파일인 vsftpd.conf를 /etc 디렉토리에 복사합니다.
[root@develop vsftpd-2.0.1]# cp vsftpd.conf /etc

014.png

 

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

015.png

 

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

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

016.png

 

 

이제 모든 설치 과정은 끝났습니다. 그럼 VSFTP가 잘 작동하는지 테스트를 해 볼껀데 테스트는
xinetd 모드로 VSFTP 데몬을 돌리고 VSFTP의 standalone 모드로 운영하는 방법과 xinetd 모드로  
운영하는 자세한 방법은 'VSFTP 운영및 활용 강좌'에서 다루도록 하죠.
 
우선 install 할때 복사되었던 /etc/xinetd.d/vsftp 파일을 열어 disable = no 로 설정되어 있나 확인합니다.
혹시 disable = yes 로 되어 있다면 no 로 변경해 줍니다.

017.png

 

vsftpd 의 실행을 위해 xinetd를 restart 합니다.

018.png

 

 
 
xinetd 데몬이 정상적으로 실행되었으면 anonymous 로 접속을 해 봅시다

 019.png

 

 
음.. 접속이 잘 되는군요.. 설치강좌는 여기까지

 

 

 

 

1. VSFTPD 설치

참고: vsftpd는 리눅스 운영체제에서 사용하는 ftp 데몬입니다.

# yum -y install vsftpd

 

2. vsftpd.conf 파일설정

참고: FTP 설정 파일입니다. 이 파일에서 익명 사용자를 제한하거나, 업로더 등 각종 FTP 설정을 할 수 있습니다.

# vi /etc/vsftpd/vsftpd.conf

 

anoymous_enable=YES                     //익명으로 접속을 제한할 시 NO로 설정.

pasv_enable=YES                           //액티브 모드로 사용할 시 NO로 설정 또는 이 구문을 삭제하면 됩니다.

 

3. 계정 생성

# useradd [ 계정명 ]

# passwd [ 계정명 ]

 

/etc/passwd 파일에서 두 사용자의 홈디렉토리를 같게 설정하면 됩니다.

 

user01:x:501:501:User01:/home/user01:/bin/bash
user02:x:502:502:User02:/home/user02:/bin/bash

 

 

user01:x:501:501:User01:/home/user01:/bin/bash
user02:x:502:502:User02:/home/user01/mydir:/bin/bash

 

 

이렇게 하면 user02 가 /home/user01/mydir 을 홈디렉토리로 갖게 됩니다.

대신 user02는 /home/user02 를 홈디렉토리로 사용하지 못합니다.

 

user02가 /home/user01/mydir 을 사용할 수 있도록 permission 조절을 해주셔야 합니다.

 

4. 방화벽 설정

참고: centos에서의 방화벽의 기본 정책은 모두 막아 버립니다.

       그래서, FTP서버에서 사용하는 포트 20, 21번을 아래의 설정값을 이용하여

        열어줘야 합니다.

# vi /etc/sysconfig/iptables

 

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT           // 구문 추가

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT           // 구문 추가

 

 

5. iptables 재시작

     # service iptables restart

 

 

 

 

 

6. vsftpd 시작 및 부팅시 자동 실행 설정

# service vsftpd start

# chkconfig --level 2345 vsftpd on

 

 

7. netstat -ntlp

"vsftpd"   "::21"  포트 확인   

 

 

8. Selinux 설정

 

1. vsftpd 가 설치되어 있는지 확인하고 설치한다.

[root@localhost sysconfig]# rpm -qa |grep vsftpd
[root@localhost sysconfig]# yum install vsftpd


2. 익명 접속을 제한 한다.

[root@localhost vsftpd]# vi /etc/vsftpd/vsftpd.conf

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO


3. vsftpd 서비스를 재시작한다.

[root@localhost vsftpd]# /etc/init.d/vsftpd restart
vsftpd를 종료 중:                                          [  OK  ]
vsftpd에 대한 vsftpd을 시작 중:                            [  OK  ]
[root@localhost vsftpd]#


** 위와 같이 했는데도 ftp 접속이 안되는 경우

ftp 정상적인 세팅 상태에서 로그인 후
500 OOPS: cannot change directory  (SELinux 정책 문제!!!)

와 같은 메세지가 출력되며 접속이 끊어질 경우 다음과 같이 하면 됩니다.

/etc/selinux/config 에서
SELINUX=permissive

와 같이 바꾸면 됩니다. SELINUX의 Deny를 permissive로..
즉 메세지만 로그에 남기고 접근을 허용하는 것이지요.
enforcing이 기본인데 이것은 접근을 차단하는 것입니다.


또다른 방법

[root@localhost selinux]# system-config-securitylevel
 
020.png

 



SELinux 를 허용으로 설정하면 SELINUX=permissive 로 변경된다.
 

 

 

디폴트로 사용자의 home 디렉토리에 쓰기를 막아놨을겁니다.
SELinux 설정에서 FTP 부분을 변경하시면 될것 같습니다.
변경방법은 콘솔상에서 하는방법과 x윈도우에서 변경하는 방법이 있습니다.

콘솔상에서 변경하시려면

setsebool -P ftp_home_dir 1
service vsftpd restart

와 같이 home 디렉토리의 읽고쓰기를 1(True)로 변경하시고
vsftpd를 재시작 하시면 됩니다.

x윈도우 상에서는 데스크탑 -> 시스템 설정 -> 보안 수준에 가셔서
SELinux 텝에 들어가시면 정책 수정중에 FTP 라고 있습니다.

그곳의 삼각형을 클릭하시면 아래로 3개의 정책이 더 나오는데
Ftp의 사용자 홈디렉토리 읽고/쓰기 허가 를 클릭 하시면 됩니다.

또는 FTP에 관하여 SELinux 정책을 아예 적용하지 않는 옵션을 설정하셔도 됩니다.
콘솔 상에서는

setsebool -P ftpd_disable_trans 1

혹은 정책 수정중에 Disable SELinux protection for ftpd daemon 을 클릭 하시면 됩니다.

p.s. SELinux 설정에 보시면 다른 서비스들도 기본으로 많이 막혀 있습니다.

 

 

 

 

1. FTP 환경설정파일 수정
 
~# vi /etc/vsftpd/vsftpd.conf
 
# 문서하단에 추가

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


2. chroot_list 파일안에, root 추가 (이파일안에 등록된 USER는 상위디렉토리 접근제한을 받지 않는다.)
 
~# vi /etc/vsftpd/chroot_list
 
root
 

 

vsftp, ftp 사용자 폴더를 제외한 다른 폴더 접근제한
 
1)파일을 편집
/etc/vsftpd/vsftpd.conf
 
chroot_local_user=YES 추가
 
2)ftp demon restart
/etc/init.d/vsftpd restart
 
 
*다음의 파일에 등록된 사용자들은 FTP 접속이 불가능
/etc/vsftpd.ftpusers
 
/etc/vsftpd.user_list
 
-------------------------------------------------------------------------------
 
1. ftpusers와 vsftpd.chroot_list 차이 

/etc/ftpusers 과 chroot_list_file=/etc/vsftpd.chroot_list 파일은 용도가 다릅니다. 

* /etc/ftpusers : 이건 접속을 제한하는 것입니다
. 즉, 여기에 등록된 ID는 ftp 접속 자체를 할 수 없습니다. 
* /etc/vsftpd.chroot_list : 여기에 써진 ID는 접속할 수 있습니다. 
다만, 자신의 홈디렉토리를 벗어날 수(상위디렉토리로 갈 수) 없습니다.
 
이를테면 홈이 /home/truefeel/ 일 때 /home/truefeel/ 를 벗어난 /etc, /home, /usr 등을 갈 수 없다는 것입니다. 
이해되시나요? 
보안상 홈보다 상위 디렉토리로 이동하는 것을 제한하는 경우가 많습니다. 

2. chroot_local_user 와 chroot_list_enable 설정을 함께 사용할 때 

제가 쓴 글을 다시 인용하여 설명하겠습니다. 

 
인용:

3) 사용자가 홈디렉토리를 못 벗어나게 하고 싶는데? 

 /etc/vsftpd.conf에 다음을 추가하면, 모든 사용자는 자신의 홈디렉토리만 접근할 수 있다. 

 chroot_local_user=YES 

 또한 특정 사용자로만 제한을 하고 싶다면 다음과 같이 한다. /etc/vsftpd.chroot_list에는 제한할 
 사용자 ID를 한줄에 하나씩 나열하면 된다. 

 chroot_list_enable=YES 
 chroot_list_file=/etc/vsftpd.chroot_list 

 주의할 것은 chroot_local_user=YES와 chroot_list_enable=YES를 함께 사용할 경우에는 
 /etc/vsftpd.chroot_list에 포함된 사용자 ID만 제한없이 홈디렉토리를 벗어날 수 있다. 
 즉, 반대로 작용한다. 



위의 내용을 설정부분만 뽑으면 이렇습니다. 

1) 조건 1 
코드:

chroot_local_user=NO 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list 


이런 경우는 /etc/vsftpd/chroot_list 파일에 설정한 ID는 홈디렉토리를 벗어날 수(즉, 상위로 갈 수) 없습니다. 

2) 조건 2 
코드:

chroot_local_user=YES 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list 


이런 경우는 /etc/vsftpd/chroot_list 파일에 설정한 ID만 홈디렉토리를 벗어날 수(즉, 상위로 갈 수) 있습니다. 
즉, 조건1과는 반대로 되는 것입니다. 


3. 특정 IP를 막을 때 

레드햇의 자체 vsftpd rpm은 tcp wrapper를 통해 IP제한을 할 수 있습니다. 
님의 말씀대로 이걸 이용하거나 iptables를 통해서 막으면 되겠네요.

 

 

 

 

 

#참고

VSFTP

리눅스에서 사용하는 FTP 서버용 소프트웨어는 proftp, vsftp가 주로 사용됩니다. Proftp에 비해서 속도와 보안, 성능이 뛰어나며 무엇보다 안정성을 보장할 수 있는 프로그램입니다.

 

설정파일경로 : /etc/vsftpd/vsftpd.conf
 

① 기본설정

background=YES (기본값 = NO)

VsFTP 데몬을 background로 실행할 것인지 설정 합니다.

 

listen=YES (기본값 = NO)

VsFTP 데몬은 기본적으로 inetd 모드로 동작이 됩니다.

따라서 독립모드(standalone)로 데몬을 운영하실 거라면 이 옵션과 listen 옵션을 모두 YES로 켜주셔야 됩니다. 반대로 VsFTP 데몬을 inetd 모드로 운영하시려면 이 옵션과 listen 옵션을 비활성화 하시면 됩니다.일반적으로 FTP 데몬은 많은 접속이 있을 경우에 standalone 모드로 운영하는것이 좋으며, 많은 접속이 없는 경우에는 inetd 모드로 운영하는것이 시스템 자원효율에 좋습니다. background 옵션과 같이 사용되며, 이 옵션은 listen_port에서 들어오는 요청에 대해서 데몬이 요청을 받아드릴지에 대해 설정합니다. 만약 데몬을 독립모드(standalone)로 운영하실 거라면 background 옵션과 같이 이 옵션도 함께 활성화 시켜야 됩니다.

listen_port=21

만약 vsftpd를 xinetd모드가 아닌 독립데몬 (standalone)으로 서비스하려면 위의 listen 지시자를 YES로 설정하시고 listen_port 에 서비스할 포트번호(기본 21번)를 지정하시면 됩니다.

 

listen_address=none (기본값 = none)

멀티 FTP 데몬을 사용할 때 요청을 받아드릴 IP를 설정합니다.

 

listen_address6=none (기본값 = none)

listen_address와 동일하며 IPv6에서 운영할 때 사용 합니다.

 

pasv_address=none (기본값 = none)

NAT를 사용하는 클라이언트의 공용 IP를 설정할 때 사용 합니다. 일반적으로 설정하지 않아도 상관 없습니다.

 

nopriv_user=ftpsecure (기본값 = nobody)

VsFTPd가 구동될 서버의 유저를 설정합니다.

 

max_clients=30 (기본값 = 0)

FTP 서버에 접속할 수 있는 클라이언트의 최대수를 제한하는 옵션 입니다. 기본값인 0으로 설정하면 제한을 두지 않습니다.

 

max_per_ip=3

이 설정은 동시 ftp 접속자수를 제한하는 설정입니다. 첫번째 max_client 는 ftp 접속을 최대 30명까지만 허용한다는 설정입니다. 그리고 max_per_ip 는 한 IP(호스트)에서 동시에 3번까지만 접속이 가능하다는 설정입니다. 이 또한 서비스거부공격(DoS)를 방어하기 위한 방법으로 활용될 수 있습니다.

 

local_max_rate=0 (기본값 = 0)

계정 사용자의 최대전송률을 지정합니다.업/다운로드의 속도를 제한할 때 사용하며, 단위는 bps 입니다.

 

trans_chunk_size=0

위의 세가지 설정은 ftp 서비스의 전송속도를 제한 하도록 하는 설정입니다. 즉, 초당 byte 수를 지정할 수 있으며 제한없이 허용하려면 0 으로 설정하시면 됩니다. 이 설정은 vsftpd 가 독립데몬(standalone)모드로 서비스될 때에만 적용되는 것입니다.

 

use_localtime=YES (기본값 = NO)

서버의 FTP 데몬시간을 서버의 표준시간으로 고정할지 설정합니다. 만약 이 옵션을 비활성화 하게되면 표준시각(GMT)를 보여주므로, 한국의 경우 9시간의 오차가 발생합니다.

 

setproctitle_enable=YES (기본값 = NO)

프로토콜의 현재 상태를 출력해줄 것인지 설정합니다. 이 옵션을 활성화하면 ps 명령어를 사용했을 때 세션의 현재 상태도 보여줍니다. 또한 LTN에서 제공하는 ftpwho 스크립트를 사용할 때에도 이 옵션을 활성화 하셔야 됩니다.

 

user_config_dir=none (기본값 = none)

특정 사용자의 개별 설정 파일을 지정합니다. 이 옵션을 사용하면 /etc/vsftpd/vsftpd.conf의 지시문을 무시하고 사용할 수 있습니다.

 

② 접속설정

local_enable=YES

로컬 계정 사용자들의 접속을 허용할 것인가의 여부를 결정합니다. YES 로 설정하면 로컬계정사용자의 접속을 허용하는 것이며 NO로 설정하면 허용하지 않는 것입니다. 기본 설정은 YES로 되어있기 때문에 접속을 허용하게 됩니다. 만약 NO로 설정되어 있을 때 로컬 계정으로 접속을 시도하면 “530 This FTP server is anonymous only.”와 같은 에러메시지를 출력하면서 접속을 거부합니다.

 

pam_service_name=vsftpd

vsftpd에서 PAM설정파일명으로 사용할 파일명을 지정합니다. 이 설정이 적용되면 기본이 vsftpd 이므로 /etc/pam.d/vsftpd 파일이 사용됩니다.

 

userlist_enable=YES (기본값 = NO)

명시된 사용자만 로그인을 허용할 때 사용하는 옵션입니다. userlist_deny 옵션이 비활성화 된 상태에서만 작동합니다.

 

userlist_deny=YES (기본값 = YES)

명시된 사용자가 로그인을 할 수 없도록 제한하는 옵션 입니다.

userlist_enable 옵션이 비활성화 된 상태에서만 작동하며, 서로 반대되는 개념 입니다.

 

userlist_file=/etc/vsftpd.user_list (기본값 = /etc/vsftpd.user_list)

명시된 사용자를 읽어올 파일을 지정합니다.

 

text_userdb_names=NO (기본값 = NO)

디렉토리 목록의 사용자와 그룹 필드들에 있는 숫자 ID 들이 보이는 것이 기본값 입니다.

당신은 이 파라미터를 활성화 함으로써 글자 이름을 사용할 수도 있습니다. 그러나 이 항목은 성능상의 이유로 기본적으로 비활성화 되어 있습니다.

 

tcp_wrappers=YES

tcp_wrappers 적용 여부를 설정하는 것으로 사용할 것인가(YES) 사용하지 않을 것인가(NO)를 설정합니다. YES로 설정하시면 허용할 호스트는 /etc/hosts.allow 허용하지 않을 호스트는 /etc/hosts.deny에 설정합니다.

 

ssl_tlsv1=YES (기본값 = YES)

TLS를 사용할 것인지에 대해 설정합니다.

이 옵션은 TLS를 활성화하며, TLS가 가능한 클라이언트가 이용하는데 도움이 됩니다.

 

ssl_enable=NO (기본값 = NO)

SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다.

만약 OpenSSL에 대해서 컴파일 되어 있고, 이 옵션을 허용할 경우 vsftpd는 SSL을 통한 보안 접속을 지원합니다. 이 옵션은 제어 연결을 지원(로그인을 포함)하며, 또한 데이터 연결도 지원 합니다. 사용자는 SSL을 지원하는 클라이언트를 필요로 할 것이며, 반드시 필요한 경우에만 허용하는것이 좋습니다. 그러나 vsftpd는 OpenSSL 라이브러리의 보안과 관련한 게런티를 만들 수 없으며, 이 옵션을 활성화 합니다는것은 OpenSSL 라이브러리의 보안을 믿는다는 것을 전제로 합니다.

 

ssl_sslv2=NO (기본값 = NO)

SSL v2 프로토콜 연결을 허용할 것인지에 대해 설정합니다.

이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.

 

ssl_sslv3=NO (기본값 = NO)

SSL v3 프로토콜 연결을 허용할 것인지에 대해 설정합니다.

이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.

 

listen_ipv6=NO (기본값 = NO)

listen 옵션과 동일하지만, IPv6에서 운영할 때 사용 합니다. 일반적으로 IPv6는 사용하지 않으므로 비활성화 하시면 됩니다.

 

dsa_cert_file=none (기본값 = none)

SSL 인증서의 위치를 지정합니다. SSL의 암호화 접속을 사용하기 위해, DSA 인증서의 위치를 지정합니다.

 

ssl_ciphers=DES-CBC3-SHA (기본값 = DES-CBC3-SHA)

이 옵션은 vsftpd가 암호화 된 SSL 연결들에 대해 어떤 SSL 암호화 방식을 선택하는지에 따라 사용됩니다. 더 자세한 사항은 관련 암호 메뉴얼 페이지를 보십시요.

암호화를 알리지 않는 것은 원격에서 선택된 암호화 방식의 취약점을 공격하려고 불법적인 원격 공격을 막기 위한 유용한 보안 지침이 될 수 있습니다.

 

force_local_data_ssl=YES (기본값 = YES)

이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있습니다. 모든 비익명 로그인은 데이터 연결 상태에서 데이터를 주고 받기 위해 보안 SSL 연결을 사용하도록 강제적으로 설정됩니다.

 

force_local_logins_ssl=YES (기본값 = YES)

이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있습니다. 모든 비익명 로그인은 비밀번호를 전달하기 위해 보안 SSL 연결을 사용하도록 강제적으로 설정됩니다.

 

③ 대기시간 설정

connect_timeout=60 (기본값 = 60/초)

액티브 모드(Active Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.

 

accept_timeout=60 (기본값 = 60/초)

패시브 모드(Passive Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.

 

data_connection_timeout=300 (기본값 = 300/Secs)

데이터 전송시 적용되는 타임아웃값을 설정합니다. 만약 ftp 연결시 큰 파일을 업로드 또는 다운로드 할 때에 전송도중 접속이 끊기는 상황이 발생한다면 이 설정을 주석처리하거나 또는 이 값을 현재 설정값 보다 크게 잡아주시고 재시도 해보십시요.

 

idle_session_timeout=300 (기본값 = 300/Secs)

ftp 연결에서 idle 타임에 대한 타임아웃값을 설정합니다. 예를 들어 이 값이 600으로 설정되어 있다면 ftp 접속후에 600초(10분)동안 아무런 작업도 없이 놀고 있다면 강제 로그아웃(timeout)시켜 버립니다.

 

④ 메시지 설정

banner_file=/etc/vsftpd/welcome.msg (기본값 = none)

사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지 파일을 설정합니다.

 

ftpd_banner=Welcome to blah FTP service.

ftp 서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하시면 됩니다. 이 설정이 적용되면 ftp 접속을 하였을 때 "Welcome to blah FTP service"라는 안내문이 출력됩니다. 이 설정에서 한글을 사용할 수도 있습니다. 각 디렉토리별 안내문에 대한 설정은 다음 지시자의 설명을 보시기 바랍니다.

 

dirmessage_enable=YES

ftp 접속한 사용자가 특정 디렉토리로 이동하였을 때 개별 디렉토리의 메시지를 보여주도록 허용할 것인가(YES) 허용하지 않을 것인가(NO) 를 설정하는 것입니다. 밑에서 설명하고 있는 "message_file" 지시자에서 개별 디렉토리안내 파일로 사용할 파일명을 지정할 수 있습니다.

 

Message_file=.message

ftp 접속후에 특정 디렉토리로 이동할 때에 디렉토리 안내메시지 파일로 사용할 파일명을 지정한 것입니다. 이 설정은 바로 위에서 설명한 "dirmessage_enable" 이 YES로 설정되어 있을 때 적용됩니다.

 

⑤ 모드설정

port_enable=YES (기본값 = YES)

데이터 전송을 위해서 Active Mode를 사용할 것인지 설정합니다.

 

connect_from_port_20=YES

ftp 서비스는 기본적으로 21번 포트와 20번 포트를 사용합니다. ftp 접속과 명령어에 사용되는 포트는 21번이며 실제 데이터전송에 사용되는 기본포트는 20번입니다. 이때 20번 포트의 데이터전송 연결을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 설정하는 지시자 입니다.

 

ftp_data_port=20 (기본값 = 20)

데이터 전송 포트를 지정합니다.

connect_from_port_20 옵션이 활성화 되었을 때 사용되는 포트를 지정합니다.

 

pasv_enable=YES (기본값 = YES)

데이터 전송을 위해서 Passive mode를 사용할 것인지 설정합니다.

Active Mode로 접근할 수 없는 사용자들을 위해 활성화 하는 것 이 좋습니다.

 

pasv_promiscuous=NO (기본값 = NO)

동일한 IP주소에서 이루어지는 데이터 연결을 보장해주는 보안체크 기능을 사용할 것인지 설정합니다.

 

pasv_min_port=0

pasv_max_port=0 (기본값 = 0)

패시브 모드로 연결시 할당될 최대 및 최소 포트를 설정하는 옵션 입니다. 일반적으로 50000~60000 포트를 지정하는 것이 좋으며, 기본값인 0으로 설정하게 되면 well-known port를 제외한 무작위 포트를 이용하게 됩니다.

 

ascii_upload_enable=YES

ascii_download_enable=YES

기본적으로 ASCII 모드로 업로드/다운로드하는 것이 제한되어 있습니다. 이 설정으로 ASCII모드로의 업로드/다운로드를 허용하도록 설정할 수 있습니다.

 

⑥ 권한설정

local_umask=022

로컬계정 사용자들의 umask 값을 설정하는 지시자입니다. 거의 모든 ftp 서버에서 기본 umask 값은 022 입니다. 하지만 vsftp 에서의 umask 기본값은 077입니다. Umask 값이 077 일 경우에 새로 생성되는 파일의 퍼미션은 600 이 되며 새로 생성되는 디렉토리의 퍼미션은 700 이 됩니다. 당연히 umask 값이 022 일 때보다는 보안이 훨씬 강화됩니다. 여기서 "local_umask=022"의 주석을 제거하여 유효하게 설정하면 대부분의 FTP 서버에서 사용하는 umask 값을 022로 설정하게 됩니다. 만약 022 외에 다른 umask 값을 설정하고자 한다면 그 값을 설정해 주시면 됩니다.

 

file_open_mode=0644 (기본값 = 0666)

파일이 업로드 되었을 때의 퍼미션을 지정해주는 옵션 입니다.

이 옵션은 반드시 umask 옵션보다 아래에 있어야 됩니다.

 

dirlist_enable=YES (기본값 = YES)

접속한 디렉토리의 파일리스트를 보여줄 지 설정합니다.

 

force_dot_files=NO (기본값 = NO)

히든 파일/디렉토리를 보여줄 것인지 설정하는 옵션 입니다. 히든 파일/디렉토리는 dot(.) 으로 시작하는 것을 말합니다.

 

tilde_user_enable=NO (기본값 = NO)

이 옵션이 활성화되면, vsftpd는 ~chris/pics와 같이 사용자 계정 이름에 틸드 표시가 따라오는 경우의 경로명을 접근하도록 시도하고 해석할 것입니다. vsftpd는 항상 ~ 와 ~/somthing 을 해석합니다는 것을 주의하시기 바랍니다.

(여기서 ~ 는 기본적으로 로그인 했을 때의 디렉토리로 해석됩니다.) ~user 경로들은 _current_ chroot() 에서 /etc/passwd 파일을 찾을 수 있을 경우에만 해석 될 수 있을 것입니다.

 

hide_ids=NO (기본값 = NO)

디렉토리 목록에서 UID를 보여주지 않고, 모두 FTP로 표시할 것인지 설정합니다.

이 옵션을 활성화 하면 모든 파일의 소유권이 FTP로 표시되므로 보안에 도움이 될 수 있습니다.

 

write_enable=YES (기본값 = NO)

ftp 로 접속이 된 상태에서 사용할 수 있는 ftp 전용명령어에는 여러가지가 있습니다. 이 설정은 ftp 전용명령어 중에 write 명령어를 허용할 것인가를 결정하는 것입니다. 허용하려면 YES, 허용하지 않으려면 NO 를 설정하시면 됩니다.

 

download_enable=YES (기본값 = YES)

다운로드에 대한 권한을 설정합니다.

 

chmod_enable=YES (기본값 = YES)

사용자가 퍼미션을 변경할 수 있도록 설정합니다.

 

use_sendfile=YES (기본값 = YES)

이 옵션은 당신의 플랫폼에서 sendfile() 시스템 호출을 사용하는 것과 관련된 이익을 테스트 할 때 사용되는 내부 설정입니다.

 

cmds_allowed=PASV,RETR,QUIT (기본값 = none)

사용자에게 허가할 명령어를 지정합니다.

 

deny_file={*.mp3,*.mov} (기본값 = none)

업로드를 거부할 파일명을 지정합니다.

 

hide_file={*.mp3,*.mov} (기본값 = none)

숨길 파일명을 지정합니다.

이 옵션을 사용하면 서버에 실제로 데이터는 존재하지만, FTP 사용자에게는 보이지 않도록

설정하는 기능입니다. 악의적인 사용자에게 간단한 fake를 걸 수 있습니다.

 

async_abor_enable=YES (기본값 = NO)

async ABOR 명령어를 사용할 수 있도록 설정합니다.

일부 FTP 클라이언트에서 파일전송을 취소했을 경우, 취소되지 않은 상태로 있는 경우가

생길 수 있는데 그것을 방지하기 위해 사용할 수 있습니다.

그러나 보안상 좋지 않기 때문에, 비활성화 하시는것이 좋습니다.

 

ls_recurse_enable=YES

ftp 접속에서는 ls 사용시 –R 옵션을 허요하지 않는 것이 기본 설정입니다. –R 옵션이란 서브디렉토리내의 파일들의 리스팅(목록)까지 모두 확인할 수 있도록 하는 것입니다. 서버부하등의 이유로 ftp에서 기본적으로는 지원하지 않지만 vsftpd 에서는 이 옵션을 사용하여 허용하도록 설정할 수 있습니다. 즉, 이 지시자의 값이 YES로 되어 있다면 ftp 접속후에 디렉토리 목록 확인시에 서브디렉토리들의 목록들까지 한번에 볼 수 있는 –R 옵션을 허용하게 됩니다.

 

⑦ 보안설정

 

chroot_list_enable=YES (기본값 = NO)

명시된 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다.이 옵션은 chroot_local_user 옵션이 비활성화되어 있어야 사용할 수 있습니다. 전체 적용이 아니라 일부 사용자만 제한할때 편하지만, 개별 적용은 보안상 좋지 않습니다.

 

chroot_list_file=/etc/vsftpd.chroot_list

전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정입니다.

먼저 "chroot_list_enable=YES" 로 설정하시고 /etc/vsftpd.chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록해 두시면 됩니다. 즉, /etc/vsftpd.chroot_list 파일에 등록된 사용자들에 한하여 chroot()기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한됩니다. 이 파일에 등록할 때에는 한행에 한 사용자 계정씩만 등록하셔야 합니다. 만약 전체 사용자를 대상으로 chroot()기능을 적용하고자 한다면 바로 밑에서 설정하고 있는 "chroot_local_user=YES"로 설정하시기 바랍니다.

passwd_chroot_enable=NO (기본값 = NO)

SSH로 접속했을 때 자신의 홈 상위 디렉토리를 접근할 수 없도록 설정합니다.

chroot_local_user 옵션이 활성화되었고, OpenSSH에 패치를 했을경우, SSH 또한 자신의 홈상위 디렉토리를 접근할 수 없도록 설정할 수 있으며, /etc/passwd 파일의 홈 디렉토리 필드의 /home/사용자/./와 같이 "/./"를 붙여 사용자를 홈디렉토리에 제한하게 합니다.

 

chroot_local_user=YES

특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토링 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정하십시요. 반드시 앞의 설정과 비교해 보시기 바랍니다.

 

만약 위 의 두 설정이 모두 설정되었다면

즉, "chroot_list_enable=YES"와 "chroot_local_user=YES" 설정이 모두 YES로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자만 chroot()적용을 받지 않게 됩니다. 즉, 이 두 설정이 모두 YES 로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용되어 상위 디렉토리로의 이동이 안된다는 의미입니다.

 

secure_chroot_dir=/usr/share/empty (기본값 = /usr/share/empty)

secure chroot()에 사용될 디렉토리를 지정합니다.

이 옵션에서 지정된 디렉토리는 비어있어야되며, ftp 사용자에 대해 쓰기 권한이 없어야 됩니다.

 

⑧ 로그설정

xferlog_enable=YES

ftp 접속후에 파일 업로드와 다운로드에 대한 로그를 남길것인가(YES) 남가지 않을 것인가(NO)를 설정하는 지시자입니다. 이 지시자의 설정은 디스크의 용량을 고려하여 결정해야 합니다. 즉, 파일 업로드/다운로드 로그는 굉장히 많은 용량을 필요로 하고 또한 시스템 부하율도 함께 고려하여 신중히 결정해야 합니다. 물론 로그를 남기는 것이 로그분석과 개별 사용자의 파일 업로드/다운로드 상황을 알 수 있는 방법이기는 하지만 시스템 상황을 고려해야 하는 의미입니다.

 

vsftpd_log_file=/var/log/vsftpd.log(기본값 = /var/log/vsftpd.log)

VsFTP의 기본 로그 파일을 지정합니다.

이 옵션은 xferlog_enable 옵션과 xferlog_std_format 옵션이 비활성화일 때 작동하며, dual_log_enable 옵션이나 syslog_enable 옵션이 활성화될때 사용됩니다.

 

dual_log_enable=NO (기본값 = NO)

2중 로그를 기록할 것인지에 대해 설정합니다.

만약 이 옵션을 활성화하면, /var/log/xferlog와 /var/log/vsftpd.log에 로그가 기록됩니다.

 

syslog_enable=NO (기본값 = NO)

syslogd 데몬을 이용해서 로그를 기록할 것인지 설정합니다.

 

xferlog_file=/var/log/vsftpd.log

ftp 로그파일의 위치를 결정하는 지시자입니다.

Vsftp는 기본적으로 /var/log/vsftpd.log 파일을 기본 로그파일로 사용합니다. 만약 로그파일 위치나 파일명을 변경하시려면 이 지시자에서 설정 변경하시면 됩니다.

 

xferlog_std_format=YES

로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가(YES) 아닌가(NO)를 설정하는 지시자 입니다. 리눅스에서 ftp 기본 로그파일을 /var/log/xferlog을 사용합니다. 이 지시자는 이 파일의 표준포맷으로 로그를 남기도록 하는 설정입니다. 이 파일의 포맷보다는 vsftpd 로그포맷을 사용하시는 것이 보다 자세한 로그를 남길 수 있습니다. 즉, 디렉토리생성로그나 또는 로그인 로그 같은 상세로그까지 기록해 줍니다.

 

 

log_ftp_protocol=YES (기본값 = NO)

FTP Protocol의 모든 내용을 기록할지 설정합니다.

이 옵션을 활성화하면 FTP 명령어와 반응이 모두 로깅되므로 디버그에 유용하게 쓰입니다.

 

no_log_lock=NO (기본값 = NO)

로그 파일을 잠글것인지에 대해서 설정합니다.

이 옵션은 vsftpd가 로그 파일을 기록할 때, 파일을 잠그는 것을 막는 옵션 입니다.

보통은 활성화 하지 않아도 되며, 솔라리스/베리타스 파일 시스템 조합에서 때때로

로그파일을 잠그려는 시도를 하는 운영체제 시스템 버그를 피하기 위해 존재 합니다.

 

session_support=YES

이 설정은 YES로 설정되어 유효하게 되었을 때에는 바이너리파일인 wtmp에 ftp 접속관련 기록을 남기게 됩니다.

Last 라는 명령어는 각 사용자들의 접속기록을 wtmp 파일에서 가져와 확인하는 명령어이므로 이 설정이 적용되면 last 명령어로 ftp 접속기록을 확인 할 수 있게 됩니다.

 

⑨ 가상 사용자 설정

guest_enable=NO

가상유저 모드로 운영할 것인지에 대해 설정합니다. (기본값 = NO)

이 옵션을 활성화하면 모든 비익명 사용자는 가상 사용자로 접속이 됩니다.

 

guest_username=ftp

가상유저들의 실제 계정을 지정합니다. (기본값 = ftp)

 

virtual_use_local_privs=NO (기본값 = NO)

가상유저들의 권한을 실제 계정의 권한처럼 허용할 것인지를 설정합니다.

이 옵션이 활성화되어있지 않으면 가상유저는 FTP에 접속해서 파일을 생성하지 못합니다. 또한 가상유저는 기본적으로 anonymous의 권한을 갖고 있습니다.

 

user_sub_token=$USER (기본값 = none)

가상유저들을 지칭할 가상의 변수를 지정합니다.

 

local_root=/home/virtual/$USER (기본값 = none)

가상유저들이 로그인 후 이동될 디렉토리를 지정합니다.

 

⑩ 익명사용자 기본 설정

anonymous_enable=NO

익명(anonymous) 접속을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 결정하는 지시자입니다. 기본값은 YES로 되어있으며 익명계정 접속을 허용하지 않으려면 NO 로 설정하시기 바랍니다.

 

anon_max_rate=0 (기본값 = 0)

익명 사용자의 다운로드 최대전송률을 지정합니다. 다운로드 속도를 제한할때 사용하며, 단위는 bps 입니다.

 

allow_anon_ssl=NO (기본값 = NO)

익명사용자의 SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다.

이 옵션은 ssl_enable이 활성화 되었을 때만 적용됩니다.

 

deny_email_enable=YES (기본값 = NO)

로그인 거부 리스트 사용에 대한 설정을 합니다.

/etc/vsftpd.banned_emails 에 설정된 주소로 로그인을 거부할 수 있습니다.

만약 anonymous@ 라고 설정해두면, anonymous@를 사용하는 사용자는 접속할 수 없게됩니다.

 

banned_email_file=/etc/vsftpd.banned_emails (기본값 = /etc/vsftpd.banned_emails)

로그인 거부 파일을 지정합니다.

deny_email_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.

 

secure_email_list_enable=NO (기본값 = NO)

명시된 이메일 주소로만 접속을 허용할 지 설정합니다.

 

email_password_file=/etc/vsftpd.email_passwords (기본값 = /etc/vsftpd.email_passwords)

접속을 허용할 이메일 주소 파일을 지정합니다.

secure_email_list_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.

 

ftp_username=ftp (기본값 = ftp)

익명 사용자의 접속에 사용될 계정명을 지정합니다.

 

no_anon_password=NO (기본값 = NO)

익명 사용자가 접속할 때 패스워드를 묻지않고 접속시킬 것인지 설정합니다.

이 옵션을 활성화하면 접속시 패스워드를 묻지 않습니다.

 

one_process_model=NO (기본값 = NO)

클라이언트 접속마다 하나의 프로세스가 작동되도록 할 것인지 설정합니다.

이 옵션을 활성화하면 접속하는 수만큼 프로세스가 작동되므로 효율이 좋습니다.

 

anon_root=/var/ftp/pub (기본값 = none)

익명 사용자의 기본 디렉토리를 지정합니다.

일반적으로 익명 사용자의 접근을 허용하면 ftp_username에 지정된 사용자의 홈 디렉토리가 기본적으로 설정됩니다. 그렇지만 만약 변경할 필요가 있을 경우에 이 옵션을 사용하면 됩니다.

 

⑪ 익명사용자 권한 설정

anon_upload_enable=YES

익명(anonymous) 계정 사용자에게 파일 업로드를 허용할 것인가(YES) 허용하지 않을 것인가(NO) 의 여부를 설정하는 지시자입니다. 기본값은 허용하지 않는 NO 입니다. 가능한 익명 계정으로 접속한 사용자에게는 업로드 권한을 허용하지 않는 것이 보안에 훨씬 좋습니다. 따라서 가능한 NO로 설정하시기 바랍니다.

 

anon_mkdir_write_enable=YES

익명(anonymous) 계정 사용자에게 디렉토리 생성권한을 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정하는 지시자 입니다. 기본값은 허용하지 않는 NO 입니다. 가능한 익명계정으로 접속한 사용자에게는 디렉토리 생성권한을 허용하지 않는 것이 보안에 훨씬 좋습니다. 따라서 가능한 NO로 설정하시기 바랍니다.

 

anon_world_readable_only=YES (기본값 = YES)

익명 사용자들의 다운로드에 대한 설정을 합니다.

익명 사용자들이 읽기 가능한 파일을 다운로드 할 수 있게 설정합니다.

 

anon_other_write_enable=NO (기본값 = NO)

익명 사용자의 파일 삭제,변경에 대한 설정을 합니다.

파일 삭제 및 파일명 변경등과 같은 기능을 사용할 수 있게 합니다.

 

chown_uploads=YES (기본값 = NO)

익명 사용자의 소유권 변경에 대한 설정을 합니다.

익명으로 업로드된 파일을 chown_username 옵션으로 명시된 사용자의 소유권으로 변경되도록 할 수 있습니다.

 

anon_umask=022 (기본값 = 077)

익명 사용자의 파일생성 umask 값을 지정 합니다.

umask에 대한 설명은 local_mask의 설명을 참조하시기 바랍니다.

 

chown_username=whoever (기본값 = root)

익명 사용자의 소유권 변경이 가능한 계정명을 설정합니다.

 

 

 

 

 

 

 

 

 

 

 

1. vsftpd 설치 : Linux에서 사용하는 FTP서버데몬

설치명령은 아래와 같다. (별도로 관련파일 복사없이 그냥 명령어만 치니까 설치가 되더라.

참고로 홈페이지는 https://security.appspot.com/vsftpd.html )

# yum install vsftpd

 

2. 환경파일 설정

 

# vi /etc/vsftpd/vsftpd.conf

anoymous_enable=NO //익명으로 접속시 NO

pasv_enable=YES //엑티브모드로 사용할 시 NO

 

vsftp passive mode 설정하는 방법입니다.

# vi /etc/sysconfig/iptables-config

 

위 파일을 열고 3번째 라인을 보면

IPTABLES_MODULES="ip_conntrack_netbios_ns"


라고 있는 부분을

IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"


라고 추가해 줍니다.

 

 

그리고 vsftp서버를 재시작 합니다.

# service iptables restart

 

3. FTP용 계정생성

# user add 계정명

# passwd 계정명

 

4. 방화벽 설정 : iptables에 20, 21번 포트를 등록해준다.

# vi /etc/sysconfig/iptables

 

////////////////아래의 내용 추가

 

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

 

//iptable재기동

# service iptables restart

 

5. FTP서버기동

# service vsftpd start (종료 : stop, 재기동 : restart)

 

 

부팅시 FTP자동실행 설정

chkconfig --level 2345 vsftpd on

 

7. 프로세스 확인 및 포트확인

# ps -ef | grep vsftpd

# netstat -ntlp

 

 

참조 : http://blog.naver.com/newkyh00?Redirect=Log&logNo=30111155337

 

======= 기타 오류 및 정보확인
 

1. 500 OOPS: could not open chroot() list file:/etc/vsftpd/chroot_list

참조 : http://uiandwe.tistory.com/160

 

vi /etc/vsftpd/chroot_list
FTP 로그인할 계정을 등록

 

 

2. ftp: connect: No route to host

 

 

 

참조 : http://vstu77.blog.me/120050132415

 

리눅스에서 ftp를 사용할 때에 ftp: connect: No route to host

라는 메시지가 나올 때가 있다.

 

이럴 경우에는 host server 의 iptable을 살펴 보아야 한다.

사용 하지 않을 거면 iptables 를 stop 한다

#/etc/init.d/iptables stop

그 후

500 OOPS : cannot change directory:/root

 

500 OOPS : child died

라고 나오는 경우 아래와 같이 입력한다.

# setsebool -P ftp_home_dir=1

 

3. vsftp에서 500 OOPS: cannot change directory 오류가 나올 때

참조 : http://opencode.co.kr/bbs/board.php?bo_table=linux_tips&wr_id=27

/etc/vsftpd/vsftp.conf를 수정했는데도 불구하고 500 애러가 나오면서 접속이 안될때는
SELinux 때문이라고 합니다.

# setsebool -P ftp_home_dir=1

이렇게 하면, ftp directory에 대한 접근을 허가 하게된다.
"-P"는 Rebooting 될더라도 값을 저장하여,
정상적으로 동작 하도록 한다.


vsftpd(vsftp 데몬)의 상태를 보기
service vsftpd status

iptables(방화벽)의 상태를 보기
service iptables status

 

 

 

 

4. FTP 접속시 530 Permisiion Denied 발생

 

/etc/vsftpd/vsftpd.conf 파일 하단에

userlist_enables=YES 를 NO로 바꾸거나

 

아래의 파일 내부 계정들을 주석처리(#) 하면 된다.

아래의 파일 리스트에 계정이 있으면 FTP 접속이 불가하며 530 퍼미션 거부를 당하게 된다.

/etc/vsftpd/user_list    (해당 리스트 계정들은 계정 비번 조차 확인 안하고 거부됨)

/etc/ftpusers              (해당 리스트 계정들은 비번을 맞게 쳐도 거부됨)

 

/etc/vsftpd/user_list 내부에 userlist_deny 부분을 재조정 해도 된다.

 

 

5. OOPS: cannot change directory:/home/ueco

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

 

6. OOPS: could not read chroot() list file:/home/ueco

-> vsftp.conf설정에서 chroot관련 설정을 모두 주석처리함

 

7. OOPS: 500 OOPS: child died

디렉터리 목록을 획득할 수 없습니다.

Entering Passive Mode (10,250,114,243,21,35).

->컴퓨터의 FTP툴에서 Passive 모드를 비활성화해서 접속함

 

 

8. 533 could not create file

업로드 시 발생. 업로드 하려는 해당 디렉토리의 소유권과 관련된 에러임.

ftp 클라이언트 측에서 접속한 ID와 접속한 디렉토리의 소유자 및 소유 그룹이 다를 경우 발생하기도 한다.

chown 소유자 경로

chgrp 소유그룹 경로

 

를 해도 안되면 SELINUX 기능을 정지시켜 버리면 된다.

/etc/selinux/config 파일에서 SELINUX=disabled 수정 뒤 재부팅

 

-------------------------------------------------------------------------------

 

1. vsftpd.conf 파일의 정보

참조 : http://kch1183.blog.me/50099324984

 

 

2. CentOS. FTP 총정리

참조 : http://blog.naver.com/newkyh00?Redirect=Log&logNo=30111155337

 

 

 

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
# anonymous_enable=NO
# 익명(anonymous) 접속을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 결정하는 지시자입니다. 기본값은 YES로 되어있으며 익명계정 접속을 허용하지 않으려면 NO 로 설정하시기 바랍니다.
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
# local_enable=YES
# 로컬 계정 사용자들의 접속을 허용할 것인가의 여부를 결정합니다. YES 로 설정하면 로컬계정사용자의 접속을 허용하는 것이며 NO로 설정하면 허용하지 않는 것입니다. 기본 설정은 YES로 되어있기 때문에 접속을 허용하게 됩니다. 만약 NO로 설정되어 있을 때 로컬 계정으로 접속을 시도하면 “530 This FTP server is anonymous only.”와 같은 에러메시지를 출력하면서 접속을 거부합니다.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
# write_enable=YES (기본값 = NO)
# ftp 로 접속이 된 상태에서 사용할 수 있는 ftp 전용명령어에는 여러가지가 있습니다. 이 설정은 ftp 전용명령어 중에 write 명령어를 허용할 것인가를 결정하는 것입니다. 허용하려면 YES, 허용하지 않으려면 NO 를 설정하시면 됩니다.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
# local_umask=022
# 로컬계정 사용자들의 umask 값을 설정하는 지시자입니다. 거의 모든 ftp 서버에서 기본 umask 값은 022 입니다. 하지만 vsftp 에서의 umask 기본값은 077입니다. Umask 값이 077 일 경우에 새로 생성되는 파일의 퍼미션은 600 이 되며 새로 생성되는 디렉토리의 퍼미션은 700 이 됩니다. 당연히 umask 값이 022 일 때보다는 보안이 훨씬 강화됩니다. 여기서 "local_umask=022"의 주석을 제거하여 유효하게 설정하면 대부분의 FTP 서버에서 사용하는 umask 값을 022로 설정하게 됩니다. 만약 022 외에 다른 umask 값을 설정하고자 한다면 그 값을 설정해 주시면 됩니다.
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
# anon_upload_enable=YES
# 익명(anonymous) 계정 사용자에게 파일 업로드를 허용할 것인가(YES) 허용하지 않을 것인가(NO) 의 여부를 설정하는 지시자입니다. 기본값은 허용하지 않는 NO 입니다. 가능한 익명 계정으로 접속한 사용자에게는 업로드 권한을 허용하지 않는 것이 보안에 훨씬 좋습니다. 따라서 가능한 NO로 설정하시기 바랍니다.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
# anon_mkdir_write_enable=YES
# 익명(anonymous) 계정 사용자에게 디렉토리 생성권한을 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정하는 지시자 입니다. 기본값은 허용하지 않는 NO 입니다. 가능한 익명계정으로 접속한 사용자에게는 디렉토리 생성권한을 허용하지 않는 것이 보안에 훨씬 좋습니다. 따라서 가능한 NO로 설정하시기 바랍니다.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
# dirmessage_enable=YES
# ftp 접속한 사용자가 특정 디렉토리로 이동하였을 때 개별 디렉토리의 메시지를 보여주도록 허용할 것인가(YES) 허용하지 않을 것인가(NO) 를 설정하는 것입니다. 밑에서 설명하고 있는 "message_file" 지시자에서 개별 디렉토리안내 파일로 사용할 파일명을 지정할 수 있습니다.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
# xferlog_enable=YES
# ftp 접속후에 파일 업로드와 다운로드에 대한 로그를 남길것인가(YES) 남가지 않을 것인가(NO)를 설정하는 지시자입니다. 이 지시자의 설정은 디스크의 용량을 고려하여 결정해야 합니다. 즉, 파일 업로드/다운로드 로그는 굉장히 많은 용량을 필요로 하고 또한 시스템 부하율도 함께 고려하여 신중히 결정해야 합니다. 물론 로그를 남기는 것이 로그분석과 개별 사용자의 파일 업로드/다운로드 상황을 알 수 있는 방법이기는 하지만 시스템 상황을 고려해야 하는 의미입니다.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
# connect_from_port_20=YES
# ftp 서비스는 기본적으로 21번 포트와 20번 포트를 사용합니다. ftp 접속과 명령어에 사용되는 포트는 21번이며 실제 데이터전송에 사용되는 기본포트는 20번입니다. 이때 20번 포트의 데이터전송 연결을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 설정하는 지시자 입니다.
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
# chown_uploads=YES (기본값 = NO)
# 익명 사용자의 소유권 변경에 대한 설정을 합니다.
# 익명으로 업로드된 파일을 chown_username 옵션으로 명시된 사용자의 소유권으로 변경되도록 할 수 있습니다.
#chown_uploads=YES
#
# chown_username=whoever (기본값 = root)
# 익명 사용자의 소유권 변경이 가능한 계정명을 설정합니다.
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
# xferlog_file=/var/log/vsftpd.log
# ftp 로그파일의 위치를 결정하는 지시자입니다.
# Vsftp는 기본적으로 /var/log/vsftpd.log 파일을 기본 로그파일로 사용합니다. 만약 로그파일 위치나 파일명을 변경하시려면 이 지시자에서 설정 변경하시면 됩니다.
#xferlog_file=/var/log/xferlog
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
# xferlog_std_format=YES
# 로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가(YES) 아닌가(NO)를 설정하는 지시자 입니다. 리눅스에서 ftp 기본 로그파일을 /var/log/xferlog을 사용합니다. 이 지시자는 이 파일의 표준포맷으로 로그를 남기도록 하는 설정입니다. 이 파일의 포맷보다는 vsftpd 로그포맷을 사용하시는 것이 보다 자세한 로그를 남길 수 있습니다. 즉, 디렉토리생성로그나 또는 로그인 로그 같은 상세로그까지 기록해 줍니다.
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
# idle_session_timeout=300 (기본값 = 300/Secs)
# ftp 연결에서 idle 타임에 대한 타임아웃값을 설정합니다. 예를 들어 이 값이 600으로 설정되어 있다면 ftp 접속후에 600초(10분)동안 아무런 작업도 없이 놀고 있다면 강제 로그아웃(timeout)시켜 버립니다.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
# data_connection_timeout=300 (기본값 = 300/Secs)
# 데이터 전송시 적용되는 타임아웃값을 설정합니다. 만약 ftp 연결시 큰 파일을 업로드 또는 다운로드 할 때에 전송도중 접속이 끊기는 상황이 발생한다면 이 설정을 주석처리하거나 또는 이 값을 현재 설정값 보다 크게 잡아주시고 재시도 해보십시요.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
# nopriv_user=ftpsecure (기본값 = nobody)
# VsFTPd가 구동될 서버의 유저를 설정합니다.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
# async_abor_enable=YES (기본값 = NO)
# async ABOR 명령어를 사용할 수 있도록 설정합니다.
# 일부 FTP 클라이언트에서 파일전송을 취소했을 경우, 취소되지 않은 상태로 있는 경우가
# 생길 수 있는데 그것을 방지하기 위해 사용할 수 있습니다.
# 그러나 보안상 좋지 않기 때문에, 비활성화 하시는것이 좋습니다.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
# ascii_upload_enable=YES
# ascii_download_enable=YES
# 기본적으로 ASCII 모드로 업로드/다운로드하는 것이 제한되어 있습니다. 이 설정으로 ASCII모드로의 업로드/다운로드를 허용하도록 설정할 수 있습니다.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
# ftpd_banner=Welcome to blah FTP service.
# ftp 서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하시면 됩니다. 이 설정이 적용되면 ftp 접속을 하였을 때 "Welcome to blah FTP service"라는 안내문이 출력됩니다. 이 설정에서 한글을 사용할 수도 있습니다. 각 디렉토리별 안내문에 대한 설정은 다음 지시자의 설명을 보시기 바랍니다.
#ftpd_banner=Welcome to LynX's FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
# deny_email_enable=YES (기본값 = NO)
# 로그인 거부 리스트 사용에 대한 설정을 합니다.
# /etc/vsftpd.banned_emails 에 설정된 주소로 로그인을 거부할 수 있습니다.
# 만약 anonymous@ 라고 설정해두면, anonymous@를 사용하는 사용자는 접속할 수 없게됩니다.
#deny_email_enable=YES
#
# (default follows)
# banned_email_file=/etc/vsftpd.banned_emails (기본값 = /etc/vsftpd.banned_emails)
# 로그인 거부 파일을 지정합니다.
# deny_email_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
# chroot_local_user=YES
# 특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토링 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정하십시요. 반드시 앞의 설정과 비교해 보시기 바랍니다.
# 만약 위 의 두 설정이 모두 설정되었다면
# 즉, "chroot_list_enable=YES"와 "chroot_local_user=YES" 설정이 모두 YES로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자만 chroot()적용을 받지 않게 됩니다. 즉, 이 두 설정이 모두 YES 로 되어 있다면 /etc/vsftpd.chroot_list 에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용되어 상위 디렉토리로의 이동이 안된다는 의미입니다.
#chroot_local_user=YES
#
# chroot_list_enable=YES (기본값 = NO)
# 명시된 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다.이 옵션은 chroot_local_user 옵션이 비활성화되어 있어야 사용할 수 있습니다. 전체 적용이 아니라 일부 사용자만 제한할때 편하지만, 개별 적용은 보안상 좋지 않습니다.
#chroot_list_enable=YES
#
# (default follows)
# chroot_list_file=/etc/vsftpd.chroot_list
# 전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정입니다.
# 먼저 "chroot_list_enable=YES" 로 설정하시고 /etc/vsftpd.chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록해 두시면 됩니다. 즉, /etc/vsftpd.chroot_list 파일에 등록된 사용자들에 한하여 chroot()기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한됩니다. 이 파일에 등록할 때에는 한행에 한 사용자 계정씩만 등록하셔야 합니다. 만약 전체 사용자를 대상으로 chroot()기능을 적용하고자 한다면 바로 밑에서 설정하고 있는 "chroot_local_user=YES"로 설정하시기 바랍니다.
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
# ls_recurse_enable=YES
# ftp 접속에서는 ls 사용시 –R 옵션을 허요하지 않는 것이 기본 설정입니다. –R 옵션이란 서브디렉토리내의 파일들의 리스팅(목록)까지 모두 확인할 수 있도록 하는 것입니다. 서버부하등의 이유로 ftp에서 기본적으로는 지원하지 않지만 vsftpd 에서는 이 옵션을 사용하여 허용하도록 설정할 수 있습니다. 즉, 이 지시자의 값이 YES로 되어 있다면 ftp 접속후에 디렉토리 목록 확인시에 서브디렉토리들의 목록들까지 한번에 볼 수 있는 –R 옵션을 허용하게 됩니다.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
# listen=YES (기본값 = NO)
# VsFTP 데몬은 기본적으로 inetd 모드로 동작이 됩니다.
# 따라서 독립모드(standalone)로 데몬을 운영하실 거라면 이 옵션과 listen 옵션을 모두 YES로 켜주셔야 됩니다. 반대로 VsFTP 데몬을 inetd 모드로 운영하시려면 이 옵션과 listen 옵션을 비활성화 하시면 됩니다.일반적으로 FTP 데몬은 많은 접속이 있을 경우에 standalone 모드로 운영하는것이 좋으며, 많은 접속이 없는 경우에는 inetd 모드로 운영하는것이 시스템 자원효율에 좋습니다. background 옵션과 같이 사용되며, 이 옵션은 listen_port에서 들어오는 요청에 대해서 데몬이 요청을 받아드릴지에 대해 설정합니다. 만약 데몬을 독립모드(standalone)로 운영하실 거라면 background 옵션과 같이 이 옵션도 함께 활성화 시켜야 됩니다.
listen=NO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!
# listen_ipv6=NO (기본값 = NO)
# listen 옵션과 동일하지만, IPv6에서 운영할 때 사용 합니다. 일반적으로 IPv6는 사용하지 않으므로 비활성화 하시면 됩니다.
listen_ipv6=YES
#
# pam_service_name=vsftpd
# vsftpd에서 PAM설정파일명으로 사용할 파일명을 지정합니다. 이 설정이 적용되면 기본이 vsftpd 이므로 /etc/pam.d/vsftpd 파일이 사용됩니다.
pam_service_name=vsftpd
#
# userlist_enable=YES (기본값 = NO)
# 명시된 사용자만 로그인을 허용할 때 사용하는 옵션입니다. userlist_deny 옵션이 비활성화 된 상태에서만 작동합니다.
userlist_enable=YES
#
# tcp_wrappers=YES
# tcp_wrappers 적용 여부를 설정하는 것으로 사용할 것인가(YES) 사용하지 않을 것인가(NO)를 설정합니다. YES로 설정하시면 허용할 호스트는 /etc/hosts.allow 허용하지 않을 호스트는 /etc/hosts.deny에 설정합니다.
tcp_wrappers=YES
#
# background=YES (기본값 = NO)
# VsFTP 데몬을 background로 실행할 것인지 설정 합니다.
#
# listen_port=21
# 만약 vsftpd를 xinetd모드가 아닌 독립데몬 (standalone)으로 서비스하려면 위의 listen 지시자를 YES로 설정하시고 listen_port 에 서비스할 포트번호(기본 21번)를 지정하시면 됩니다.
#
# listen_address=none (기본값 = none)
# 멀티 FTP 데몬을 사용할 때 요청을 받아드릴 IP를 설정합니다.
#
# listen_address6=none (기본값 = none)
# listen_address와 동일하며 IPv6에서 운영할 때 사용 합니다.
#
# pasv_address=none (기본값 = none)
# NAT를 사용하는 클라이언트의 공용 IP를 설정할 때 사용 합니다. 일반적으로 설정하지 않아도 상관 없습니다.
#
# max_clients=30 (기본값 = 0)
# FTP 서버에 접속할 수 있는 클라이언트의 최대수를 제한하는 옵션 입니다. 기본값인 0으로 설정하면 제한을 두지 않습니다.
#
# max_per_ip=3
# 이 설정은 동시 ftp 접속자수를 제한하는 설정입니다. 첫번째 max_client 는 ftp 접속을 최대 30명까지만 허용한다는 설정입니다. 그리고 max_per_ip 는 한 IP(호스트)에서 동시에 3번까지만 접속이 가능하다는 설정입니다. 이 또한 서비스거부공격(DoS)를 방어하기 위한 방법으로 활용될 수 있습니다.
#
# local_max_rate=0 (기본값 = 0)
# 계정 사용자의 최대전송률을 지정합니다.업/다운로드의 속도를 제한할 때 사용하며, 단위는 bps 입니다.
#
# trans_chunk_size=0
# 위의 세가지 설정은 ftp 서비스의 전송속도를 제한 하도록 하는 설정입니다. 즉, 초당 byte 수를 지정할 수 있으며 제한없이 허용하려면 0 으로 설정하시면 됩니다. 이 설정은 vsftpd 가 독립데몬(standalone)모드로 서비스될 때에만 적용되는 것입니다.
#
# use_localtime=YES (기본값 = NO)
# 서버의 FTP 데몬시간을 서버의 표준시간으로 고정할지 설정합니다. 만약 이 옵션을 비활성화 하게되면 표준시각(GMT)를 보여주므로, 한국의 경우 9시간의 오차가 발생합니다.
#
# setproctitle_enable=YES (기본값 = NO)
# 프로토콜의 현재 상태를 출력해줄 것인지 설정합니다. 이 옵션을 활성화하면 ps 명령어를 사용했을 때 세션의 현재 상태도 보여줍니다. 또한 LTN에서 제공하는 ftpwho 스크립트를 사용할 때에도 이 옵션을 활성화 하셔야 됩니다.
#
# user_config_dir=none (기본값 = none)
# 특정 사용자의 개별 설정 파일을 지정합니다. 이 옵션을 사용하면 /etc/vsftpd/vsftpd.conf의 지시문을 무시하고 사용할 수 있습니다.
#
# userlist_deny=YES (기본값 = YES)
# 명시된 사용자가 로그인을 할 수 없도록 제한하는 옵션 입니다.
# userlist_enable 옵션이 비활성화 된 상태에서만 작동하며, 서로 반대되는 개념 입니다.
#
# userlist_file=/etc/vsftpd.user_list (기본값 = /etc/vsftpd.user_list)
# 명시된 사용자를 읽어올 파일을 지정합니다.
#
# text_userdb_names=NO (기본값 = NO)
# 디렉토리 목록의 사용자와 그룹 필드들에 있는 숫자 ID 들이 보이는 것이 기본값 입니다.
# 당신은 이 파라미터를 활성화 함으로써 글자 이름을 사용할 수도 있습니다. 그러나 이 항목은 성능상의 이유로 기본적으로 비활성화 되어 있습니다.
#
# ssl_tlsv1=YES (기본값 = YES)
# TLS를 사용할 것인지에 대해 설정합니다.
# 이 옵션은 TLS를 활성화하며, TLS가 가능한 클라이언트가 이용하는데 도움이 됩니다.
#
# ssl_enable=NO (기본값 = NO)
# SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다.
# 만약 OpenSSL에 대해서 컴파일 되어 있고, 이 옵션을 허용할 경우 vsftpd는 SSL을 통한 보안 접속을 지원합니다. 이 옵션은 제어 연결을 지원(로그인을 포함)하며, 또한 데이터 연결도 지원 합니다. 사용자는 SSL을 지원하는 클라이언트를 필요로 할 것이며, 반드시 필요한 경우에만 허용하는것이 좋습니다. 그러나 vsftpd는 OpenSSL 라이브러리의 보안과 관련한 게런티를 만들 수 없으며, 이 옵션을 활성화 합니다는것은 OpenSSL 라이브러리의 보안을 믿는다는 것을 전제로 합니다.
#
# ssl_sslv2=NO (기본값 = NO)
# SSL v2 프로토콜 연결을 허용할 것인지에 대해 설정합니다.
# 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.
#
# ssl_sslv3=NO (기본값 = NO)
# SSL v3 프로토콜 연결을 허용할 것인지에 대해 설정합니다.
# 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.
#
# dsa_cert_file=none (기본값 = none)
# SSL 인증서의 위치를 지정합니다. SSL의 암호화 접속을 사용하기 위해, DSA 인증서의 위치를 지정합니다.
#
# ssl_ciphers=DES-CBC3-SHA (기본값 = DES-CBC3-SHA)
# 이 옵션은 vsftpd가 암호화 된 SSL 연결들에 대해 어떤 SSL 암호화 방식을 선택하는지에 따라 사용됩니다. 더 자세한 사항은 관련 암호 메뉴얼 페이지를 보십시요.
# 암호화를 알리지 않는 것은 원격에서 선택된 암호화 방식의 취약점을 공격하려고 불법적인 원격 공격을 막기 위한 유용한 보안 지침이 될 수 있습니다.
#
# force_local_data_ssl=YES (기본값 = YES)
# 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있습니다. 모든 비익명 로그인은 데이터 연결 상태에서 데이터를 주고 받기 위해 보안 SSL 연결을 사용하도록 강제적으로 설정됩니다.
#
# force_local_logins_ssl=YES (기본값 = YES)
# 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있습니다. 모든 비익명 로그인은 비밀번호를 전달하기 위해 보안 SSL 연결을 사용하도록 강제적으로 설정됩니다.
#
# connect_timeout=60 (기본값 = 60/초)
# 액티브 모드(Active Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.
#
# accept_timeout=60 (기본값 = 60/초)
# 패시브 모드(Passive Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.
#
# banner_file=/etc/vsftpd/welcome.msg (기본값 = none)
# 사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지 파일을 설정합니다.
#
# Message_file=.message
# ftp 접속후에 특정 디렉토리로 이동할 때에 디렉토리 안내메시지 파일로 사용할 파일명을 지정한 것입니다. 이 설정은 바로 위에서 설명한 "dirmessage_enable" 이 YES로 설정되어 있을 때 적용됩니다.
#
# port_enable=YES (기본값 = YES)
# 데이터 전송을 위해서 Active Mode를 사용할 것인지 설정합니다.
#
# ftp_data_port=20 (기본값 = 20)
# 데이터 전송 포트를 지정합니다.
# connect_from_port_20 옵션이 활성화 되었을 때 사용되는 포트를 지정합니다.
#
# pasv_enable=YES (기본값 = YES)
# 데이터 전송을 위해서 Passive mode를 사용할 것인지 설정합니다.
# Active Mode로 접근할 수 없는 사용자들을 위해 활성화 하는 것 이 좋습니다.
#
# pasv_promiscuous=NO (기본값 = NO)
# 동일한 IP주소에서 이루어지는 데이터 연결을 보장해주는 보안체크 기능을 사용할 것인지 설정합니다.
#
# pasv_min_port=0
# pasv_max_port=0 (기본값 = 0)
# 패시브 모드로 연결시 할당될 최대 및 최소 포트를 설정하는 옵션 입니다. 일반적으로 50000~60000 포트를 지정하는 것이 좋으며, 기본값인 0으로 설정하게 되면 well-known port를 제외한 무작위 포트를 이용하게 됩니다.
#
# file_open_mode=0644 (기본값 = 0666)
# 파일이 업로드 되었을 때의 퍼미션을 지정해주는 옵션 입니다.
# 이 옵션은 반드시 umask 옵션보다 아래에 있어야 됩니다.
#
# dirlist_enable=YES (기본값 = YES)
# 접속한 디렉토리의 파일리스트를 보여줄 지 설정합니다.
#
# force_dot_files=NO (기본값 = NO)
# 히든 파일/디렉토리를 보여줄 것인지 설정하는 옵션 입니다. 히든 파일/디렉토리는 dot(.) 으로 시작하는 것을 말합니다.
#
# tilde_user_enable=NO (기본값 = NO)
# 이 옵션이 활성화되면, vsftpd는 ~chris/pics와 같이 사용자 계정 이름에 틸드 표시가 따라오는 경우의 경로명을 접근하도록 시도하고 해석할 것입니다. vsftpd는 항상 ~ 와 ~/somthing 을 해석합니다는 것을 주의하시기 바랍니다.
# (여기서 ~ 는 기본적으로 로그인 했을 때의 디렉토리로 해석됩니다.) ~user 경로들은 _current_ chroot() 에서 /etc/passwd 파일을 찾을 수 있을 경우에만 해석 될 수 있을 것입니다.
#
# hide_ids=NO (기본값 = NO)
# 디렉토리 목록에서 UID를 보여주지 않고, 모두 FTP로 표시할 것인지 설정합니다.
# 이 옵션을 활성화 하면 모든 파일의 소유권이 FTP로 표시되므로 보안에 도움이 될 수 있습니다.
#
# download_enable=YES (기본값 = YES)
# 다운로드에 대한 권한을 설정합니다.
#
# chmod_enable=YES (기본값 = YES)
# 사용자가 퍼미션을 변경할 수 있도록 설정합니다.
#
# use_sendfile=YES (기본값 = YES)
# 이 옵션은 당신의 플랫폼에서 sendfile() 시스템 호출을 사용하는 것과 관련된 이익을 테스트 할 때 사용되는 내부 설정입니다.
#
# cmds_allowed=PASV,RETR,QUIT (기본값 = none)
# 사용자에게 허가할 명령어를 지정합니다.
#
# deny_file={*.mp3,*.mov} (기본값 = none)
# 업로드를 거부할 파일명을 지정합니다.
#
# hide_file={*.mp3,*.mov} (기본값 = none)
# 숨길 파일명을 지정합니다.
# 이 옵션을 사용하면 서버에 실제로 데이터는 존재하지만, FTP 사용자에게는 보이지 않도록
# 설정하는 기능입니다. 악의적인 사용자에게 간단한 fake를 걸 수 있습니다.
#
# passwd_chroot_enable=NO (기본값 = NO)
# SSH로 접속했을 때 자신의 홈 상위 디렉토리를 접근할 수 없도록 설정합니다.
# chroot_local_user 옵션이 활성화되었고, OpenSSH에 패치를 했을경우, SSH 또한 자신의 홈상위 디렉토리를 접근할 수 없도록 설정할 수 있으며, /etc/passwd 파일의 홈 디렉토리 필드의 /home/사용자/./와 같이 "/./"를 붙여 사용자를 홈디렉토리에 제한하게 합니다.
#
# secure_chroot_dir=/usr/share/empty (기본값 = /usr/share/empty)
# secure chroot()에 사용될 디렉토리를 지정합니다.
# 이 옵션에서 지정된 디렉토리는 비어있어야되며, ftp 사용자에 대해 쓰기 권한이 없어야 됩니다.
#
# vsftpd_log_file=/var/log/vsftpd.log(기본값 = /var/log/vsftpd.log)
# VsFTP의 기본 로그 파일을 지정합니다.
# 이 옵션은 xferlog_enable 옵션과 xferlog_std_format 옵션이 비활성화일 때 작동하며, dual_log_enable 옵션이나 syslog_enable 옵션이 활성화될때 사용됩니다.
#
# dual_log_enable=NO (기본값 = NO)
# 2중 로그를 기록할 것인지에 대해 설정합니다.
# 만약 이 옵션을 활성화하면, /var/log/xferlog와 /var/log/vsftpd.log에 로그가 기록됩니다.
#
# syslog_enable=NO (기본값 = NO)
# syslogd 데몬을 이용해서 로그를 기록할 것인지 설정합니다.
#
# log_ftp_protocol=YES (기본값 = NO)
# FTP Protocol의 모든 내용을 기록할지 설정합니다.
# 이 옵션을 활성화하면 FTP 명령어와 반응이 모두 로깅되므로 디버그에 유용하게 쓰입니다.
#
# no_log_lock=NO (기본값 = NO)
# 로그 파일을 잠글것인지에 대해서 설정합니다.
# 이 옵션은 vsftpd가 로그 파일을 기록할 때, 파일을 잠그는 것을 막는 옵션 입니다.
# 보통은 활성화 하지 않아도 되며, 솔라리스/베리타스 파일 시스템 조합에서 때때로
# 로그파일을 잠그려는 시도를 하는 운영체제 시스템 버그를 피하기 위해 존재 합니다.
#
# session_support=YES
# 이 설정은 YES로 설정되어 유효하게 되었을 때에는 바이너리파일인 wtmp에 ftp 접속관련 기록을 남기게 됩니다.
# Last 라는 명령어는 각 사용자들의 접속기록을 wtmp 파일에서 가져와 확인하는 명령어이므로 이 설정이 적용되면 last 명령어로 ftp 접속기록을 확인 할 수 있게 됩니다.
#
# guest_enable=NO
# 가상유저 모드로 운영할 것인지에 대해 설정합니다. (기본값 = NO)
# 이 옵션을 활성화하면 모든 비익명 사용자는 가상 사용자로 접속이 됩니다.
#
# guest_username=ftp
# 가상유저들의 실제 계정을 지정합니다. (기본값 = ftp)
#
# virtual_use_local_privs=NO (기본값 = NO)
# 가상유저들의 권한을 실제 계정의 권한처럼 허용할 것인지를 설정합니다.
# 이 옵션이 활성화되어있지 않으면 가상유저는 FTP에 접속해서 파일을 생성하지 못합니다. 또한 가상유저는 기본적으로 anonymous의 권한을 갖고 있습니다.
#
# user_sub_token=$USER (기본값 = none)
# 가상유저들을 지칭할 가상의 변수를 지정합니다.
#
# local_root=/home/virtual/$USER (기본값 = none)
# 가상유저들이 로그인 후 이동될 디렉토리를 지정합니다.
#
# anon_max_rate=0 (기본값 = 0)
# 익명 사용자의 다운로드 최대전송률을 지정합니다. 다운로드 속도를 제한할때 사용하며, 단위는 bps 입니다.
#
# allow_anon_ssl=NO (기본값 = NO)
# 익명사용자의 SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다.
# 이 옵션은 ssl_enable이 활성화 되었을 때만 적용됩니다.
#
# secure_email_list_enable=NO (기본값 = NO)
# 명시된 이메일 주소로만 접속을 허용할 지 설정합니다.
#
# email_password_file=/etc/vsftpd.email_passwords (기본값 = /etc/vsftpd.email_passwords)
# 접속을 허용할 이메일 주소 파일을 지정합니다.
# secure_email_list_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.
#
# ftp_username=ftp (기본값 = ftp)
# 익명 사용자의 접속에 사용될 계정명을 지정합니다.
#
# no_anon_password=NO (기본값 = NO)
# 익명 사용자가 접속할 때 패스워드를 묻지않고 접속시킬 것인지 설정합니다.
# 이 옵션을 활성화하면 접속시 패스워드를 묻지 않습니다.
#
# one_process_model=NO (기본값 = NO)
# 클라이언트 접속마다 하나의 프로세스가 작동되도록 할 것인지 설정합니다.
# 이 옵션을 활성화하면 접속하는 수만큼 프로세스가 작동되므로 효율이 좋습니다.
#
# anon_root=/var/ftp/pub (기본값 = none)
# 익명 사용자의 기본 디렉토리를 지정합니다.
# 일반적으로 익명 사용자의 접근을 허용하면 ftp_username에 지정된 사용자의 홈 디렉토리가 기본적으로 설정됩니다. 그렇지만 만약 변경할 필요가 있을 경우에 이 옵션을 사용하면 됩니다.
#
# anon_world_readable_only=YES (기본값 = YES)
# 익명 사용자들의 다운로드에 대한 설정을 합니다.
# 익명 사용자들이 읽기 가능한 파일을 다운로드 할 수 있게 설정합니다.
#
# anon_other_write_enable=NO (기본값 = NO)
# 익명 사용자의 파일 삭제,변경에 대한 설정을 합니다.
# 파일 삭제 및 파일명 변경등과 같은 기능을 사용할 수 있게 합니다.
#
# anon_umask=022 (기본값 = 077)
# 익명 사용자의 파일생성 umask 값을 지정 합니다.
# umask에 대한 설명은 local_mask의 설명을 참조하시기 바랍니다.

 

 

 

 

 

 

List of Articles
번호 제목 글쓴이 날짜sort 조회 수

XE Login