Linux Server

리눅스 vsftpd 구현

delmaster 2015. 5. 19. 16:29

* 설치 및 설치 확인
 * yum install vsftpd
 * yum info vsftpd

 

* 설정파일 및 디렉토리
 * /usr/sbin/vsftpd : 실행 파일
 * /etc/vsftpd/vsftpd.conf : vsftpd의 메인 설정 파일
 * /etc/vsftpd/ftpusers : ftp서버에 로그인 할 수 없는 사용자 목록 리스트
 * /etc/vsftpd/user_list : 접근 허용및 거부 리스트
 * /var/ftp : 기본 작업 디렉토리
 * /var/ftp/pub : 익명사용자 로그인시 기본 디렉토리

 

* 옵션
 * /etc/vsftpd/vsftpd.conf
 * anonymous_enable=YES : 익명사용자 허용/거부
 * local_enable=YES : 로컬 사용자(/etc/passwd에 있는 사용자) 로그온 허용/거부
 * write_enable=YES : 파일시스템에 데이터 쓰기 허용/거부
 * local_umask=022 : 퍼미션. 반대로 적용된다. 022: 666-022=644 : rwx에서 x는 필요없음. 666이 기본
 * anon_upload_enable=YES : 익명사용자의 파일 업로드 허용/거부
 * anon_mkdir_write_enable=YES : 익명사용자의 디렉토리 생성 허용/거부
 * dirmessage_enable=YES : ftp접속자가 디렉토리 이동시 알림메세지로 설정된 파일 내용 출력
 * xferlog_enable=YES : 사용자의 업로드 다운로드를 로그 파일로 저장(/var/log/xferlog에 기록)
 * connect_from_port_20=YES : 데이터전송포트
 * chown_uploads=YES : 익명사용자가 업로드한 파일의 퍼미션 자동 변경
 * chown_username=whoever : chown_uploads 옵션이 YES일 경우 변경할 사용자 명
 * xferlog_file=/var/log/xferlog : xferlog_enable옵션이 YES일 경우 저장할 경로 지정
 * xferlog_std_format=YES : xferlog 로그의 표준 포맷 사용
 * idle_session_timeout=600 : idle상태가 600초 동안 이어질때 세션 종료
 * data_connection_timeout=120 : 파일 업/다운로드시 연결 유지시간 지정. 시간 초과시 업/다운 취소.
                                 주석처리되면 기본값으로 300초 지정.
 * nopriv_user=ftpsecure : 익명 접속시 사용할 유저 명
 * async_abor_enable=YES : async ABOR 명령 사용을 허용/거부
                           (일부ftp클라이언트에서 파일 전송 취소해도 취소되지 않는 상태가 생길수 있음. 그때 사용)
 * ascii_upload_enable=YES : ASCII 파일 업로드 허용/거부
 * ascii_download_enable=YES : ASCII 파일 다운로드 허용/거부
 * ftpd_banner=Welcome to... : ftp 접속 성공시 출력하는 환영 메세지 지정
 * deny_email_enable=YES : 익명 접속 시 패스워드에 입력하는 이메일 중 특정 이메일 거부
 * banned_email_file=/etc/vsftpd/banned_emails : deny_email_enable 옵션이 YES일때 거부할 이메일 목록
 * chroot_local_user=YES : 사용자 접속시 자신의 홈디렉토리를 / 로 인식하게 하여 하위로 이동만 가능
 * chroot_list_enable=YES : chroot에서 제외할 사용자 목록 사용 여부
 * chroot_list_file=/etc/vsftpd/chroot_list :  chroot_list_enable이 YES일 경우 해당 목록 파일 지정
 * ls_recurse_enable=YES : 접속자에게 ls -R(하위dir까지출력) 명령어 사용 허가/거부(부하가 많으므로 NO)
 * listen=YES : standalone모드는 YES, xinetd모드는 NO
 * listen_ipv6=YES : IPv6응답 허용/거부
 * pam_service_name=vsftpd : 사용자 PAM 인증 시 사용할 설정 파일 이름 지정 (vi /etc/pam.d/vsftpd)
 * userlist_enable=YES : /etc/vsftpd/user_list에 지정된 사용자 접속 거부
 * tcp_wrappers=YES :
 * pasv_min_port=5000 : 패시브 모드시 사용할 시작 포트 번호
 * pasv_max_port=6000 : 패시브 모드시 사용할 마지막 포트 번호
 * pasv_enable=YES : 패시브 모드 사용/사용안함. NO일 경우 액티브 모드
 * max_clients=1 : 최대 동시 접속자수 지정
 * max_per_ip=5 : IP당 접속 허용 수 지정(standalone 모드에서만 지원)
 * session_support=YES : wtmp에 접속로그 기록 허용/거부(허용 시 last 명령어로 접속사용자의 최근 접속시간 확인가능)
 * trans_chunk_size=8192 : 업/다운로드를 지정한 크기(byte단위)로 잘라서 전송
 * local_max_rate=1024000 : 계정 사용자의 초당 전송량 제한(byte단위)
 * anon_max_rate=1024000 : 익명 사용자의 초당 전송량 제한(byte단위)
 * force_dot_files=YES : 접속 사용자가 파일 리스트 출력시 기본 출력에 숨김파일(.xx) 출력 허용/거부
 * hide_ids=YES : 접속 사용자가 파일 리스트 출력시 파일과 디렉토리의 소유자 출력 허용/거부(YES일 시 ftp로 출력)
 * deny_file={*.mp3,*.wmv} : 지정한 파일 업로드 금지
 * hide_file={*.mp3,.txt,secret*} : 접속 사용자에게 지정한 숨김(출력안함)

 


[일반 구성]
 1. anonymous_enable=NO : 익명 거부. 주석처리하면 익명 허용됨. 명시적 NO
 2. local_enable=YES : 로컬 사용자 허용
 3. chroot_local_user=YES : 상위 폴더 접근 금지
 4. pasv_enable=YES : 패시브 모드 사용
 5. pasv_min_port=5000 : 시작 데이터 포트
 6. pasv_max_port=6000 : 끝 데이터 포트
 7. iptables -I INPUT -p tcp --dport 21 -j ACCEPT : 21번 포트 오픈
 8. iptables -I INPUT -p tcp --dport 5000:6000 -j ACCEPT : 5000~6000포트 오픈
 9. service vsftpd restart
 10. chkconfig --level 35 vsftpd on

 

 

* 500 OOPS: cannot change directory
 * SELinux 로 인한 차단
 * setsebool -P ftp_home_dir=1
  * -P : 다음 부팅시에도 유지
 
  * SELinux 정책 설정 : setsebool
  * SELinux 정책 보기 : getsebool -a

 

 

[익명 사용자 구성]

 vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
local_enable=YES
chroot_local_user=YES
pasv_enable=YES
pasv_min_port=5000
pasv_max_port=6000
anon_upload_enable=YES
anon_mkdir_write_enable=YES


setsebool allow_ftpd_anon_write on
setsebool ftp_home_dir on
setsebool ftpd_use_passive_mode on
setsebool allow_ftpd_full_access on

 

chmod 757 /var/ftp/pub

 

 


[가상 사용자 구성]
 1. db4-utils 설치
  * yum install db4-utils

 

2. ftp 가상 사용자를 사용하는 vsftpd를 구성하는 스크립트

* 가상 사용자 이름을 실제 사용자 이름과 동일하게 사용하지 말것.
 * 가상 사용사 삭제 스크립트가 실제 사용자를 지우게 된다.
 * 가상 사용자를 이용하는 목적에서 벗어난다


* vsftpd 설치 후 구성 스크립트
 * vsftpd_virtual_config.sh : 가상 사용자 구성작업 수행


* 사용자 관리 스크립트
 * vsftpd_virtualuser_add.sh : 가상 사용자 추가
 * vsftpd_virtualuser_update.sh : 가상 사용자 정보 업데이트
 * vsftpd_virtualuser_remove.sh : 가상 사용자 및 모든 데이터 삭제
 * vsftpd_virtualuser_info.sh : 가상 사용자 정보 검색

* 사용자 계정 설정
 cd /etc/vsftpd/users 경로 이동하여 my_ftp_virtual_user 파일을 참고하여 사용자 계정을 수정해준다. 

 

* 방화벽
 * iptables 명령을 통해 tcp 21 , tcp 64000:65535 오픈

 

 

 

 

 

 

'Linux Server' 카테고리의 다른 글

CentOS 6.7 설치 영상  (0) 2015.09.20
리눅스 VMware Tools 설치  (0) 2015.07.01
리눅스 DHCP  (0) 2015.06.02
CentOS R 설치  (0) 2015.05.19
리눅스 cron - 시스템 작업 예약  (0) 2015.05.15
리눅스 BIND 9.8.2 - CentOS 6.6 / 6.7  (1) 2015.05.15
리눅스 SSH  (0) 2015.05.14
리눅스 SAMBA AD Join  (0) 2015.05.13