gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Linux

centos7 - vsftpd 설치 및 설정

gbmin 2023. 5. 2. 22:10

vsftpd (Very Secure File Transfer Protocol Daemon) 파일을 전송하는 프로그램이고 centos7 기본 저장소에서 설치되고 있다.
이 문서는 vsftpd 설치 및 설정과 vsftpd.conf 설정 방법 등을 작성하였다.

- 목차

1. vsftpd 설치

2. 방화벽 설정

3. user 생성

4. vsftpd.conf 설정 옵션

 

1. vsftpd 설치

yum 패키지 관리자를 업데이트

# yum update


vsftpd 설치

# yum install vsftpd


vsftpd 서비스를 시작하고 부팅 시 자동으로 시작되도록 설정

# systemctl start vsftpd
# systemctl enable vsftpd

 

2. 방화벽 설정

SELinux 해제할 경우 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 경로에 위치하며 root 권한으로 설정이 가능하다.

설정 후에는 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 등..)