정리하기 귀찮아서 일단 붙여 놓음
anonymous_enable=NO ( 기본값 : YES )
익명 사용자의 접속을 허용할 것인지를 결정합니다.
listen=YES ( 기본값 : NO )
background=YES ( 기본값 : NO )
listen_port=21 ( 기본값 : 21 )
listen_ipv6=NO ( 기본값 : NO )
기본적으로 vsftpd는 inetd 또는 xinetd 또는 Solaris10의 서비스로 등록하여 사용이 가능하도록 설정되어있습니다. 위 옵션대로 설정하게 되면 standalone(proftpd 의 standalone 동작과 동일) 모드로 동작합니다. Solaris10에서는 위에서 서비스로 등록해 놓았으므로 모두 주석처리합니다. 일반적으로 FTP 접속이 그리 많지가 않는 경우에는 기본 동작모드(inetd 등)가 유리하며 FTP 접속자가 많은 경우에는 standalone 모드가 유리하다고 합니다.
listen_address=none ( 기본값 : none )
listen_address6=none ( 기본값 : none )
standalone 모드로 동작시 대기할 IP를 지정합니다.(멀티 IP 서버를 이용할때) address6는 IPV6 상황에서 사용합니다.
pasv_address=none ( 기본값 : none )
Use this option to override the IP address that vsftpd will advertise in response to the PASV command. Provide a numeric IP address, unless pasv_addr_resolve is enabled, in which case you can provide a hostname which will be DNS resolved for you at startup. (해석불가)
nopriv_user=nobody ( 기본값 : nobody )
vsftpd가 구동할 유저명을 지정합니다.
max_clients=50 ( 기본값 : 0 )
최대 접속자수를 결정합니다. 0으로 두면 무제한입니다.
max_per_ip=5 ( 기본값 : 0 )
하나의 IP에서 동시에 접속할 수 있는 수를 결정합니다.
local_max_rate=0 ( 기본값 : 0 )
로컬 사용자의 접속시 업/다운로드 속도 제한을 지정합니다. 단위는 초당 Bytes 입니다.
trans_chunk_size=0 ( 기본값 : 0 )
한번에 전송할 크기를 지정합니다. 단 일정단위로 묶어서 전송하게 되는데 이 항목은 전송량 조절 옵션인 rate 관련 옵션들과 연관성이 있습니다. 되도록이면 이 옵션은 수정하지 않는 것이 좋다고 제작자는 밝히고 있군요. 다만 8192로 하면 부드럽게 대역폭 제한이 가능하다고 하는데 당최 무슨 뜻인지;;;;;;
use_localtime=YES ( 기본값 : NO )
파일의 시간을 보여줄 때 시스템의 Local time에 맞춰서 보여줍니다. 기본적으로 vsftpd는 GMT를 따르고 있습니다. 우리나라의 시간은 GMT + 9 입니다.
setproctitle_enable=YES ( 기본값 : NO )
FTP의 현재 상황을 PS 로 볼 수 있도록 해줍니다. 즉 현재 세션의 상황을 ps 명령으로 나오는 값을 조작하여 접속자 등을 파악할 수 있습니다.
user_config_dir=none ( 기본값 : none )
특정 사용자의 접속 환경을 vsftpd.conf 가 아닌 파일로 저장시켜 두고 적용시킬 수 있게 해줍니다. 여기서 지정하는 값은 디렉토리를 의미합니다. 예를 들어 /etc/vsftpd_user/chris 라는 파일을 생성한 후 파일속에 vsftpd.conf 와 같은 각종 지시어를 이용하여 환경을 구축해 놨을 때 chris라는 사용자가 접속하면 vsftpd.conf 가 아닌 /etc/vsftpd_user/chris 라는 파일의 환경에 적용을 받습니다. 물론 /etc/vsftpd_user/chirs 안에 없는 옵션은 vsftpd.conf 옵션에 적용을 받습니다. 다만 /etc/vsftpd_user/chris 파일내에 유저의 환경과는 관계가 없는 옵션들(banner_file, max_per_ip, max_clients, xferlog_file 등)은 무시됩니다.
local_enable=YES ( 기본값 : NO )
시스템에 등록된 유저의 접속을 허용합니다.
userlist_enable=NO ( 기본값 : NO )
유저 목록을 담고 있는 파일속의 내용에 있는 사용자만 접속을 허용합니다. 이 옵션은 userlist_deny 옵션이 비활성화된 상태에서만 효과가 있습니다.(userlist_deny 옵션과 반대역활입니다.)
userlist_deny=YES ( 기본값 : YES )
유저 목록을 담고 있는 파일속의 내용에 있는 사용자만 접속을 불허합니다. userlist_enable 옵션과 반대 역활을 합니다. 특정 유저의 접속을 허용하지 않고자 할때 주로 사용합니다.
userlist_file=/etc/vsftpd.user_list ( 기본값 : /etc/vsftpd.user_list )
userlist_enable 옵션과 userlist_deny 옵션에서 사용되는 유저 목록을 담고 있는 파일입니다.
text_userdb_names=YES ( 기본값 : NO )
디렉토리 목록을 보여줄 때 유저명과 그룹명을 문자로 표시할 것인지를 결정합니다. 성능상과 보안문제상 NO로 되어 있는 듯 하며 개인적으로는 YES를 좋아라 합니다.
pam_service_name=vsftpd ( 기본값 : ftp )
Solaris10과는 관계없는 옵션이며, pam 사용자 인증을 할때 사용할 인증파일을 지정합니다.
tcp_wrappers=YES ( 기본값 : NO )
TCP wrappers에 의해서 FTP 접속을 제어할 것인지를 설정합니다. 미리 tcp_wrappers가 설치되어 있어야 하며, sunfreeware 에서는 현재날짜 기준으로(2008. 08. 04) 7.6 버젼이 공개되어 있으므로 vsftpd 설치전에 tcp_wrappers를 설치하시길 바랍니다. 참고로, solaris10 을 기본으로 설치할 경우 tcp_wrappers가 설치되어 있습니다만, 버젼이..... 전 7.6 버젼을 새로 설치하였습니다.
ssl_enable=NO ( 기본값 : NO )
ssl 접속을 허용할 것인지를 결정합니다. 이 옵션을 사용할려면 컴파일 하기전에 builddefs.h 파일에서 SSL 옵션을 활성화시켜야 하며 관련 라이브러리 및 데몬들도 설치가 되어 있어야 합니다. 솔라리스에서는 SSL 연결이 좀 까탈스럽더군요. OTL;;;;;;
ssl_tlsv1=NO ( 기본값 : YES )
ssl_sslv2=NO ( 기본값 : NO )
ssl_sslv3=NO ( 기본값 : NO )
ssl 접속시 어떤 프로토콜을 사용할 것인지를 결정합니다. 각각 TLS, V2, V3 를 의미하며 ssl_enable 옵션이 활성화되어 있을 때 기본 프로토콜은 SSL v1 프로토콜을 이용하여 접속합니다.
dsa_cert_file=none ( 기본값 : none - RSA certificate suffices 를 사용 )
SSL의 암호화 접속시 사용할 DSA 인증서의 위치를 지정합니다.
dsa_private_key_file=none ( 기본값 : none )
SSL의 암호화 접속시 사용된 DSA 개인키 파일의 위치를 지정합니다.
rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem ( 기본값 : none )
SSL 접속시 RSA 인증서를 지정합니다.
rsa_private_key_file=none ( 기본값 : none )
SSL 접속시 RSA 인증에 사용할 RSA 개인키 값 파일을 지정합니다.
force_local_data_ssl=YES ( 기본값 : YES )
ssl_enable 옵션이 활성화되어 있을때만 활성화되는 옵션이며, 로컬 사용자가 데이터를 전송시 SSL을 사용하도록 강제적으로 규정합니다.
force_local_logins_ssl=YES ( 기본값 : YES )
ssl_enable 옵션이 활성화되어 있을때만 활성화되는 옵션이며, 로컬 사용자가 로그인시 강제적으로 SSL을 이용하도록 합니다.
connect_timeout=60 ( 기본값 : 60초 )
Port 모드로 접속시 사용자의 접속 허용 시간을 설정합니다. 지정된 시간내에 접속이 완료되지 않으면 접속이 끊어집니다.
accept_timeout=60 ( 기본값 : 60초)
Pasv 모드로 접속시 사용자의 접속 허용 시간을 설정합니다. connect_timeout 옵션과 동일하게 동작합니다.
data_connection_timeout=300 ( 기본값 : 300초)
데이타를 전송한 후 (업/다운) 지정된 시간동안 아무런 동작이 없을 경우 접속을 끊습니다.
idle_session_timeout=300 ( 기본값 : 300초)
접속 완료 후 지정된 시간동안 아무런 동작을 하지 않으면 접속을 끊습니다.
banner_file=/etc/vsftpd.banner_file ( 기본값 : none )
사용자가 접속했을 때 보여줄 환영 메세지를 가진 파일을 지정합니다.
ftpd_banner=Welcome to FTP Service ( 기본값 : none - vsftpd의 기본 메세지가 보입니다.)
사용자가 접속했을 때 보여줄 안내 메세지를 지정합니다.
dirmessage_enable=NO ( 기본값 : NO )
디렉토리로 접속할때 해당 디렉토리에 message_file 옵션에서 지정한 파일의 내용을 보여줄 것인지를 결정합니다.
message_file=.message ( 기본값 : .message )
dirmessage_enable 옵션이 YES로 되어있다면 읽어서 보여줄 파일명을 지정합니다.
port_enable=YES ( 기본값 : YES )
FTP의 Port 모드를 활성화홥니다. 일명 Active 모드라고도 합니다.
connect_from_port_20=YES ( 기본값 : NO )
Port 모드로 동작시 데이터 전송의 기본 포트인 20번 포트의 사용 여부를 결정합니다.
ftp_data_port=20 ( 기본값 : 20 )
Port 모드로 동작시 데이터 전송에 사용할 포트 번호를 지정합니다. 이 옵션은 connect_from_port_20 옵션이 활성화되어 있어야 정상적으로 작동합니다.
port_promiscuous=NO ( 기본값 : NO )
Port 모드에서의 보안 체크 기능을 해제합니다. FXP(서버대 서버전송) 기능 사용시 활성화시켜줍니다.
pasv_enable=YES ( 기본값 : YES )
Pasv 모드로 동작할 것인지를 결정합니다.
pasv_promiscuous=NO ( 기본값 : NO )
동일한 IP에서 접속이 이루어질때 PASV 보안체크를 해제시켜 줍니다? 영어가 딸려서 해석이 꼬이네요. FXP (서버 대 서버 전송) 기능을 사용할 때나 SSH를 이용한 터널링 기능을 이용할 때 활성화시켜주는 옵션입니다.
pasv_min_port=0 ( 기본값 : 0 )
pasv_max_port=0 ( 기본값 : 0 )
Pasv 모드로 접속시 할당할 최저(min) 포트번호와 최고(max) 포트번호를 지정합니다. 기본값인 0을 설정하게 되면 1024 이상 무작위로 할당합니다. 1024 이하의 포트번호는 일반적으로 well kown port 번호라고 하여 부르며 root 권한만 해당 포트를 제어할 수 있도록 되어있습니다. ( /etc/services 파일 참고 )
ascii_download_enable=NO ( 기본값 : NO )
ascii_upload_enable=NO ( 기본값 : NO )
ASCII 모드로 전송을 허용할 것인지를 결정합니다. 일반적으로 UNIX 모드의 텍스트 파일과 PC(or Windows) 모드의 텍스트 파일은 LF/CR 처리부분에서 다르므로 이 옵션을 활성화(YES)시켜주면 전송시 자동으로 변환이 됩니다. 하지만 요즘 텍스트 에디터들은 자동으로 변환해주므로 크게 문제되지 않는다면 보안문제상 기본값으로 설정된 NO로 해주심을 권장합니다.
local_umask=022 ( 기본값 : 077 )
파일 생성 umask 값을 지정합니다. 이 값을 보면 vsftpd가 보안에 까칠하다는게 확실히 알 수 있겠군요. 기본적으로 파일 생성시 할당되는 퍼미션은 최대퍼미션 - umask 의 값을 가집니다. 최대퍼미션은 디렉토리의 경우 0777, 파일인 경우 0666 으로 결정됩니다. 그러므로 디렉토리의 경우 vsftpd의 기본 umask를 적용하면 0700 ( 0777 - 077 = 0700 ) 으로 설정됩니다. 즉 올린 사람외에는 손대지마!!! 라는 것이 되죠. 다만 이렇게 된다면 웹서버를 운영할 경우 웹상에서 접근을 못하게 되는 사태가 벌어집니다. 일반적인 umask 옵션인 022 로 정해줍시다.
file_open_mode=0644 ( 기본값 : 0666 )
업로드되는 파일의 기본 퍼미션을 지정합니다. 이 옵션은 반드시 local_umask 옵션보다 뒤에서 지정되어야 하며, 기본값을 주게 되면 업로드된 파일이 아무나 읽기쓰기로 되어버리기 떄문에 가능하면 0644 로 설정하는 것이 좋습니다.
dirlist_enable=YES ( 기본값 : YES )
디렉토리 목록을 볼 수 있게 합니다. NO로 할 경우 목록을 볼 수가 없게 됩니다.
force_dot_files=NO ( 기본값 : NO )
.(dot)로 시작하는 파일들의 표시 여부를 결정합니다. 보안관계상 기본 값은 NO로 되어있습니다.
tilde_user_enable=NO ( 기본값 : NO )
일반적으로 사용하는 ~crhis/pics 와 같은 지정을 해석할 수 있도록 합니다. 사용자 계정명앞에 ~(틸드)가 오게 되면 해당 사용자 계정의 홈디렉토리를 의미하게 되는데 이것을 해석할 수 있도록 해주는 것입니다. 다만 이 옵션은 /etc/passwd 파일을 찾을 수 있을 경우에 정상적으로 작동합니다.
hide_ids=NO ( 기본값 : NO )
이 옵션이 활성화되면 모든 파일의 사용자는 FTP로 표시됩니다. 보안에 도움이 될 수도 있는 옵션입니다.
write_enable=YES ( 기본값 : NO )
사용자가 기록을 할 수 있도록 합니다. (STOR, DELE, RNFR, RNTO, MKD, RMD, APE, SITE 등의 명령이 실행가능해 집니다.)
download_enable=YES ( 기본값 : YES )
파일을 다운로드할 수 있게 합니다.
chmod_enable=YES ( 기본값 : YES )
로컬 사용자가 퍼미션을 변경할 수 있도록 합니다. 익명 접속 사용자는 불가능합니다.
use_sendfile=YES ( 기본값 : YES )
서버 운영체제의플랫폼에서 sendfile() 시스템 호출을 허용합니다. 내부 세팅인것 같은데 그냥 YES~~~
cmds_allowed=none ( 기본값 : none )
사용자에게 허용할 명령어를 지정합니다. 이 명령은 지정한 명령만 사용할 수 있도록 만드는 것입니다. 적용하지 않으면 모든 명령을 사용할 수 있으며 지정하게 되면 지정한 명령어만 사용가능합니다. 단 로그인 전의 명령어나 로그아웃 등의 명령어는 해당되지 않습니다. ( USER, PASS, QUIT 등 )
deny_file=none ( 기본값 : none )
업로드를 거부할 파일명을 지정합니다. { 와 } 으로 묶으며, 와일드 카드 ( ? , * )를 사용할 수 있습니다. 각각의 파일은 ,(comma)로 구분하도록 되어있습니다. 예) deny_file={*.mp3,*.mov,.private}
hide_file=none ( 기본값 : none )
숨길 파일명을 지정합니다. 즉 존재는 하되 파일목록에서는 보이지 않습니다. deny_file 옵션과 동일한 형식으로 지정가능합니다.
async_abor_enable=NO ( 기본값 : NO )
특정 클라이언트가 파일 전송중 취소했을 때 정상적으로 취소되지 않는 경우가 발생하는데 이때 이 옵션을 enable 하게 되면 이런 증상을 막을 수 있습니다. 제작자는 오직 ill adviced FTP clients가 이런 증상을 발생시킨다고 하며 보안관계상 NO를 권장하고 있습니다.
ls_recurse_enable=NO ( 기본값 : NO )
ls 명령의 옵션중 하위 디렉토리의 구조까지 모두 읽어올 수 있는 -R 옵션 사용 여부를 결정합니다. 서버에 대한 부하가 크므로 기본적으로 NO 로 설정되어 있습니다.
chroot_local_user=YES ( 기본값 : NO )
로컬 사용자가 접속하면 자신의 상위 디렉토리로 접근할 수 없도록 설정합니다.
passwd_chroot_enable=YES ( 기본값 : NO )
If enabled, along with chroot_local_user, then a chroot() jail location may be specified on a per-user basis. Each user's jail is derived from their home directory string in /etc/passwd. The occurrence of /./ in the home directory string denotes that the jail is at that particular location in the path. (해석불가 -.-;;)
chroot_list_enable=NO ( 기본값 : NO )
이 옵션을 활성화하면 명시된 사용자만이 자신의 홈상위 디렉토리에 접근할 수 없게 되어 있습니다. 단 chroot_local_user 옵션이 비활성화되어 있어야 작동합니다.
chroot_list_file=/etc/vsftpd.chroot_list ( 기본값 : /etc/vsftpd.chroot_list )
chroot_list_enable 옵션이 활성화되어 있다면 chroot() 기능을 적용시킬 사용자 목록을 가지게 되며, chroot_local_user 옵션이 활성화되어 있다면 chroot() 기능에서 제외할 사용자 목록을 가지게 됩니다.
secure_chroot_dir=/usr/share/empty ( 기본값 : /usr/share/empty )
secure chroot()에서 사용될 디렉토리를 지정하며 반드시 비어있어야 합니다. 또한 ftp user에 대한 쓰기 권한이 없어야 합니다. (이게 왜 있는건지......) 참고로, 저 디렉토리는 반드시 생성되어 있어야 하며 조건에 맞지 않게 되어 있다면 vsftpd 실행시 에러가 발생합니다. 그냥 /usr/share/empty 디렉토리를 만들고 root:root 로 권한을 주고 755로 퍼미션 주시면 됩니다.
check_shell=YES ( 기본값 : YES )
이 옵션은 non-PAM 시스템에서만 정상적으로 동작하며, 접속자의 Shell 체크 여부를 결정합니다.
delay_failed_logins=5 ( 기본값 : 1 초 )
로그인이 실패하고 난 뒤 다음 로그인 시도까지의 딜레이 시간을 지정합니다.
delay_successful_logins=0 ( 기본값 : 0 초 )
로그인이 성공하고 난 뒤 다음 과정으로 넘어가기 전까지의 딜레이 시간을 지정합니다.
max_login_fails=3 ( 기본값 : 3 회)
지정한 횟수만큼 연속적으로 로그인을 실패하면 연결을 끊어버립니다.
local_root=none ( 기본값 : none )
로컬 사용자(익명 사용자가 아닌) 로그인을 하게 되면 해당 디렉토리로 이동시킵니다. 로그인을 실패한 경우에는 아무런 동작을 하지 않습니다.
lock_upload_files=NO ( 기본값 : NO )
이 옵션을 활성화하면 모든 업로드되는 파일들은 기록 lock이 설정됩니다. 단 모든 다운로드 파일들은 공유 읽기 lock이 설정되는데 이 옵션을 활성화화면 악의적인 목적으로 업로드를 방해할 수 있으므로 주의해서 사용해야 합니다.
mdtm_write=YES ( 기본값 : YES )
mdtm 기능을 사용할 수 있게 합니다. mdtm은 업로드되는 파일의 시간과 날짜를 변경할 수 있게 하는 기능힙니다.
pasv_addr_resolv=NO ( 기본값 : NO )
이 옵션을 사용하게 되면 IP 주소가 아닌 호스트 네임을 pasv_address에서 사용할 수 있게 합니다.
vsftpd_log_file=/var/log/vsftpd.log ( 기본값 : /var/log/vsftpd.log )
vsftpd의 로그파일을 지정합니다. 단 xferlog_enable 옵션이 활성화되고 xferlog_std_format 옵션이 비활성화되어야 동작합니다. 또는 dual_log_enable 옵션아 활성화될 경우에도 동작합니다. 주의할 점은 syslog_enable 옵션이 활성화되면 모든 로그들은 system log로 보내어지므로 vsftpd_log_file 옵션에 기록된 파일에는 로그가 기록되지 않습니다.
dual_log_enable=YES ( 기본값 : NO )
이 옵션이 활성화되면 /var/log/xferlog 와 /var/log/vsftpd.log 파일 둘다 로그 기록에 사용합니다.
syslog_enable=NO ( 기본값 : NO )
이 옵션이 활성화되면 모든 로그들은 system log(syslogd 데몬을 이용한)에 기록되며 /var/log/vsftpd.log 파일은 사용되지 않습니다.
xferlog_file=/var/log/xferlog ( 기본값 : /var/log/xferlog )
이 옵션 wu-ftpd 형식의 로그들을 기록할 파일을 지정하는 것입니다. 반드시 xferlog_enable 옵션이 활성화되어야 정상적으로 동작하며 xferlog_std_format 옵션과 연관성이 있습니다. 또는 dual_log_enable 옵션이 활성화되어도 본 옵션이 동작합니다.
xferlog_enable=YES ( 기본값 : NO )
상세한 파일의 전송상황을 로그파일에 기록할 것인지를 결정합니다. 기본값은 /var/log/vsftpd.log 에 기록하며, 이 파일의 위치는 xferlog_file 옵션에서 변경가능합니다.
xferlog_std_format=NO ( 기본값 : NO )
xferlog_enable 옵션으로 기록되는 로그 형식을 표준으로 할 것인지를 결정합니다.
log_ftp_protocol=YES ( 기본값 : NO )
아주 상세한 FTP 이용 상황을 로그에 기록할 지를 결정합니다.
no_log_lock=NO ( 기본값 : NO )
로그 파일을 기록할 때 로그 파일에 lock 을 걸 것인지를 결정합니다. 일반적으로 걸지 않아도 되지만, 솔라리스 OS에서 베리타스(Veritas) 파일 시스템을 사용할 경우 문제점이 발생할 수 있으므로 해당 OS와 파일시스템을 사용하고 있을 경우 YES로 설정하시기 바랍니다.
session_support=YES ( 기본값 : NO )
세션 기록을 wtmp 또는 utmp 에 남길것인지를 결정합니다. wtmp/utmp를 이용하게 되면 last 명령으로 접속여부를 확인할 수 있으므로 YES를 권장합니다.
one_process_model=NO ( 기본값 : NO )
하나의 접속자에 하나의 프로세스 모델을 생성하여 할당합니다. 효율면에서는 좋으나 보안면에서는 조금 떨어질 수 있다고 제작자는 밝히고 있습니다. 단 리눅스 커널이 2.4 이상일때만 권장하는 것 같군요. 솔라리스10에서 서비스로 등록을 해 놓았으므로 이 옵션과는 무관하게 접속자별로 2개씩의 프로세스가 생성됩니다.