본문 바로가기

Tip&Tech/Server

[팁] MissFlash의 리눅스 유용 단축키, 명령어 모음(16) - vsftpd 설정 및 운영

* 본 게시물은 MissFlash가 "CentOS 리눅스 구축관리실무"를 참고로 유용한 단축키 및 명령어를 정리한 것입니다.
* 게시물이 지속적으로 업데이트 될 예정이니, 퍼가기 보다는 링크나 트랙백을 이용해 주세요 :)

* MissFlash의 리눅스 유용 명령어 목록
  • vsftpd 설치하기
    1. cd /usr/local/src/ftpd/ : 디렉토리 이동
    2. lftpget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.5.tar.gz : 공식 사이트로부터 다운로드
    3. useradd nobody : nobody 사용자 추가(nobody 사용자가 있는지 확인, 사용자가 있으면 다음 단계로 진행)
    4. mkdir /usr/share/empty/ : 빈 디렉토리 생성(만들어져 있으면 다음 단계로 진행)
    5. mkdir /var/missflash/ : missflash 계정의 홈 디렉토리 생성
    6. useradd -d /var/missflash missflash : missflash 계정의 홈 디렉토리 설정
    7. chown root.root /var/missflash : 디렉토리 소유자와 소유그룹 변경
    8. chmod 755 /var/missflash : 디렉토리 퍼미션 변경
    9. make : 실행파일 생성[각주:1]
    10. make install : 프로그램 인스톨
    11. cp vsftpd.conf /etc : vsftpd 설정 파일 복사

  • vsftpd 서버 실행 : /usr/local/sbin/vsftpd &
    • vsftpd를 standalone으로 설정하라고 나올 경우 vsftpd.conf 파일 제일 아래에 listen=YES[각주:2] 라고 입력

  • vsftpd.conf 설정
    • anonymous_enable=YES : 익명 FTP 서비스 활성화 여부 설정
    • local_enable=YES : 로컬 계정 사용자 접속 여부 설정
    • write_enable=YES : 쓰기 가능 여부 설정
    • local_umask=022 : 파일 퍼미션 정의(022로 설정하면 파일의 퍼미션은 644가 됨)
    • anon_upload_enable=YES : 익명 FTP 접속자의 파일 업로드 권한 설정
    • anon_mkdir_write_enable=YES : 익명 FTP 접속자의 디렉토리 생성 권한 설정
    • dirmessage_enable=YES : FTP 접속자가 다른 디렉토리로 이동시, 알림메시지 출력 여부 설정
    • xferlog_enable=YES : FTP 접속자들의 업/다운로드 상황 로그파일 저장 여부 설정
    • connect_from_port_20=YES : standalone 모드를 운영하면서 데이터 전송포트 사용시 설정
    • chown_uploads=YES : 익명 FTP 서비스에서 익명 접속자가 업로드한 파일의 소유권 자동 변경 여부 설정
    • chown_username=whoever : 익명 FTP 서비스에서 익명 접속자가 업로드한 파일의 소유권 자동 변경한 후, 그 소유권을 변경할 사용자 설정(root로 설정하지 말 것!)
    • xferlog_file=/var/log/vsftpd.log : 로그파일 경로 설정
      • cp vsftpd.log /etc/logrotate.d/vsftpd : 생성한 로그파일을 /etc/logrotate.d/vsftpd로 복사
    • xferlog_std_format=YES : 로그파일 포맷 설정
    • idle_session_timeout=600 : idle 상태에서 접속을 유지할 최대 시간 설정(기본값 300초)
    • data_connection_timeout=120 : 파일 업/다운로드시 연결을 유지하는 시간 설정(기본값 300초)
    • xferlog_std_format=YES : 로그파일 포맷 설정
    • nopriv_user=missflash : 익명 FTP 접속자가 접속하는데 사용할 사용자 설정(기본값 nobody)
    • async_abor_enable=YES : async ABOR 명령 가능 여부 설정(기본값 NO)
    • ascii_upload_enable=YES : ASCII 파일 업로드 가능 여부 설정(기본값 NO)
    • ascii_download_enable=YES : ASCII 파일 다운로드 가능 여부 설정(기본값 NO)
    • ftpd_banner=Welcome : FTP 접속자에게 보여줄 환영 메시지 설정
    • deny_email_enable=YES : 익명 FTP 접속시 접속을 거부할 이메일[각주:3] 설정(기본값 NO)[각주:4]
    • banned_email_file=/etc/vsftpd.banned_emails : 접속을 거부할 이메일의 파일 경로 설정
    • chroot_local_user=YES : 홈 디렉토리 위로 이동 제한 여부 설정(기본값 NO)[각주:5]
    • chroot_list_enable=YES : chroot에서 제외할 사용자 목록 파일 사용 여부 설정(기본값 NO)
    • chroot_list_file=/etc/vsftpd.chroot_list : chroot에서 제외할 사용자 목록 파일과 경로 설정
    • ls_recurse_enable=YES : FTP 접속자들의 ls -R 명령어 사용가능 여부 설정(기본값 NO)
    • listen=YES : standalone 모드로 서비스할 때 설정(기본값 xinetd)
    • pam_service_name=vsftpd : pam 인증에 사용할 설정파일의 이름 설정
      • 해당 파일 복사 : cp /usr/local/src/ftpd/vsftpd-2.0.5/RedHat/vsftpd.pam /etc/pam.d/vsftp
      • 사용자 계정 접속 제한 : (vsftp 파일 내용중) item=user sense=deny file=/etc/ftpusers
    • pasv_min_port=5000 : 패시브 모드 최소 포트번호 설정
    • pasv_max_port=6000 : 패시브 모드 최대 포트번호 설정(iptables 방화벽에서 5000~6000까지 오픈해야 함)
    • pasv_enable=NO : 패시브 모드를 해지(기본값 YES)
    • max_clients=100 : 최대 동시접속자수 제한 설정(기본값 0[각주:6])
    • max_per_ip=5 : IP당 최대 가능 접속수 설정(기본값 0)
    • session_support=YES : wtmp에 접속로그 남기도록 설정(YES 설정시 last 명령으로 접속 사용자의 최근 접속시간 파악 가능)
    • trans_chunk_size=8192 : 파일 업/다운로드시 지정한 byte 단위로 잘라서 전송(4096부터 65536사이의 값으로 지정해야 함, 기본값 0[각주:7])
    • local_max_rate=500000 : 계정 사용자의 최대 초당 전송량(bytes) 제한(기본값 0)
    • anon_max_rate=300000 : 익명 접속자의 최대 초당 전송량(bytes) 제한(기본값 0)
    • force_dot_files=YES : 숨김 파일(.으로 시작하는 파일)을 보여줄지 여부 설정(기본값 NO)
    • hide_ids=YES : 디렉토리와 파일의 원래 소유자와 소유그룹을 숨길지 여부 설정(기본값 NO)
    • deny_file={*.mp3,*.wmv} : 특정 확장자 파일 업로드 제한
    • hide_file={*.mp3,*.wmv} : 특정 확장자 파일 열람 제한

  • vsftpd 서버 시작스크립트 생성[각주:8]
    1. /etc/vsftpd 디렉토리 생성 및 /etc/vsftpd/vsftpd.conf 파일 저장
    2. 시작 스크립트 파일[각주:9]/etc/rc.d/init.d/vsftpd 파일로 저장
    3. 스크립트에 실행권한 부여 : chmod 755 /etc/rc.d/init.d/vsftpd
    4. chkconfig 이용 런레벨 3, 5번에 추가
      • chkconfig --add vsftpd
      • chkconfig --level 3 vsftpd on
      • chkconfig --level 5 vsftpd on


  • 막간을 이용한, sftp 설치 방법
    • openssh 패키지에 포함되어 있음
    • /etc/ssh/sshd_config 파일 내 "Subsystem   sftp   /usr/libexec/openssh/sftp-server" 부분 활성화
    • sshd 서비스 시작

  • 막간을 이용한, sftp 사용 방법(클라이언트 설정)
    • 포트 : 22
    • 서버유형 : SFTP using SSH2



지금까지 2회에 걸쳐 FTP 서비스에 대해 살펴봤습니다. 다소 지루한 작업이었지만, 필요할 때마다 찾아보기는 좋을 것 같네요...
  1. 이때 디렉토리 경로는 "/usr/local/src/ftpd/vsftpd-2.0.5"이어야 합니다. [본문으로]
  2. 설정옵션 인자와 값 사이에는 공백이 있으면 안됩니다.(listen = YES 라고 입력하면 실행 불가) [본문으로]
  3. 익명 접속자의 패스워드에 이메일을 입력해야 합니다. [본문으로]
  4. 접속을 거부할 이메일은 "/etc/vsftpd.banned_emails" 에서 설정할 수 있습니다. [본문으로]
  5. chroot에서 제외할 사용자는 "/etc/vsftpd.chroot_list" 파일에 작성하면 됩니다. [본문으로]
  6. unlimited를 의미합니다. [본문으로]
  7. vsftpd가 알아서 전송합니다. [본문으로]
  8. 전체적인 절차만 설명하니, 자세한 내용은 책이나 검색사이트를 참고하시기 바랍니다. [본문으로]
  9. 구체적인 스크립트 내용은 생략합니다. [본문으로]