CentOS, FTP 정리
FTP Server
종류 : 알FTP, CuteFTP, gFTP, ncFTP, vsFTP, proFTP 등이 있다.
CentOS의 경우 vsFTP가 기본프로그램으로 지원되고 있다.
1. vsFTP
Cris Evans에 의해 개발된 GPL기반의 FTP서버로 매우 안정적이면서 빠른속도와
강력한 보안기능을 제공하는 프로그램이다.
2. vsFTP의 특징
홈페이지 : http://vsftpd.beasts.org
ftp://vsftpd.beasts.org/users/cevans (소스)
- 가상 유저 설정을 통하여 계정의 쉘 로그인을 방지하여 안전한 서버운영을 지원
- Standalone 또는 inetd 모드로 효율적인 데몬 관리 지원
- 효율적인 서버관리를 위한 대역폭 조절 기능 지원 ( 전송량 제한)
- 암호화된 패스워드를 통한 보안 강화 지원
- 가상 호스트 기능 지원으로 아이피마다 독립적인 FTP 운영
- TCP wrapper 통합으로 IP 접근제어 설정 가능
- ASCII 모드로 파일이 전송되는 것을 금지하여 DoS 공격 방지
- 사용자의 계정에 chroot 기능을 지원하여 상위 디렉토리로 이동 방지하여 보안 유지
3. vsFTP 설치
# yum install vsftpd
# wget -o- ftp://vsftpd.beasts.org/users/cevans/vsftpd*.tat.gz | tar xvfz - -C /tmp/ftptest
# cd /tmp/ftptest
# ./configure
# make && make install
# cp EXAMPLE/INTERNET_SITE/vsftpd.conf /etc
소스컴파일시 이파일이 생성되지 않으므로 샘플파일을 /etc/ 복사해준다.
참고] EXAMPLE/INTERNET_SITE ==> 익명연결, inetd 모드 운영
EXAMPLE/INTERNET_SITE_NOINETD ==> 익명연결, Standalone 모드 운영
EXAMPLE/VIRTUAL_USERS ==> 가상 사용자 접속
4. vsFTP 서버를 inet 모드로 설정하기
/etc/xinetd.d/vsftpd 파일을 생성한다. (단, 소스설치시에는 이 파일이 생성된다.)
# cat > /etc/xinetd.d/vsftpd
service ftp
{
socket_type = stream tcp 기반이면 stream, udp 기반이면 dgram으로 설정
wait = no no 이면 동시접속 가능, yes 이면 동시접속 불가능
user = root 서비스 프로세스의 소유자를 나타냄
server = /usr/sbin/vsftpd 서비스 프로세스의 파일 경로
nice = 10
disable = no 서비스 사용유무(no:사용, yes:불가)
}
* RPM 패키지 설치시에는 server = /usr/local/sbin/vsftpd 의 위치가 /usr/sbin/vsftpd 이므로 설정에 주의한다.
* ftp server 에서 service 할 홈디렉토리를 생성해준다.
# mkdir /var/ftp
* xinetd 데몬을 재시작하여 vsftp 서버를 활성화시킨다.
# /etc/init.d/xinetd restart
# service xinetd restart
5. vsFTP 서버를 Standalone 모드로 설정하기
vsftpd 소스디렉토리의 EXAMPLE/INTERNET_SITE_NOINETD 디렉토리에 있는 vsftpd.conf 파일을 /etc 로 복사한다.
# cp EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf /etc
* vsftpd 데몬을 백그라운드로 실행시키면 Standalone 모드로 작동한다. (4번의 inetd 모드 disable = no를 yes 값으로 변경해준다.)
# /usr/local/sbin/vsftpd &
6. 방화벽 설정
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT
# service iptables restart
7. vsFTP 동작 테스트
# telnet localhost 21
Trying 127.0.0.1........
Connected to localhost.localdomain (127.0.0.1)
Escape character is '^]'.
220 (vsFTPD 2.1.0)
위의 결과가 나오면 정상작동하는것이다.
user ftp
331 Please specify the password
pass fftp@localhost.com
230 Login successful.
user 명령으로 익명계정인 ftp를 입력해준다.
pass 명령으로 접속자의 이메일주소를 입력해준다.
성공적으로 접속이 완료되면 230 응답코드 메시지지를 보여준다'
단, 동작 테스트용으로 텔넷을 이용하여 ftp에 접속하였기 때문에 업/다운로드가 안되는것에 주의한다.
8. vsFTPD 서버의 동작 테스트
# netstat -a | grep ftp
tcp 0 0 *:ftp *.* LISTEN
ftp 서비스가 클라이언트의 접속요청에 귀를 기울이고 있다는 LISTEN 상태를 확인할 수 있다.
-----------------------------------------------------------------------------------------------------------------------------
[vsFTPD SERVER]
1. vsFTPD 서버 관련 파일
- /etc/vsftpd/vsftpd.conf vsftpd 설정파일 (소스 설치시 /etc/vsftpd.conf)
- /usr/sbin/vsftpd vsftpd 실행파일 (소스 설치시 /usr/local/sbin/vsftpd)
- /etc/pam.d/vsftpd vsftpd PAM 인증파일 (소스 설치시에는 생성되지 않으므로 파일을 생성해주어야 한다.)
- /etc/vsftpd.ftpusers 로그인 불가능한 유저 파일 (소스 설치시에는 생성되지 않으므로 파일을 생성해주어야 한다.)
- /etc/vsftpd.user_list 유저의 로그인 허용여부 결정 (소스 설치시에는 생성되지 않으므로 파일을 생성해주어야 한다.)
- /etc/xinetd.d/vsftpd xinetd 서비스 파일
2. /etc/vsftpd.conf
1) 익명 접속 설정 옵션
- anonymous_enable = yes 익명로그인허용여부
- anon_upload_enalbe = no 익명의 사용자 업로드 허용여부
- anon_mkdir_write_enable = no 쓰기 권한이 있을 시 새로운 디렉토리생성 권한 허용여부
- deny_email_enable = no /etc/vsftpd/baned-emails 파일에 존재하는 anonymous@와 같은 형태의 로그인 불허
- banned_email_file = /etc/vsftpd/baned-emails 로그인을 불허하고자 하는 이메일을 작성해준다.
- secure_email_list_enable 익명 로그인 유효한 이메일 적용여부 설정 ( 적용시 /etc/vsftpd.email_passwords 파일 참조)
- email_password_file = /etc/vsftpd.email_passwords 로그인 가능한 이메일 패스워드를 저장하고 있는 파일
- anon_other_write_enable = no 파일 업로드및 디렉토리 생성 권한 설정
- anon_world_reasable_only = yes anonymous 권한의 읽기전용 파일 다운로드 허용
- no_anon_password = no 익명 접속시 password 묻지 않고 로그인 허용
- anon_max_rate = 0 다운로드 최대 전송율 지정으로 단위는 bps
- anon_umask = 077
- anon_root = 경로 익명 접속시 사용할 홈디렉토리 설정
- ftp_username = ftp 익명 ftp에 사용될 사용자명 지정으로 기본값은 ftp 이다.
2) 실명 로그인 접속 설정 옵션
- local_enable = no /etc/passwd 파일에 명시되어 있는 계정사용 (기본값 no로 익명연결로 허용되어 있다.)
- wirte_enable = no 데이터 업로드 허용
- local_umask = 022
- dirlist_enable = yes LIST 명령의 허용여부 설정
- dirmessage_enable = no 사용자가 새로운 디렉토리로 이동하였을 경우 해당 디렉토리에 있는 메세지 파일을 보여준다.(파일명 .message)
- message_file = .message dirmessage_enable = yes 일 경우 적용되는 옵션
- download_enable = yes 다운로드 허용여부
- force_dot_files = no 점으로 시작되는 파일과 디렉토리를 출력되도록 설정
- guest_enable = no 실제 계정에는 없는 가상계정으로 로그인 허용 (가상계정_패스워드 = /etc/vsftpd_login.db) guest_username과 연동된다.
- guest_username = ftp guest_enable = yes 일 경우 사용
- text_userdb_names = no 디렉토리및 파일 목록에서 사용자와 그룹의 ID가 숫자 대신에 텍스트 이름으로 보여지도록 설정 (보안상 활성화금지)
- userlist_enable = no userlist_file 명시된 계정들로만 로그인 허용
- userlist_deny = /etc/vsftpd.user_list userlist_enable 의 옵션과는 반대로 접속 거부할 계정 명시
- userlist_file = /etc/vsftpd/user_list userlist_enable = yes 일 경우 로그인 가능한 유저 목록을 명시
- file_open_mode = 0666 파일 업로드시 퍼미션 지정
- listen = no standalone 동작 설정
- listen_port = 21
- user_config_dir = /etc/vsftpd_user_conf 가상유저마다 각기 다른 vsftpd.conf 설정을 적용한다.
- virtual_use_local_privs = no 가상사용자 권한설정
- deny_file 업/다운로드를 금지할 파일형태를 지정한다. (예: deny_file={*.exe,*.pdf,*.mp3})
- hide_file 숨김디렉토리/파일 지정한다. (예: hide_file={*.exe,*.conf,*.mpeg})
단, 파일 위치를 알고있다면 직접 다운로드할 수 있다.
3) 접속제어 설정 옵션
- one_process_model = no 익명 접속자에게 하나의 프로세스가 작동되도록 한다.
- max_clients = 100 vsftpd 서버에 접속할 수 있는 최대 클라이언트수 지정
- max_per_ip = 0 호스트로 접속할 때 최대 접속수 지정 (0값은 무제한을 의미)
- local_max_rate = 0 파일 전송 최대 속도를 제한하는 옵션
- idle_session_timeout = 300 세션종료 설정 기본값 300초
- ftpd_banner = Welcome to FTP server
- tcp_wrappers /etc/allow 와 /etc/deny 파일에서 vsftpd 서버에 접근할 수 있는 IP 지정
- accept_timeout = 60 수동모드에서 서버에 접속할때까지의 시간 설정
4) 보안 관련 설정 옵션
- chroot_local_user = no 로컬경로에 대한 chroot를 적용할 것인지에 대한 설정
- chroot_list_enable = no 사용자가 로그인시 chroot를 적용할 것인지에 대한 설정
- chroot_list_file = /etc/vsftpd/chroot-list chroot를 적용할 사용자계정을 설정
- chown_uploads = no 익명으로 업로드된 파일에 대해서 지정된 사용자의 소유권으로 설정
- chown_username = root chown_uploads 에 대한 사용자 지정
- nopriv_user = nobody 서버를 일반권한으로 작동
- async_abor_enable = no 파일전송시 취소하였을 경우 취소되지 않는 경우 해결하는데 사용하지만 보안상 no로 설정한다.
- ascii_download_enable/ ascii_upload_enable = no 파일전송을 ascii 모드로 작동할지 설정
- ls_recurse_enable = no ls -R 명령 사용여부 설정 (DoS공격의 취약성으로 사용에 주의한다.)
- hide_ids = no 디렉토리 목록에서 uid와 gid를 보여주지 않고 모두 ftp로 표시하도록 한다.
- chmod_enable = yes 실명 접속에서만 사용가능한 명령
- pam_service_name = ftp PAM을 이용하여 사용자 인증을 할 때 인증파일을 지정하는 옵션
- check_shell = yes 사용자 로그인시 /etc/shell 파일에서 체크할지 설정
참고]
아스키모드 : html, htm, txt, cgi, pl, php, phtml, php3, sql, c, ph, py 등등
바이너리모드 : gif, jpg, swf, png, exe, asf, wmv, zip, rar, gzip, tar.gz 등등
아스키모드는 파일을 열었을때 번역이 되지않은것(판독이 가능한것)
바이너리는 아스키모드와 반대로 번역이 된것 (소스판독 불가능)
html, htm, php 등등 일반적인 웹페이지 제작에 쓰이는 파일은 아스키모드, 바이너리 모드 모두 적용 가능하다.
그러나 cgi 와 같은 파일은 반드시 아스키모드를 사용해야 한다.
아스키란? (ASCII code)
미국에서 제정된 데이터처리 및 통신시스템 상호간의 정보 교환용 7bit표준 코드 ASCⅡ라고도 하는데,
이는 American Standard Codefor Information interchange(미국정보교환용표준코도)의 약칭이다.
1963년 미국표준협회(ASA)에 의해 제정되어 미국의 정보교환용 표준코드가 되었다.
지금 ASCⅡ코드는 미니컴퓨터·퍼스널컴퓨터 등 소형 컴퓨터를 중심으로 세계 각국에 보급되어 있으며,
미국뿐만 아니라 국제적으로도 널리 사용되고 있다.
이 때문에 1967년 국제표준화기구(ISO)가 정보처리용 및 정보교환용 부호의 통일을 위해 제정하여 권장하고 있다.
ASCⅡ코드용 키보드도 널리 활용되고 있으며, 이것으로 96개의 대영문자·소영문자·숫자·특수문자
(연산자·등호·부등호·괄호·문장부호 등 영문자·숫자·간격문자 이외의 도형문자)와,
32개의 제어문자(서식 변경, 전송 데이터 개시·종료 등의 제어에 이용되는 특수 기능 문자)를
포함하는 ASCⅡ코드 128개 문자를 입력시킬 수 있다.
ASCⅡ코드는 7bit로 구성된 2진코드로 2128개의 서로 다른 문자를 표현할 수 있는데, 코드의 비트 번호는 오른쪽에서부터 부여한다.
현재 ASCⅡ코드는 대부분의 컴퓨터에서 사용되고 있으며, 특히 데이터통신에서 널리 이용되고 있다.
대표적인 예는 txt파일이다. cgi에서는 확장자가 cgi, pl등의 파일은 거의 모두가 아스키로 되어 있으며 전송시에 아스키(ASCII) 모드를 지정하여야 한다.
바이너리란? (BINARY code)
컴퓨터가 읽을 수 있는 형태로 된 데이터 또는 프로그램 명령이 들어 있는 형태로 된 것을 말한다.
컴퓨터가 직접 읽을 수 있는 것은 "0"과 "1"로된 코드이다.
따라서 도스의 type 명령어나 워드프로세서 프로그램으로는 이진 파일의 내용을 볼 수 없다.
이 파일은 컴파일이라는 과정을 거쳐 만들어 지는데, 대표적인 예는 gif파일, jpg파일, 기타 컴파일된 실행파일 (XXX.dll XXX.exe 등)이 있다.
5) 데이터 연결 관련 설정
- pasv_enable = yes 수동데이터 연결모드로 지원할지 설정
- pasv_promiscuous = yes 수동보안체크 기능을 off한다.
- pasv_max_port / pasv_min_port 수동모드 포트 50000 ~ 60000 포트지정 (기본값은 0)
- ftp_data_port = 20
- data_connection_timeout = 300
- connect_from_port_20 = no
- port_enable = yes
- connect_timeout = 60
6) 로그 관련 설정 옵션
- xferlog_enable = no 파일 송/수신 결과를 xferlog_file 옵션으로 지정된 파일에 기록한다. (/var/log/vsftpd.log)
- xferlog_file = /var/log/vsftpd.log
- xferlog_std_format = no 파일 송/수신 로그를 xferlog로 저장할것인지 설정
- log_tp_protocol = no ftp 요청 및 응답에 관련된 메세지를 기록할것인지의 설정으로 오류분석에 유용하다.
- syslog_enable = no /var/log/vsftpd.log에 저장되지않고 /var/log/syslog에 저장되도록한다.
- dual_log_enable = no /var/log/xferlog 파일과 /var/log/vsftpd.log 파일에 파일전송 기록이 저장된다.
- vsftpd_log_file = /var/log/vsftpd.log vsftpd 데몬에 의한 로그메세지를 기록할 파일명을 지정
------------------------------------------------------------------------------------------------------------------
1. /etc/vsftpd/ftpusers
ftp서버에 로그인할 수 없는 사용자 목록을 담고 있는 파일이다. 소스설치시에는 생성되지 않는다.
/etc/pam.d 디렉토리에 있는 vsftpd PAM 모듈에 의해서 이 파일에 작성된 사용자들의 로그인을 거부한다.
* /etc/vsftpd/ftpusers : 사용자는 비번을 맞게 입력하여도 거부함
* /etc/vsftpd/user_list : 사용자의 비번조차 묻지않고 거부함
2. /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfiel.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
auth include system-auth
auth inclued pam_loginuid.so
두번째 라인 설정값은 /etc/vsftpd/ftpusers 파일에 있는 계정들에 대해서는 로그인을 거부하는 설정이다.
로그인을 허가하려면 sense=deny 값을 sense=allow 값으로 변경해준다.
3. /etc/vsftpd/user_list
vsftpd.conf 파일에서 userlist_deny 값이 no 로 설정되어 있으면, 이 파일안에 있는 사용자들은 로그인을 허용한다.
userlist_deny 값이 yes 로 설정되어 있으면 로그인을 거부한다.
4. /etc/xinetd.d/vsftpd
vsftpd 데몬을 xinetd 데몬에 의해서 작동되도록 하고자 할 때 사용한다. disable = no 값으로 설정되어야 한다.
5. 익명 FTP Server
익명접속시 ftp 또는 anonymous의 기본경로는 /etc/passwd 파일에서 지정된 ftp 계정 경로로 결정된다.
대부분의 /etc/passwd에서의 ftp 계정은 /var/ftp 가 기본경로로 지정되어 있음에 유의한다.
기본 홈디렉토리 : /var/ftp
데몬 활성 : /etc/init.d/xinetd restart
-------------------------------------------------------------------------------------------------------------------
[vsftpd.conf 실습]
효율적인 Anonymous FTP 서버 구성
기본 홈디렉토리 : /var/ftp/pub
데몬 활성 : /usr/local/sbin/vsftpd & ( Standalone Type)
1. 홈디렉토리 생성
# mkdir /var/ftp/pub
2. vi /etc/vsftpd.conf 설정
-------------------------------- 익명 서버 설정 옵션 --------------------------------------------
anonymous_enalbe=YES // 익명 접속 허용
local_enable=NO // 로컬 사용자 접속 불허
write_enable=NO // 보안을 위해서 쓰기 금지
anon_umask=077 // 익명 사용자의 파일생성 umask값 지정
anon_mkdir_write_enable=NO // 디렉토리 생성금지
anon_upload_enable=NO // 업로드 금지
anon_other_write_enable=NO // 업로드 및 경로생성외 삭제, 이름변경 등 다른 쓰기 금지
anon_world_readable_only=YES // ftp 계정 소유의 읽기 모드로 된 파일만 다운로드 가능
-------------------------------- 접속 제한 설정 -------------------------------------------------
max_clients=50 // 접속 최대 인원 설정
max_per_ip=2 // 한 호스트 2회 이상 접속 불허
one_process_mmodel=YES // 1회 접속마다 하나씩 프로세스 작동
idle_sessionn_timeout=120 // 2분동안 FTP 명령이 없으면 접속 종료
data_connection_timeout=300 // 5분동안 데이터 전송이 없으면 접속 종료
connect_timeout=60 // 1분동안 접속이 이루어지지 않으면 접속 종료
anon_max_rate=100000 // 최대 전송률을 100kbyte로 제한
ftpd_banneer=Welcome to VSFTPD //서버 접속시 보여줄 메시지 설정
-------------------------------- 보안 설정 -------------------------------------------------------
hide_ids=YES // 다른 계정의 소유권을 ftp로 모두 가장한다.
no_anon_password=NO // 익명 사용자의 패스워드를 물어본다.
ls_recurse_enable=NO // ls -R 명령 실행금지
connect_from_port_20=YES // 데이터 연결을 20번 포트로 이용한다.
xferlog_file=/var/log/vsftpd.log // 파일 전송 로그 파일 명시
ascii_download_enable=NO // 아스키형태로 다운로드 금지
async_abor_enable=NO // async ABOR 명령 금지
-------------------------------- Standalone Mode 설정 ---------------------------------------------
listen=YES // vsftpd 데몬을 독립모드로 띄운다.
listen_port=21 // 클라이언트의 접속 요청에 경청할 ftp 포트 명시
===================================================================================================
3. Standalone Mode로 활성화
# /usr/local/sbin/vsftpd &
4. 접속 테스트를 위해 /var/ftp/pub 디렉토리에 test 파일을 생성해놓는다.
# cp /etc/issue /var/ftp/pub
# chmod 644 /var/ftp/pub/issue
# echo"Anonymous Testing" > test
5. 클라이언트에서 접속하여 vsftpd 서버에 anonymous계정으로 접속해본다.
파일 다운로드와 업로드를 확인한다.
* /var/ftp/pub 디렉토리로 이동하여 파일구조를 살펴보면 issue파일의 소유권이
root가 아닌 ftp로 변경된것을 확인할 수 있다.
=======================================================================================================
1. /etc/passwd 파일에 등록된 계정으로 실명 접속하기
-------------------------------- 실명 서버 설정 옵션 --------------------------------------------
anonymous_enalbe=NO // 익명 접속 금지
local_enable=YES // 로컬 사용자 접속 허용
write_enable=YES // 보안을 위해서 쓰기 허용
local_umask=022 // 로컬 사용자의 파일생성 umask값 지정
-------------------------------- 접속 제한 설정 -------------------------------------------------
max_clients=50 // 접속 최대 인원 설정
max_per_ip=2 // 한 호스트 2회 이상 접속 불허
one_process_mmodel=NO // 사용 안 함
idle_sessionn_timeout=120 // 2분동안 FTP 명령이 없으면 접속 종료
data_connection_timeout=300 // 5분동안 데이터 전송이 없으면 접속 종료
connect_timeout=60 // 1분동안 접속이 이루어지지 않으면 접속 종료
anon_max_rate=0 // 최대 전송률을 제한없음
ftpd_banneer=Welcome to VSFTPD //서버 접속시 보여줄 메시지 설정
-------------------------------- 보안 설정 -------------------------------------------------------
chroot_local_user=YES // 로컬사용자의 홈 디렉토리에 chroot 적용
hide_ids=NO // 다른 계정의 소유권을 ftp로 모두 가장하지 않는다.
ls_recurse_enable=NO // ls -R 명령 실행금지
connect_from_port_20=YES // 데이터 연결을 20번 포트로 이용한다.
xferlog_enable=YES // 파일전송 로그를 기록함
xferlog_file=/var/log/vsftpd.log // 파일 전송 로그 파일 명시
ascii_download_enable=NO // 아스키형태로 다운로드 금지
async_abor_enable=NO // async ABOR 명령 금지
-------------------------------- Standalone Mode 설정 ---------------------------------------------
listen=YES // vsftpd 데몬을 독립모드로 띄운다.
listen_port=21 // 클라이언트의 접속 요청에 경청할 ftp 포트 명시
pam_service_name=vsftpd // PAM 인증 모듈 파일 명시
===================================================================================================
2. /etc/pam.d/vsftpd 파일이 있는지 확인하고, 파일이 존재하지 않는다면 생성해 주어야 한다.
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
account include system-auth
session include system-auth
session include pam_lobinuid.so
3. Standalone Mode로 실행한다.
# /usr/local/sbin/vsftpd &
4. TEST
# telnet localhost 21
user: ftpuser
pass: ftpuser
==============================================================================================
[ 실명과 익명 동시 로그인 설정]
-------------------------------- 실명/익명 동시 접속 설정 옵션 --------------------------------------------
anonymous_enalbe=YES // 익명 접속 허용
local_enable=YES // 로컬 사용자 접속 불허
write_enable=YES // 보안을 위해서 쓰기 금지
local_umask=022
anon_umask=077 // 익명 사용자의 파일생성 umask값 지정
anon_mkdir_write_enable=YES // 디렉토리 생성금지
anon_upload_enable=NO // 업로드 금지
anon_other_write_enable=NO // 업로드 및 경로생성외 삭제, 이름변경 등 다른 쓰기 금지
anon_world_readable_only=YES // ftp 계정 소유의 읽기 모드로 된 파일만 다운로드 가능
-------------------------------- 접속 제한 설정 -------------------------------------------------
max_clients=50 // 접속 최대 인원 설정
max_per_ip=2 // 한 호스트 2회 이상 접속 불허
one_process_mmodel=NO // 1회 접속마다 하나씩 프로세스 작동
idle_sessionn_timeout=120 // 2분동안 FTP 명령이 없으면 접속 종료
data_connection_timeout=300 // 5분동안 데이터 전송이 없으면 접속 종료
connect_timeout=60 // 1분동안 접속이 이루어지지 않으면 접속 종료
local_max_rate=0 // 최대 전송률을 100kbyte로 제한
ftpd_banneer=Welcome to VSFTPD //서버 접속시 보여줄 메시지 설정
-------------------------------- 보안 설정 -------------------------------------------------------
chroot_local_user=YES //로컬사용자의 홈디렉토에 chroot 적용.
hide_ids=NO // 다른 계정의 소유권을 ftp로 모두 가장한다.
ls_recurse_enable=NO // ls -R 명령 실행금지
connect_from_port_20=YES // 데이터 연결을 20번 포트로 이용한다.
xferlog_enable=YES // 파일전송 로그를 로그 파일에 기록한다.
xferlog_file=/var/log/vsftpd.log // 파일 전송 로그 파일 명시
ascii_download_enable=NO // 아스키형태로 다운로드 금지
async_abor_enable=NO // async ABOR 명령 금지
-------------------------------- Standalone Mode 설정 ---------------------------------------------
listen=YES // vsftpd 데몬을 독립모드로 띄운다.
listen_port=21 // 클라이언트의 접속 요청에 경청할 ftp 포트 명시
pam_service_name=vsftpd // PAM 인증 모듈 파일 명시
===================================================================================================
[출처] CentOS. FTP 총정리.|작성자 Kei