본문 바로가기
Tech Notes/Linux

centos7 - vsftpd 설치 및 설정

by gbmin 2023. 5. 2.
반응형

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 구성은 생략해도 된다.

 

centos - SELinux 설정 및 해제

SELinux(Security Enhanced Linux)는 RHEL, CentOS 기반의 리눅스 보안 프로그램이다. 특정 서비스가 SELinux로 인해 정상 동작 하지 않는 다면 끄기보다는 SELinux 가 활성화 된 상태에서 동작되도록 설정을 수정

gbminnote.com

만약 방화벽을 사용 중이라면 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 등..)

 

 

 

centos7 - APM(Apache, PHP, Mariadb) 설치 및 설정

centos7 기반 웹사이트 구축을 위한 APM 설치 및 설정 매뉴얼 - 목차 APM 설치 1. 패키지 업데이트 2. 프로그램 설치를 위한 패키지 설치 3. Apache 설치 4. mod_ruid2 모듈 설치 5. php 및 확장 모듈 설치 6. Mari

gbminnote.com

 

centos7 - PHP 버전별 설치 방법 (PHP5.x, PHP7.x, PHP8.x)

centos 7 기본 저장소의 php 버전은 5.4 버전으로 설치된다. rpm 패키지 설치를 통한 상위 버전의 php 설치를 위한 매뉴얼을 정리하였다.1. 설치 매뉴얼Remi Collet은 프랑스 출신의 오픈소스 개발자로 PHP

gbminnote.com

 

centos7 - Mariadb 버전별 설치 방법 (Mariadb 10.x, Mariadb 11.x)

centos 7 기본 저장소의 Mariadb 버전은 5.5 버전으로 설치된다. 상위 버전의 Mariadb 설치를 위한 매뉴얼을 정리한다. rpm 패키지 설치를 통해서 처리하였다. 1. 저장소 확인 방법 https://mariadb.org/download/?t

gbminnote.com