반응형
vsftpd (Very Secure File Transfer Protocol Daemon)는 파일을 전송하는 프로그램으로 centos7 기본 저장소에서 설치되고 있다. 이 문서는 vsftpd 설치 및 설정과 vsftpd.conf 설정 방법 등을 정리하였다.
[목차]
1. vsftpd 설치
- yum 패키지 관리자를 업데이트
# yum update
- vsftpd 설치
# yum install vsftpd
- vsftpd 서비스를 시작하고 부팅 시 자동으로 시작되도록 설정
# systemctl start vsftpd
# systemctl enable vsftpd
2. 방화벽 설정
SELinux 해제할 경우 SELinux 구성은 생략해도 된다.
만약 방화벽을 사용 중이라면 ftp 서비스 포트를 오픈하고 passive port를 고정해 오픈해야 한다. centos7 기본 방화벽인 firewalld를 사용한다면 아래와 같이 설정한다.
- SELinux 구성
# setsebool -P ftpd_full_access on
# setsebool -P ftpd_use_passive_mode on
- passive port 3000 ~ 3050번 포트 고정
# vi /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=3050
- 방화벽 포트 허용
# firewall-cmd --permanent --add-port=21/tcp
# firewall-cmd --permanent --add-port=20/tcp
# firewall-cmd --permanent --add-port=3000-3050/tcp
# firewall-cmd --reload
3. user 생성
- $USER 정보는 실제 생성할 아이디로 변경해 입력한다.
# useradd -m -d /home/$USER -s /sbin/nologin $USER
# passwd ftpuser
# chown -R $USER:$USER /home/$USER
# chmod 755 /home/$USER
4. vsftpd.conf 설정 옵션
/etc/vsftpd.conf 경로에 위치하며 설정 후에는 vsftpd를 재시작해준다.
- anonymous_enable : 익명 사용자 로그인 허용 여부 설정 (YES/NO) Default=YES
- local_enable : 로컬 사용자 로그인 허용 여부 설정 (YES/NO) Default=YES
- write_enable : 로그인 한 사용자가 파일 업로드 및 다운로드를 할 수 있는지 여부 설정 (YES/NO) Default=YES
- local_umask : 업로드 한 파일에 대한 권한을 설정 (예시: 022) Default=22
- dirmessage_enable : 사용자가 디렉터리에 진입할 때 디렉터리 안내 메시지 허용 여부 설정 (YES/NO) Default=YES
- xferlog_enable : 전송 로그를 기록할지 여부 설정 (YES/NO) Default=YES
- connect_from_port_20 : 사용자가 FTP 데이터 연결에 포트 20을 사용해야 하는지 여부 설정 (YES/NO) Default=YES
- chroot_local_user : 로그인 한 사용자가 홈 디렉터리 외부로 이동할 수 있는지 여부 설정 (YES/NO) Default=YES
- allow_writeable_chroot : chroot 디렉터리에서 쓰기 작업을 허용할지 여부 설정 (YES/NO) Default=NO
- listen : sftpd가 연결을 수신할 IP 주소 설정
- listen_ipv6 : vsftpd가 IPv6 연결을 수신할지 여부 설정 (YES/NO) Default=NO
- userlist_enable : 특정 사용자만 로그인을 허용하도록 사용자 목록 허용 여부 설정 (YES/NO) Default=NO
- userlist_deny : 목록에 있는 사용자만 로그인을 거부할지 여부 설정 (YES/NO) Default=YES
- require_ssl_reuse : SSL/TLS 재사용을 요구하는 경우 설정 (YES/NO) Default=NO
- pasv_enable : 패시브 모드 사용 여부 설정 (YES/NO) Default=YES
- pasv_min_port : vsftpd가 패시브 모드로 사용할 수 있는 최소 포트 설정
- pasv_max_port : vsftpd가 패시브 모드로 사용할 수 있는 최대 포트 설정
- pasv_address : 패시브 모드에서 사용할 IP 주소 설정. 만약 로컬 IP 주소를 사용하려면, listen_address와 같은 값을 사용
- ftp_username : vsftpd가 사용하는 FTP 사용자 이름 설정 Default=nobody
- ftpd_banner : 클라이언트에게 표시할 FTP 배너 메시지 설정 Default=(none)
- max_clients : vsftpd 서비스가 처리할 수 있는 최대 클라이언트 수 설정 Default=0 (무제한)
- max_per_ip : 클라이언트 IP 주소당 처리할 수 있는 최대 연결 수 설정 Default=0 (무제한)
- idle_session_timeout : 사용자가 일정 기간 동안 연결을 유지하지 않았을 때 연결을 자동으로 종료할 시간 설정 Default=600초
- data_connection_timeout : 데이터 전송 연결을 유지할 최대 시간 설정 Default=300초
- listen_port : vsftpd가 연결을 수신할 포트 번호 설정 21
- anonymous_root : 익명 사용자가 로그인한 경우의 홈 디렉터리 경로 설정 Default=/var/ftp
- local_root : 로컬 사용자가 로그인한 경우의 홈 디렉터리 경로 설정 Default=~
- guest_username : 익명 사용자가 사용할 가상 계정 이름 설정
- virtual_use_local_privs : 가상 사용자 계정이 로컬 권한을 사용할지 여부 설정 Default=YES
- virtual_use_create_upload_dirs : 가상 사용자 계정이 업로드 디렉터리를 생성할 수 있는지 여부 설정 Default=YES
- file_open_mode : 파일 전송 시 파일 모드(권한)를 설정 Default=666
- anon_umask : 익명 사용자가 업로드한 파일의 기본 파일 모드(권한)를 설정 Default=77
- anon_upload_enable : 익명 사용자가 파일을 업로드할 수 있는지 여부를 설정 Default=NO
- anon_mkdir_write_enable : 익명 사용자가 디렉터리를 만들고 파일을 업로드할 수 있는지 여부를 설정 Default=NO
- anon_other_write_enable : 익명 사용자가 다른 사용자가 업로드한 파일을 수정할 수 있는지 여부를 설정 Default=NO
- chroot_list_enable : 지정된 사용자만 chroot 기능을 사용할 수 있는지 여부를 설정 Default=NO
- chroot_list_file : chroot 기능을 사용할 사용자 목록 파일의 경로를 설정 Default=/etc/vsftpd.chroot_list
- check_shell : 로컬 사용자가 사용 가능한 셸인지 확인할지 여부를 설정 Default=YES
- tcp_wrappers : TCP wrappers를 사용할지 여부를 설정 Default=YES
- userlist_file : 사용자 목록 파일의 경로를 설정 Default=/etc/vsftpd.user_list
- listen_address : FTP 서버가 수신 대기할 IP 주소를 설정 (IP주소설정)
- passwd_chroot_enable : 패스워드가 chroot 된 디렉터리에 있는지 확인 (YES/NO) Default=NO
- ssl_enable : SSL/TLS 보안 연결 사용 여부 설정 (YES/NO) Default=NO
- ssl_tlsv1 : TLSv1 보안 프로토콜을 사용할지 여부를 설정 (YES/NO) Default=YES
- ssl_sslv2 : SSLv2 보안 프로토콜을 사용할지 여부를 설정 (YES/NO) Default=NO
- ssl_sslv3 : SSLv3 보안 프로토콜을 사용할지 여부를 설정 (YES/NO) Default=NO
- rsa_cert_file : SSL 인증서 파일 경로를 지정. ssl_enable 옵션을 사용해야 적용됨. (경로설정)
- rsa_private_key_file : SSL 개인키 파일 경로를 지정. ssl_enable 옵션을 사용해야 적용됨. (경로설정)
- ssl_ciphers : SSL/TLS 연결에 사용할 암호화 알고리즘 목록 설정
- ssl_cert_digest : SSL 인증서 해시 알고리즘을 설정 (sha256, sha384, sha512, md5 등..)