본문 바로가기

Developement/Server

vsFtp 설정

1. vsftpd 설치 및 설정.

[vsftpd 설치하기]

: 서버에 vsftp가 설치되어 있는지를 확인 한다. 만약 설치되지 않은 경우 yum을 통해 설치한다.

  설치 여부 확인 : rpm -qa | grep vsftpd

  설치 되지 않은 경우 아래 명령어로 설치 : yum install -y vsftpd


2. 부팅시 자동으로 시작될 수 있도록 설정.

chkconfig vsftpd on

chkconfig --list vsfptd


3. vsftpd 환경 설정

[기본필수 설정]

- anonymouse_enable=NO : 익명 사용자의 접속을 제한

- local_enable=YES : 서버에 등록된 사용자의 접속을 허가

- write_enable=YES : 로컬 사용자의 저장, 삭제, 디렉토리 생성 등의 명령 수행 허가 설정. (익명사용자는 제외)

- chroot_local_user=YES : 사용자가 접속 시 자신의 home디렉토리를 "/"로 인식하고 상위 디렉토리를 접근할 수 없도록 제한.

- ls_recure_enable=NO : 사용자가 ls -R 명령어를 사용할 수 없도록 설정. 해당 명령어는 서버에 부하가 생기므로 사용하지 못하도록 설정 할것.

- userlist_enable=YES : /etc/vsftpd/ftpusers 파일에 적혀진 사용자 계정은 FTP 접속을 제한한다.


[Passive Mode 설정]

- pasv_enable=YES

- pasv_min_port=5000

- pasv_max_port=5100

- pasv_promiscuous=YES

를 vsftpd.conf 파일에 추가한다


[ipTables 방화벽 해제]

- 5000 ~ 5100 번 까지의 포트를 개방해 준다.   ipTables 의 INPUT 영역에 아래와 같이 추가해 주면 된다.

   EX) -A INPUT -p tcp -m state NEW -m tcp --dport 5000:5100 -j ACCEPT


4. 모든 설정을 저장하고, service vsftpd restart를 통해 서비스 시작


5. 사용자 계정 추가

: useradd -d [사용자 홈 디렉토리] [사용자 ID]

  EX) useradd -d /home/testerhome testerhome



[TIP] vsftp.conf의 기타 옵션들

- anonymous_enable=YES : 익명연결을 허용에 대한 부분입니다. YES는 허용 NO는 허용하지 않습니다.

- local_enable=YES : local account user들이 접속할 수 있도록 하는 부분입니다.

- write_enable=YES : FTP에 접속한 user들이 write 명령어를 사용가능/불가능 하게 하는 부분입니다.

- local_umask=022 : local account user들이 파일을 생성할 때 파일에 대란 권한을 설정하는 부분입니다.

- anon_upload_enable=YES : anonymous user들의 파읷 Upload 권한을 설정하는 부분입니다.

- anon_mkdir_write_enable=YES : anonymous user들의 디렉토리 생성 권한을 설정하는 부분입니다.

- dirmessage_enable=YES : FTP에 접속한 user가 디렉토리를 이동할 때 알림 message로 지정된 파읷을 설정하고 보여주는 부분입니다.

- xferlog_enable=YES : FTP에 접속한 user들이 upload download에 대한 기록을 log 파읷로 남길 것읶지 설정하는 부분입니다. Log는 /var/log/xferlog에 남습니다.

- connect_from_port_20=YES : Standalone mode로 FTP를 운영할 때 Date를 젂송할 포트를 사용하는 설정을 하는 부분입니다.

- chown_uploads=YES : anonymous user가 upload한 파읷의 소유권을 자동으로 변경하는 부분입니다.

- chown_username=whoever : anonymous user가 upload한 파일의 소유권을 자동으로 변경하고 그 소유권을 변경할 user를 설정하는 부분입니다,

- xferlog_file=/var/log/xferlog : log를 남길 디렉토리를 설정하는 부분입니다. 항상 log를 남기실 때는 logrotate를 이용하여 log를 잘라서 보관해야 합니다. 

   파일의 크기가 커질 경우 system에 많은 부하를 줘서 문제가 생길 수 있습니다.

- xferlog_std_format=YES : upload, download 파읷의 log파읷의 format을 설정하는 부분입니다.

- idle_session_timeout=600 : FTP에 접속한 user들이 idle 상태에 있을 경우 600초 이상 유지되는 경우 세션을 종료시키는 부분입니다.

- data_connection_timeout=120 : 파일 upload, download할 때 연결을 유지하는 시간을 설정하는 부분입니다.

- nopriv_user=ftpsecure : anonymous user가 접속할 때 여기에 적힌 user로 접속하도록하는 부분입니다.

- async_abor_enable=YES : async ABOR 명령어를 사용할 수 있도록 하는지 설정하는 부분입니다.

- ascii_upload_enable=YES : ASCII파일을 upload를 가능하게 하는 부분입니다.

- ascii_download_enable=YES : ASCII파일을 download가능하게 하는 부분입니다.

- ftpd_banner=Welcome to blah FTP service. : vsftpd Service에 접속하는 user에게 보여줄 banner를 설정하는 부분입니다.

- deny_email_enable=YES : anonymous user가 FTP에 접속할 때 password 부분에 E-mail Address를 입력하는데 거부할 E-mail Address를 설정하는 부분입니다.

- banned_email_file=/etc/vsftpd/banned_emails : 거부할 E-mail Address를 설정할 파일입니다.

- chroot_list_enable=YES : user가 접속시 자싞의 home 디렉토리를 /로 읶식할 수 있도록 하여 home 디렉토리 안에서만 이동이 가능하게 하는 부분입니다.

- chroot_list_file=/etc/vsftpd/chroot_list : 위 설정에서 제외할 user를 적어주시면 됩니다.

- ls_recurse_enable=YES : user들이 ls -R명령어를 사용하도록 설정하는 부분입니다. 부하가 많이 걸리므로 NO로 설정하는 것이 좋습니다.

- listen=YES : Standalone mode로 service를 할 떄 설정하는 옵션입니다.

- pam_service_name=vsftpd : user의 account에 대한 접속을 허용할 때 PAM읶증으로 여러가지 기능을 설정할 수 있는데 이 부분은 PAM 읶증을 통해서
   사용할 설정파일의 이름을 지정할 수 있습니다.

- userlist_enable=YES : userlist를 사용하여 user를 필터링할 것인지 설정하는 부분입니다.


[TIP] user_list를 이용한 특정 계정 접속 제한.

vsftpd.conf 설정 파일에서 “userlist_enable=YES” 옵션을 설정하면 /etc/vsftpd/ftpusers 파일에 작성 된 계정의 FTP 접속이 제한됩니다. 

주로 보안상 FTP 서비스가 필요 없는 시스템 계정이나 root 계정, 해킹 시도 계정 등을 막는데 사용합니다.

/etc/vsftpd/ftpusers 파일을 확인합니다.

만약 root 계정의 FTP 접속 제한을 해제하려면 해당 계정 앞에 #을 붙여 주석처리를 하면 됩니다.