VsFTPD 환경설정 옵션





--------------------------------------------------------------------------------------
- 작성자 : 김혁중(티니) [sky(golbangi or at)tini4u.net]
- 작성일 : 2007-01-24
- 사이트 : http://linux.tini4u.net/
- 원제목 : VsFTPD 환경설정 옵션
- 환 경 : CentOS 4.4, VsFTPD
- 키워드 : ftp, vsftpd, options
--------------------------------------------------------------------------------------
이번 강좌는 VsFTPD의 환경설정 옵션을 설명하도록 하겠습니다.
이 강좌의 내용은 man vsftpd.conf 에 있는 내용을 한글화 및 추가 의견을 달아놓은 것 입니다.
만약 틀린 내용이 있다면 코멘트로 남겨주시거나, 이메일로 발송해주시면 수정하도록 하겠습니다.
아래는 필자가 RPM을 패키징 할 때 사용되는 기본 설정을 그대로 복사해둔것임을 말씀드리며,
옵션의 설정은 'option=value' 형식으로 해주시면 됩니다.
그러나 옵션과 값의 사이에는 절대로 공백이 있어서는 안된다는 점을 주의해주시기 바랍니다.
즉, 'optione = value' 형식은 틀린 형식이므로 missing error가 날 수 있습니다.
################################################################################################
# Daemon Name : VsFTPD #
# Description : Very Secure FTP Daemon #
# Version : 1.0.1 #
# Manual License : Hyeok-Jung, KIM (Nick. 티니) #
# WebSite : LTN(Linux.Tini4u.Net) #
# Contact E-Mail : sky (at) tini4u.net #
# LastUpdate : 2007. 01. 28. #
# Message : 잘못된 내용이 있으면 위 메일주소로 연락주시기 바랍니다. #
################################################################################################
#
#
####################################### Global Settings ########################################
## VsFTPd의 전체 설정 입니다. ##
################################################################################################
#
############################## 기본 설정 ##############################
#
## VsFTP 데몬을 background로 실행할 것인지 설정 합니다. (기본값 = NO)
## => VsFTP 데몬은 기본적으로 inetd 모드로 동작이 됩니다. 따라서 독립모드(standalone)로
## 데몬을 운영하실 거라면 이 옵션과 listen 옵션을 모두 YES로 켜주셔야 됩니다.
## 반대로 VsFTP 데몬을 inetd 모드로 운영하시려면 이 옵션과 listen 옵션을 비활성화 하시면 됩니다.
## 일반적으로 FTP 데몬은 많은 접속이 있을 경우에 standalone 모드로 운영하는것이 좋으며,
## 많은 접속이 없는 경우에는 inetd 모드로 운영하는것이 시스템 자원효율에 좋습니다.
background=YES

## background 옵션과 같이 사용되며, 이 옵션은 listen_port에서 들어오는 요청에 대해서
## 데몬이 요청을 받아드릴지에 대해 설정합니다. (기본값 = NO)
## => 만약 데몬을 독립모드(standalone)로 운영하실 거라면 background 옵션과 같이 이 옵션도
## 함께 활성화 시켜야 됩니다.
listen=YES

## listen 옵션과 동일하지만, IPv6에서 운영할 때 사용 합니다. (기본값 = NO)
## => 일반적으로 IPv6는 사용하지 않으므로 비활성화 하시면 됩니다.
listen_ipv6=NO

## VsFTP 데몬이 독립모드(standalone)로 동작할 때 사용할 포트를 지정합니다. (기본값 = 21)
listen_port=21

## 멀티 FTP 데몬을 사용할 때 요청을 받아드릴 IP를 설정합니다. (기본값 = none)
## => 이 옵션은 multi-homed의 설정을 참조하시기 바랍니다.
#listen_address=none

## listen_address와 동일하며 IPv6에서 운영할 때 사용 합니다. (기본값 = none)
#listen_address6=none

## NAT를 사용하는 클라이언트의 공용 IP를 설정할 때 사용 합니다. (기본값 = none)
## => 일반적으로 설정하지 않아도 상관 없습니다.
#pasv_address=none

## VsFTPd가 구동될 서버의 유저를 설정합니다. (기본값 = nobody)
nopriv_user=nobody

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

## IP당 접속할 수 있는 최대수를 제한하는 옵션 입니다. (기본값 = 0)
## => 기본값인 0으로 설정하면 제한을 두지 않습니다.
max_per_ip=30

## 계정 사용자의 최대전송률을 지정합니다. (기본값 = 0)
## => 업/다운로드의 속도를 제한할때 사용하며, 단위는 bps 입니다.
local_max_rate=0

## 한번에 전송될 크기를 지정합니다. (기본값 = 0)
## => 이 옵션은 전송할 파일을 지정한 단위로 나눠서 전송하도록 하는 옵션입니다.
## rate 옵션과 밀접한 관계가 있으며, 기본값인 0으로 설정하면, vsftpd가 알아서 판단하므로
## 되도록이면 수정하지 않는것이 좋습니다.
## vsftpd의 제작자 또한 이 옵션을 따로 수정할 이유가 없을 것이라고 말하고 있습니다.
trans_chunk_size=0

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

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

## 특정 사용자의 개별 설정 파일을 지정합니다. (기본값 = none)
## => 이 옵션을 사용하면 /etc/vsftpd/vsftpd.conf의 지시문을 무시하고 사용할 수 있습니다.
#user_config_dir=none
#
############################## 접속 설정 ##############################
#
## 계정 사용자의 접속에 대한 설정을 합니다. (기본값 = NO)
local_enable=YES

## 명시된 사용자만 로그인을 허용할 때 사용하는 옵션입니다. (기본값 = NO)
## => userlist_deny 옵션이 비활성화 된 상태에서만 작동합니다.
userlist_enable=NO

## 명시된 사용자가 로그인을 할 수 없도록 제한하는 옵션 입니다. (기본값 = YES)
## => userlist_enable 옵션이 비활성화 된 상태에서만 작동하며, 서로 반대되는 개념 입니다.
userlist_deny=YES

## 명시된 사용자를 읽어올 파일을 지정합니다. (기본값 = /etc/vsftpd.user_list)
userlist_file=/etc/vsftpd.user_list

## 디렉토리 목록의 사용자와 그룹 필드들에 있는 숫자 ID 들이 보이는 것이 기본값 입니다.
## 당신은 이 파라미터를 활성화 함으로써 글자 이름을 사용할 수도 있습니다.
## 그러나 이 항목은 성능상의 이유로 기본적으로 비활성화 되어 있습니다. (기본값 = NO)
text_userdb_names=NO

## PAM 사용자 인증을 할 때 사용될 인증파일을 지정합니다. (기본값 = ftp)
## => VsFTPd를 RPM으로 설치하게 되면 일반적으로 vsftpd로 인증파일이 생성됩니다.
pam_service_name=vsftpd

## TCP wrappers에 의해서 FTP 접속을 제어 할 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 /etc/hosts.allow와 /etc/hosts.deny에 의해서 제어할 수 있습니다.
## 그러나 이 옵션을 사용하려면 vsftpd 소스중 builddefs.h 파일에서 설정을 변경해야 됩니다.
## 변경전 -> #undef VSF_BUILD_TCPWRAPPERS
## 변경후 -> #define VSF_BUILD_TCPWRAPPERS
## 참고: LTN에서 제공하는 vsftpd는 이미 패치되어 있습니다.
tcp_wrappers=YES

## TLS를 사용할 것인지에 대해 설정합니다. (기본값 = YES)
## => 이 옵션은 TLS를 활성화하며, TLS가 가능한 클라이언트가 이용하는데 도움이 됩니다.
ssl_tlsv1=YES

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

## SSL v2 프로토콜 연결을 허용할 것인지에 대해 설정합니다. (기본값 = NO)
## => 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.
ssl_sslv2=NO

## SSL v3 프로토콜 연결을 허용할 것인지에 대해 설정합니다. (기본값 = NO)
## => 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, TLS v1 연결들을 선호 합니다.
ssl_sslv3=NO

## SSL 인증서의 위치를 지정합니다. (기본값 = none)
## => SSL의 암호화 접속을 사용하기 위해, DSA 인증서의 위치를 지정합니다.
#dsa_cert_file=none

## 이 옵션은 vsftpd가 암호화 된 SSL 연결들에 대해 어떤 SSL 암호화 방식을 선택하는지에 따라 사용됩니다.
## 더 자세한 사항은 관련 암호 메뉴얼 페이지를 보십시요.
## 암호화를 알리지 않는 것은 원격에서 선택된 암호화 방식의 취약점을 공격하려고 불법적인 원격 공격을
## 막기 위한 유용한 보안 지침이 될 수 있습니다. (기본값 = DES-CBC3-SHA)
#ssl_ciphers=DES-CBC3-SHA

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

## 이 옵션은 ssl_enable이 활성화 되었을 때만 적용되며, 만약 이 옵션이 활성화 되어 있다면
## 모든 비익명 로그인은 비밀번호를 전달하기 위해 보안 SSL 연결을 사용하도록 강제적으로 설정됩니다.
## (기본값 = YES)
#force_local_logins_ssl=YES
#
############################ 대기시간 설정 ############################
#
## 액티브 모드(Active Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. (기본값 = 60/초)
## => 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다.
connect_timeout=60

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

## 데이터 전송 대기시간을 설정합니다. (기본값 = 300/Secs)
## => FTP 서버로부터 데이터를 업/다운로드를 한 뒤 아무런 작동도 안할때 접속이 종료되도록 합니다.
data_connection_timeout=300

## 접속 대기시간을 설정합니다. (기본값 = 300/Secs)
## => FTP에 접속한 뒤 아무런 작동도 안할 때 지정된 시간이후 접속이 종료되도록 합니다.
idle_session_timeout=300
#
############################# 메시지 설정 #############################
#
## 사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지 파일을 설정합니다. (기본값 = none)
#banner_file=/etc/vsftpd/welcome.msg

## 사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지를 설정합니다. (기본값 = none)
ftpd_banner=Welcome to vsftpd server

## 디렉토리의 메시지 파일을 사용자에게 보여줄 것인지 설정합니다. (기본값 = NO)
dirmessage_enable=NO

## 메시지 파일을 지정 합니다. (기본값 = .message)
## => dirmessage_enable 옵션을 허용했을 경우에 메시지를 읽어올 파일을 지정합니다.
message_file=.message
#
############################## 모드 설정 ##############################
#
## 데이터 전송을 위해서 Active Mode를 사용할 것인지 설정합니다. (기본값 = YES)
port_enable=YES

## 액티브모드(Active Mode) 데이터 전송 포트인 20번을 사용할 것인지 설정 합니다. (기본값 = NO)
connect_from_port_20=YES

## 데이터 전송 포트를 지정합니다. (기본값 = 20)
## => connect_from_port_20 옵션이 활성화되었을때 사용되는 포트를 지정합니다.
ftp_data_port=20

## 데이터 전송을 위해서 Passive mode를 사용할 것인지 설정합니다. (기본값 = YES)
## => Active Mode로 접근할 수 없는 사용자들을 위해 활성화 하는것이 좋습니다.
pasv_enable=YES

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

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

## 아스키모드(ASCII Mode) 전송 허용에 대해서 설정합니다. (기본값 = NO)
## => 이 옵션은 악의적인 사용자에 의해서 시스템의 자원이 고갈될 수 있으므로 주의해야 됩니다.
ascii_download_enable=YES
ascii_upload_enable=YES
#
############################## 권한 설정 ##############################
#
## 파일 생성 umask 값을 지정합니다. (기본값 = 077)
## => umask는 "max permission-umask=create permission" 의 공식을 가지고 있습니다.
## 디렉토리의 기본값은 0777이며, 파일의 기본값은 0666 입니다.
## 따라서 일반적인 시스템의 파일생성 퍼미션인 644를 생성하려면 022로 해야 됩니다.
## 디렉토리: 0777-022=0755, 파일: 0666-022=0644
local_umask=022

## 파일이 업로드 되었을 때의 퍼미션을 지정해주는 옵션 입니다. (기본값 = 0666)
## => 이 옵션은 반드시 umask 옵션보다 아래에 있어야 됩니다.
file_open_mode=0644

## 접속한 디렉토리의 파일리스트를 보여줄 지 설정합니다. (기본값 = YES)
dirlist_enable=YES

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

## 이 옵션이 활성화되면, vsftpd는 ~chris/pics와 같이 사용자 계정 이름에 틸드 표시가 따라오는 경우의
## 경로명을 접근하도록 시도하고 해석할 것입니다.
## vsftpd는 항상 ~ 와 ~/somthing 을 해석한다는 것을 주의하시기 바랍니다.
## (여기서 ~ 는 기본적으로 로그인 했을 때의 디렉토리로 해석됩니다.)
## ~user 경로들은 _current_ chroot() 에서 /etc/passwd 파일을 찾을 수 있을 경우에만 해석 될 수 있을 것입니다.
## (기본값 = NO)
tilde_user_enable=NO

## 디렉토리 목록에서 UID를 보여주지 않고, 모두 FTP로 표시할 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화 하면 모든 파일의 소유권이 FTP로 표시되므로 보안에 도움이 될 수 있습니다.
hide_ids=NO

## 사용자에게 STOR(저장),DELE(삭제),RNFR(이름변경),RNTO(이름변경),MKD(디렉토리생성),RMD(디렉토리삭제),
## APE(이어올리기), SITE(umask,chmod)등의 권한을 허용할지 설정합니다. (기본값 = NO)
## => 이 옵션이 비활성화되어 있으면 사용자는 FTP 서버에 데이터를 쓸 수 없습니다.
write_enable=YES

## 다운로드에 대한 권한을 설정합니다. (기본값 = YES)
download_enable=YES

## 사용자가 퍼미션을 변경할 수 있도록 설정합니다. (기본값 = YES)
chmod_enable=YES

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

## 사용자에게 허가할 명령어를 지정합니다. (기본값 = none)
#cmds_allowed=PASV,RETR,QUIT

## 업로드를 거부할 파일명을 지정합니다. (기본값 = none)
#deny_file={*.mp3,*.mov}

## 숨길 파일명을 지정합니다. (기본값 = none)
## => 이 옵션을 사용하면 서버에 실제로 데이터는 존재하지만, FTP 사용자에게는 보이지 않도록
## 설정하는 기능입니다. 악의적인 사용자에게 간단한 fake를 걸 수 있습니다.
#hide_file={*.mp3,*.mov}

## async ABOR 명령어를 사용할 수 있도록 설정합니다. (기본값 = NO)
## => 일부 FTP 클라이언트에서 파일전송을 취소했을 경우, 취소되지 않은 상태로 있는 경우가
## 생길 수 있는데 그것을 방지하기 위해 사용할 수 있습니다.
## 그러나 보안상 좋지 않기 때문에, 비활성화 하시는것이 좋습니다.
async_abor_enable=NO

## ls -R 명령을 허용할 것인지를 설정하는 옵션 입니다. (기본값 = NO)
## => 만약 하위디렉토리나 파일이 매우 많은 상위디렉토리에서 이 옵션을 활성화하게 되면
## 시스템 자원의 낭비가 심하므로, 비활성화 하시는것이 좋습니다.
ls_recurse_enable=NO
#
############################## 보안 설정 ##############################
#
## 모든 계정 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다. (기본값 = NO)
## => FTP 사용자가 시스템에 접근할 수 있으면 위험하므로 반드시 활성화 하는것이 좋습니다.
chroot_local_user=YES

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

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

## 사용자의 홈상위 디렉토리를 설정한 파일을 지정합니다. (기본값 = /etc/vsftpd.chroot_list)
## => chroot_list_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.
chroot_list_file=/etc/vsftpd.chroot_list

## secure chroot()에 사용될 디렉토리를 지정합니다. (기본값 = /usr/share/empty)
## => 이 옵션에서 지정된 디렉토리는 비어있어야되며, ftp 사용자에 대해 쓰기 권한이 없어야 됩니다.
#secure_chroot_dir=/usr/share/empty
#
############################## 로그 설정 ##############################
#
## VsFTP의 기본 로그 파일을 지정합니다. (기본값 = /var/log/vsftpd.log)
## => 이 옵션은 xferlog_enable 옵션과 xferlog_std_format 옵션이 비활성화일때 작동하며,
## dual_log_enable 옵션이나 syslog_enable 옵션이 활성화될때 사용됩니다.
#vsftpd_log_file=/var/log/vsftpd.log

## 2중 로그를 기록할 것인지에 대해 설정합니다. (기본값 = NO)
## => 만약 이 옵션을 활성화하면, /var/log/xferlog와 /var/log/vsftpd.log에 로그가 기록됩니다.
#dual_log_enable=NO

## syslogd 데몬을 이용해서 로그를 기록할 것인지 설정합니다. (기본값 = NO)
#syslog_enable=NO

## xferlog_enable 옵션을 활성화했을 경우에 로그를 기록할 파일을 지정합니다.
## (기본값 = /var/log/vsftpd.log)
xferlog_file=/var/log/vsftpd.log

## 파일의 송/수신 결과를 xferlog_file 옵션으로 지정된 로그파일에 기록합니다. (기본값 = NO)
xferlog_enable=YES

## 로그를 기록할 때 표준 xferlog 포맷으로 저장할 것인지를 설정합니다. (기본값 = NO)
xferlog_std_format=NO

## FTP Protocol의 모든 내용을 기록할지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 FTP 명령어와 반응이 모두 로깅되므로 디버그에 유용하게 쓰입니다.
log_ftp_protocol=NO

## 로그 파일을 잠글것인지에 대해서 설정합니다. (기본값 = NO)
## => 이 옵션은 vsftpd가 로그 파일을 기록할 때, 파일을 잠그는 것을 막는 옵션 입니다.
## 보통은 활성화 하지 않아도 되며, 솔라리스/베리타스 파일 시스템 조합에서 때때로
## 로그파일을 잠그려는 시도를 하는 운영체제 시스템 버그를 피하기 위해 존재 합니다.
no_log_lock=NO

## 사용자의 접속 기록을 남길 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 utmp/wtmp 파일에 접속 기록이 로깅됩니다.
## 따라서 last 명령어로 접속 여부를 확인하려면 활성화 하셔야 됩니다..
session_support=YES
#
#
##################################### Virtual User Settings ####################################
## 가상 사용자에 대한 설정 입니다. ##
################################################################################################
#
## 가상유저 모드로 운영할 것인지에 대해 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 모든 비익명 사용자는 가상 사용자로 접속이 됩니다.
guest_enable=NO

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

## 가상유저들의 권한을 실제 계정의 권한처럼 허용할 것인지를 설정합니다. (기본값 = NO)
## => 이 옵션이 활성화되어있지 않으면 가상유저는 FTP에 접속해서 파일을 생성하지 못합니다.
## 또한 가상유저는 기본적으로 anonymous의 권한을 갖고 있습니다.
#virtual_use_local_privs=NO

## 가상유저들을 지칭할 가상의 변수를 지정합니다. (기본값 = none)
#user_sub_token=$USER

## 가상유저들이 로그인 후 이동될 디렉토리를 지정합니다. (기본값 = none)
#local_root=/home/virtual/$USER
#
###################################### Anonymous Settings ######################################
## 익명 사용자에 대한 설정 입니다. ##
################################################################################################
#
############################## 기본 설정 ##############################
#
## 익명 사용자의 접속에 대한 설정을 합니다. (기본값 = YES)
anonymous_enable=NO

## 익명사용자의 SSL을 통한 보안접속을 지원할 것인지에 대해 설정합니다. (기본값 = NO)
## => 이 옵션은 ssl_enable이 활성화 되었을 때만 적용됩니다.
#allow_anon_ssl=NO

## 로그인 거부 리스트 사용에 대한 설정을 합니다. (기본값 = NO)
## => /etc/vsftpd.banned_emails 에 설정된 주소로 로그인을 거부할 수 있습니다.
## 만약 anonymous@ 라고 설정해두면, anonymous@를 사용하는 사용자는 접속할 수 없게됩니다.
#deny_email_enable=NO

## 로그인 거부 파일을 지정합니다. (기본값 = /etc/vsftpd.banned_emails)
## => deny_email_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.
#banned_email_file=/etc/vsftpd.banned_emails

## 명시된 이메일 주소로만 접속을 허용할 지 설정합니다. (기본값 = NO)
#secure_email_list_enable=NO

## 접속을 허용할 이메일 주소 파일을 지정합니다. (기본값 = /etc/vsftpd.email_passwords)
## => secure_email_list_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다.
#email_password_file=/etc/vsftpd.email_passwords

## 익명 사용자의 접속에 사용될 계정명을 지정합니다. (기본값 = ftp)
#ftp_username=ftp

## 익명 사용자가 접속할 때 패스워드를 묻지않고 접속시킬 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 접속시 패스워드를 묻지 않습니다.
#no_anon_password=NO

## 클라이언트 접속마다 하나의 프로세스가 작동되도록 할 것인지 설정합니다. (기본값 = NO)
## => 이 옵션을 활성화하면 접속하는 수만큼 프로세스가 작동되므로 효율이 좋습니다.
#one_process_model=NO

## 익명 사용자의 기본 디렉토리를 지정합니다. (기본값 = none)
## => 일반적으로 익명 사용자의 접근을 허용하면 ftp_username에 지정된 사용자의
## 홈 디렉토리가 기본적으로 설정됩니다.
## 그렇지만 만약 변경할 필요가 있을 경우에 이 옵션을 사용하면 됩니다.
#anon_root=/var/ftp/pub

## 익명 사용자의 다운로드 최대전송률을 지정합니다. (기본값 = 0)
## => 다운로드 속도를 제한할때 사용하며, 단위는 bps 입니다.
#anon_max_rate=0
#
############################## 권한 설정 ##############################
#
## 익명 사용자의 업로드에 대한 설정을 합니다. (기본값 = NO)
## => Global Setting에서의 write_enable 옵션이 허용되었을 경우에
## 익명 사용자가 업로드 가능한 디렉토리에 파일을 업로드할 수 있게 합니다.
#anon_upload_enable=NO

## 익명 사용자들의 다운로드에 대한 설정을 합니다. (기본값 = YES)
## => 익명 사용자들이 읽기 가능한 파일을 다운로드 할 수 있게 설정합니다.
#anon_world_readable_only=YES

## 익명 사용자의 디렉토리 생성에 대한 설정을 합니다. (기본값 = NO)
## => 익명 사용자가 쓰기 가능한 디렉토리에서 새로운 디렉토리를 생성할 수 있습니다.
#anon_mkdir_write_enable=NO

## 익명 사용자의 파일 삭제,변경에 대한 설정을 합니다. (기본값 = NO)
## => 파일 삭제 및 파일명 변경등과 같은 기능을 사용할 수 있게 합니다.
#anon_other_write_enable=NO

## 익명 사용자의 소유권 변경이 가능한 계정명을 설정합니다. (기본값 = root)
#chown_username=root

## 익명 사용자의 소유권 변경에 대한 설정을 합니다. (기본값 = NO)
## => 익명으로 업로드된 파일을 chown_username 옵션으로 명시된 사용자의
## 소유권으로 변경되도록 할 수 있습니다.
#chown_uploads=NO

## 익명 사용자의 파일생성 umask 값을 지정 합니다. (기본값 = 077)
## => umask에 대한 설명은 local_mask의 설명을 참조하시기 바랍니다.
#anon_umask=022
#
#######################################################################

원문 : http://linux.tini4u.net/stories.php?st ··· opic%3D7




크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2008/05/16 15:46 2008/05/16 15:46
,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/143

sftpd.conf 파일에서 아래처럼 설정해주신후에

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

/etc/vsftpd/chroot_list 파일안에 상위로 못가게 만들 계정을 적어주시면 됩니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2007/12/04 17:43 2007/12/04 17:43
, ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/111


FTP서버 vsftpd 설치와 운영 (한글로그 패치 포함)
글쓴이 : 좋은진호 (2003년 10월 09일 오전 02:54) 읽은수: 20,688 [ 네트워크 인쇄용 페이지 본문 E-Mail로 보내기 ] 네트워크 작성자 : 좋은진호(truefeel, http://coffeenix.net/)
작성일 : 2003.10.01(수)
수정일 : 2004.01.08(목), chroot_list_enable 글 추가

이 글은 7월에 썼던 'vsftpd에서 한글파일로그와 lastlog 로긴확인하기'를 기초로 작성하였다.

1. vsftpd FTP 서버에 대해

vsftpd는 UNIX 시스템에서 사용할 수 있는 free FTP 서버(라이센스는 GPL)이다.
vsftpd가 내세우고 있는 것은 보안, 성능, 안정성이다. 지금까지 vsftpd의 자체 보안 문제가 있어
보안권고가 나온 적은 없다.(Redhat의 rpm 패키지중에 tcp_wrappers 지원없이 만들어져서 업데이트
rpm은 나온 적 있음)

* 지원 및 테스트된 OS

- Linux (Redhat, SuSE, Debian)
- Solaris (버전에 따라 IPv6나 inet_aton함수때문에 설치가 잘 안될 수 있음)
- FreeBSD, OpenBSD
- HP-UX
- IRIX

* 주요 기능

- 가상 IP별 별도의 환경 설정 기능 (설정파일의 listen_address= 이용)
- 가상 사용자 설정
- 전송 대역폭 지정
- PAM 지원 (버전 1.2.0부터는 PAM을 통한 wtmp에 로긴 로그를 남김)
- xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원
- Standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원
- IP별 다른 환경 파일 지정 기능 (tcp_wrappers와 함께 사용할 때)
- ...

2. vsftpd 설치

※ 설치는 Redhat 기준. 솔라리스의 PAM에 대한 것은 README.solaris 파일 참조한다.

http://vsftpd.beasts.org/ 에서 최신버전(현재 1.2.0)의 소스를 받아온다.

-------------------------------------------------------------
# tar xvfz vsftpd-1.2.0.tar.gz
# cd vsftpd-1.2.0
-------------------------------------------------------------

한글로 된 파일명을 전송할 때 로그에 파일명이 ???? 로 남지 않도록
logging.c 파일을 연 후 140번째 줄의

str_replace_unprintable(p_str, '?');

를 다음처럼 주석 처리한다.

/* str_replace_unprintable(p_str, '?'); */

또한 tcp_wrappers를 통한 접속제어를 사용하려면 builddefs.h 에서

#undef VSF_BUILD_TCPWRAPPERS 를
#define VSF_BUILD_TCPWRAPPERS 로 바꾼다.

-------------------------------------------------------------
# make
# make install (vsftpd 데몬, man page, xinetd 용 설정 파일 설치)
# cp vsftpd.conf /etc (환경설정 파일 복사)
# chmod 600 /etc/vsftpd.conf
# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd (PAM 설정 파일 복사)
-------------------------------------------------------------

/etc/pam.d/vsftpd 첫번째 줄에 다음과 같이 있다.

pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

즉, /etc/ftpusers 파일에 존재하는 ID는 접속할 수 없게된다.(sense=deny)

-------------------------------------------------------------
# FTP 접속을 허용하지 않을 ID를 등록한다.
# /etc/passwd를 참조해서 설치할 서버의 환경에 맞게 등록
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
smmsp
xfs
gdm
mysql
-------------------------------------------------------------

3. vsftpd.conf 의 주요 설정

-------------------------------------------------------------
# anonymous 사용자의 접속 허용 여부 (default = YES)
# 공개된 형태의 FTP 서버로 운영할 것이 아니라면 NO로 한다.
anonymous_enable=NO
# 로컬 계정 사용자의 접속 허용 여부 (default = NO)
local_enable=YES

# write 명령어 허용 여부 (defualt = NO)
write_enable=YES
# 로컬 계정 사용자용 umask (default = 077)
local_umask=022

# anonymous 사용자가 파일을 업로드 할 수 있는지 여부 (default = NO)
# anon_upload_enable=YES
# anonymous 사용자의 디렉토리 생성 허용 여부 (default = NO)
# anon_mkdir_write_enable=YES

# 파일 전송 로그를 남길 것인지 여부 (default = YES)
xferlog_enable=YES
# xferlog 표준 포맷으로 로그를 남길지 여부 (기본 설정파일은 YES)
# 아래에서 NO로 설정했을 때를 설명함
xferlog_std_format=YES
# 파일 전송 로그 파일명
xferlog_file=/var/log/vsftpd.log

# FTP 서버 접속할 때 로긴 메시지 (default = vsFTPd 버전번호)
# 한글 사용 가능
# ftpd_banner=Welcome to blah FTP service.

# 사용자의 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정 (default=NO)
# 제한이 필요할 경우 YES로 바꾼 후 제한할 사용자 ID를 chroot_list_file= 에 설정한 파일에
# 지정한다.
# chroot_local_user= 설정과 관련이 있으니 '3. 문제 해결'을 꼭 읽어보라.
#
# 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
-------------------------------------------------------------

필요한 설정이 끝났으면 xinetd를 재실행한다.

-------------------------------------------------------------
# /etc/rc.d/init.d/xinetd restart
-------------------------------------------------------------

4. 문제 해결

1) ftpwho 같은 명령은 있나?
  또한 last를 해도 접속된 걸 확인할 수가 없는데 방법이 없나?

 ftpwho 형태의 명령은 없으며 임시적으로 다음 명령어 등으로 확인할 수 있다.

 # ps -ef|grep vsftpd
 # fuser -v ftp/tcp

 vsftpd v1.2.0이상부터 PAM을 통해 wtmp에 로그를 남기므로 last로 접속여부를 확인할 수 있다.

2) 한글 파일명이 전송될 때는 vsftpd.log 에 ???? 로 남는다. 해결책은?

 vsftpd는 출력할 수 없다고 판단하는
 ASCII 코드 31 이하, 128~159, 177 문자를 모두 ? 로 바꿔서 저장을 한다.
 따라서 이 부분을 처리하지 않고 저장하도록 소스를 수정한 후 컴파일하면 해결된다.

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만 제한없이 홈디렉토리를 벗어날 수 있다.
즉, 반대로 작용한다.

standalone으로 FTP서버가 동작중이면 재실행 필요. standalone에 대해서는 6)번에서.

4) root로 접속할 수는 없나?

 가능하면 root 접속은 허용하지 않기를 바란다.
 /etc/ftpusers 파일에서 root를 빼면 접속이 가능하다.

5) ID/비밀번호가 정확히 맞는데 로긴할 때 자꾸 530 Login incorrect. 라고 나온다.

 /etc/ftpusers (또는 vsftpd.ftpusers)에 등록된 사용자인지 확인한다.
 여기에 등록된 사용자는 로긴할 수 없다. 이럴 때 /var/log/messages에 다음과 같은 로그가 남는다.

 Aug 16 22:21:52 truefeel vsftpd: PAM-listfile: Refused user xxxxxxxx for service vsftpd

6) standalone으로 운영하고 싶다.
  (즉, apache나 sendmail처럼 xinetd 통하지 않고 운영을 원한다.)

 /etc/xinetd.d/vsftpd (vsftpd가 아닌 다른 파일명일 수 있음) 에서 disable = yes 로 변경하여
 xinetd로 서비스 하지 않도록 설정한다. xinetd 를 재실행하면 이제 xinetd를 통한 ftp 서비스는 종료된다.

 레드햇의 경우 /etc/rc.d/init.d/xinetd restart

 이제 vsftpd 데몬를 실행한다. (소스로 설치시 기본 경로는 /usr/local/sbin)

 # /usr/local/sbin/vsftpd &

7) 다른 포트(기본 21번)를 사용하고 싶다. (예를 들어 11121번 포트를 원할 때)

 * xinetd를 이용하는 경우

  /etc/service 에 'ftp2  11121/tcp' 한 줄을 추가한다.
  그리고 /etc/xinetd.d/vsftpd (vsftpd가 아닌 ftp와 같은 다른 파일명일 수 있음) 에서
  service ftp 를 service ftp2로 바꾸고, xinetd 를 재실행한다.

 * standalone으로 운영하는 경우

  /etc/vsftpd.conf 에서 listen_port=11121 을 추가하고 vsftpd 서버를 재실행한다.

 바뀐 포트로 운영중인지 확인은 netstat -atnp(리눅스) 또는 netstat -an(그 이외 유닉스)

8) 업로드 파일 크기를 제한하는 방법은 없나요? 이를테면 5MB이상의 파일은 업로드 못한다든지.

현재 1.2.1버전까지 vsftpd 자체에 설정하는 방법은 없습니다.

5. 참고할만한 문서

* vsftpd 1.2.0 설치 문서
 ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-1.2.0/INSTALL
* vsftpd.conf man page
* vsftpd에서 한글파일로그와 lastlog 로긴확인하기 (좋은진호)
 http://coffeenix.net/board_view.php?bd_code=4
* vsftpd에서 전송속도 제한 (bandwidth limit) (좋은진호)
 http://coffeenix.net/board_view.php?bd_code=21

원문 링크 : http://kltp.kldp.org/stories.php?story=03/10/09/5659809

참고자료 : 데비안에서 VSFTPD설치


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2007/12/04 17:40 2007/12/04 17:40
,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/110


블로그 이미지

Shiftkey가 살아가는 이런 저런 이야기......

- shiftkey

Notices

Archives

Authors

  1. shiftkey

Calendar

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

Site Stats

Total hits:
135406
Today:
142
Yesterday:
312