[CentOS] FTP 접속자 수 제한하기

simpled 2013.06.25 22:27 조회 수 : 4576

출처 : http://oracle.tistory.com/129

 

# vsftpd 주요 서비스

/etc/rc.d/init.d/vsftpd start          //FTP서비스 시작
/etc/rc.d/init.d/vsftpd stop          //FTP서비스 종료
/etc/rc.d/init.d/vsftpd restart       //FTP서비스 재시작
/etc/vsftpd/vsftpd.conf               //설정 파일

/sbin/chkconfig vsftpd on           //부팅 시 자동실행

/yum update vsftpd                    //이미 설치가 되어 있으면, vsftpd 업데이트하기

 

# vsftpd 관련 파일

/etc/vsftpd/vsftpd.conf          //vsftpd의 주된 설정파일
/usr/sbin/vsftpd                   //vsftpd의 데몬파일
/etc/initd./vsftpd                  //vsftpd 시작/종료/재시작 스크립트
/etc/pam.d/vsftpd                //vsftpd의 PAM설정
/var/log/vsftpd.log               //vsftpd의 로그파일
/etc/vsftpd.user_list             //FTP 접속을 제한할 사용자 리스트
/etc/vsftpd.ftpusers              //PAM에서 사용하는 FTP 접속제한자 리트스파일

 

 # 계정별 vsftpd 접속제한 파일

1. /etc/vsftpd.user_list (or /etc/vsftpd/user_list)
vsftpd에서 기본으로 사용하는 계정별 접속제어 파일이다. 이 파일에 등록된 사용자들은 ftp접속을 거부하게 된다. 
이 파일에 등록할 때에는 다음 3가지 룰을 지켜주면 된다.

  - 가능한 시스템 계정들은 모두 등록한다.
  - 한 행에 한 계정씩만 등록한다.
  - /etc/vfstpd/vsftpd.conf파일(or /etc/vsftpd.conf)에서
     "userlist_deny=NO"으로 설정되었을 경우에 여기에 등록한 사용자들은 접속을 허용하는 사용자들이며
     "userlist_deny=YES"로 설정하였을 경우에는 접속을 거부하는 사용자리스트가 된다.
     YES가 기본이므로 기본설정을 변경하지 않는다면 이 파일은 접속거부자리스트파일이 된다.


2. /etc/vsftpd.ftpusers (or /etc/vsftpd/ftpusers)
다음은 PAM의 VSFTPD 설정파일로서 /etc/vsftpd/ftpusers 파일에 등록된 사용자들은 접속을 거부하겠다는 의미의
설정 파일이다. 즉, /etc/vsftpd.ftpusers 파일은 PAM에서 설정하여 사용하고 있는 ftp 접속거부자 리스트 파일이다.

#cat /etc/pam.d/vsftpd
#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_stack.so service=system-auth
auth       required     pam_shells.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth


 


# /etc/vsftpd/vsftpd.conf 설정옵션

- anonymous_enable=YES (default YES)
  익명(anonymous)접속을 허용할 것인(YES) 허용하지 않을 것인가(NO)를 결정한다.

- anon_root=/var/ftp
  익명(anonymous)접속시 루트디렉토리를 지정한다.

- local_enable=YES (default YES)
  로컬 계정 사용자들의 접속을 허용할 것인가의 여부를 결정한다.
  YES로 설정하면 로컬계정사용자의 접속을 허용하는 것이며 NO로 설정하면 허용하지 않는 것이다.

- write_enable=YES (default YES)
  이 설정은 ftp전용명령어 중에 write명령어를 허용할 것인가를 결정하는 것이다.
  허용하려면 YES, 허용하지 않으려면 NO를 설정한다.

- local_umas=022 (default 022)
  로컬계정 사용자들의 umask값을 설정한다.

- anon_upload_enable=YES (default NO)
  익명(anonymous)계정 사용자에게 파일 어로드를 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정한다.
  가능한 익명계정으로 접속한 사용자에게는 업로드 권한을 허용하지 않는 것이 보안에 좋다.

- anon_mkdir_write_enable=YES (default NO)
  익명(anonymous)계정 사용자에게 디렉토리 생성권한을 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정하는 지시자이다.
  가능한 익명계정으로 접속한 사용자에게는 디렉토리 생성권한을 허용하지 않는 것이 보안에 좋다.

- ftpd_banner=Welcome to blah FTP service.
  ftp서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하면 된다.

- dirmessage_enable=YES
  ftp접속한 사용자가 특정 디렉토리로 이동하였을 때 개별 디렉토리의 메시지를 보여주도록 허용할 것인가(YES) 허용하지 안을 것인가(NO)를 설정하다.

- message_file=.message
  ftp접속후에 특정 디렉토리로 이동할 때에 디렉토리 안내메시지 파일로 사용할 파일명을 지정한다.

- xferlog_enable=YES
  ftp접속후에 파일 업로드와 다운로드에 대한 로그를 남길것인가(YES) 남기지 않을 것인가(NO)를 설정한다.

- xferlog_file=/var/log/vsftpd.log
  ftp로그파일의 위치를 결정한다.

- xferlog_std_format=YES
  로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가(YES) 아닌가(NO)를 설정한다.

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

- session_support=YES
  이 설정이 YES로 설정되어 유효하게 되었을 때에는 바이너리파일인 wtmp에 ftp접속관련기록을 남기게 된다.
  last라는 명령어는 각 사용자들의 접속기록을 wtmp파일에서 가져와 확인하는 명령어이므로 이 설정이 적용되면 last명령어로 ftp접속기록을 확인할 수 있다.

- idle_session_timeout=600
  ftp연결에서 idle타임에 대한 타임아웃값을 설정한다.

- data_connection_timeout=120
  데이터 전송시 적용되는 타임아웃값을 설정한다.

- anon_max_rate=0
  local_max_rate=0
  trans_chunk_size=0
  ftp서비스의 전송속도를 제한하는 설정이다.
  초당 byte수를 지정할 수 있으며 제한없이 허용하려면 0으로 설정한다.
  이 설정은 vsftpd가 독립뎀ㄴ(standalone)모드로 서비스될 때에만 적용되는 것이다.

- max_clients=30
  max_per_ip=3
  이 설정은 동시 ftp접속자수를 제한하는 설정이다.
  max_clients는 ftp접속을 최대 30명까지만 허용하는 설정이다.
  max_per_ip는 한 IP(호스트)에서 동시에 3번까지만 접속이 가능하다는 설정이다.

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

- deny_email_enable=YES
  banned_email_file=/etc/vsftpd/banned_emails
  익명접속시에 기본적으로 사용되는 계정명을 anonymous이며 패스워드는 email형식으로 입력하면 된다.
  이 때 패스워드로 인정하지 않을 즉, 패스워드로 사용하지 못하도록 할 email 주소를 사용하도록 하는 지시자이다.
  즉, "deny_email_enable=YES"로 설정하시고 "banned_email_file=/etc/vsftpd/banned_emails"로 설정되어 있다면
  패스워드로 허용하지 않을 email 주소를 /etc/vsftpd/banned_emails 파일에 넣어두면 된다.
  그러면 이 파일에 등록된 email주소는 패스워드로 인정하지 않는다.

- chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd/chroot_list
  전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정이다.
  먼저 "chroot_list_enable=YES"로 설정하고 /etc/vsftpd/chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록하면 된다.
  즉, /etc/vsftpd/chroot_list 파일에 등록된 사용자들에 한하여 chroot기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한된다.

- chroot_local_user=YES
  특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토리 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정한다.
  만약 "chroot_list_enable=YES" 이고 "chroot_local_user=YES"이면 /etc/vsftpd/chroot_list파일에 등록된 사용자들만 chroot()적용을 받지 않게 된다.
  즉, 이 두 설정이 모두 YES로 되어있다면 /etc/vsftpd/chroot_list에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용된다.

- ls_recurse_enable=YES
  ftp접속에서는 ls 사용시 -R옵션을 허용하지 않는 것이 기본 설정이다.
  -R옵션이란 서브디렉토리내의 파일들의 리스팅(목록)까지 모두 확인할 수 있도록 하는 것이다.
  이 지시자의 값이 YES로 되어 있다면 ftp접속후에 디렉토리 목록 확인시에 서브디렉토리들의 목록들까지 하넌에 볼 수 있는 -R옵션을 허용하게 된다.

- pam_service_name=vsftpd
  vsftp에서 PAM설정파일명으로 사용할 파일명을 지정한다.

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