본문 바로가기
서버 및 보안

vsftpd

by 다움위키 2023. 12. 25.

vsftpd, (또는 very secure FTP daemon)는 리눅스를 포함하여 Unix-계열(Unix-like) 시스템에 대해 FTP 서버입니다. 그것은 GNU 일반 공중 라이선스(GNU General Public License)에 따라 라이선스가 부여됩니다. 그것은 IPv6SSL을 지원합니다.

vsftpd는 explicit (2.0.0 이래로) and implicit (2.1.0 이래로) FTPS를 지원합니다.

vsftpd우분투(Ubuntu), 센토스(CentOS), 페도라(Fedora), NimbleX, 슬랙웨어(Slackware)RHEL 리눅스 배포판의 기본 FTP 서버입니다.

Installation

데비안 저장소에서 설치할 수 있습니다:

  • sudo apt-get install vsftpd

Configuration

구성은 크게 액티브 (active) 모드와 패시브 (passive) 모드로 나뉩니다.

액티브 모드는 명령을 주고받는 포트 (21번)과 데이터를 주고받는 포트 (20)가 이미 알려져 있습니다. 물론, 이 값은 둘 다 바꿀 수 있습니다.

패시브 모드는 명령을 주고 받는주고받는 포트는 액티브 모드와 같지만, 데이트를 주고받는 포트는 설정에서 명시적으로 적어 주어야 합니다.

여기서는 패시브 모드를 이용할 것입니다.

Anonymous Access

대부분의 설정은 배포판에서 기본으로 제공하는 파일에 기록되어 있습니다. 필요에 따라, 원하는 부분을 수정해야 하는데, 원래 값을 백업해 둘 필요가 있습니다.

  • sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

우분투에서 지정하는 기본 ftp 서버의 위치가 있지만, 웹 디렉토리와 같은 위치에 두기 위해 디렉토리 위치를 바꿀 필요가 있습니다:

  • sudo mkdir -p /var/ftp/pub

이제 vsftpd.conf 파일을 다음과 같이 변경합니다:

anonymous_enable=YES
anon_root=/var/ftp/
no_anon_password=YES
hide_ids=YES
pasv_min_port=40000
pasv_max_port=50000
local_enable=NO

TLS conf

보다 안전한 데이터 교환을 위해, 설정을 추가할 필요가 있습니다. 이를 위해 먼저, 키를 생성합니다:

  • sudo openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

이제 키를 다른 사람들이 읽지 못하도록 변경합니다:

  • sudo chmod 600 /etc/ssl/private/vsftpd.pem

그런-다음 /etc/vsftpd.conf에 다음을 추가합니다:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Adjust ufw

패시브 포트를 열어주지 않으면, 접속은 되지만 리스트 출력이 되지 않습니다.

  • sudo ufw allow 20/tcp (액티브 모드에서 필요. 패시브 모드에서 필요하지 않음)
  • sudo ufw allow 21/tcp
  • sudo ufw allow 990/tcp (액티브 모드에서 필요. 패시브 모드에서 필요하지 않음)
  • sudo ufw allow 40000:50000/tcp

좀 더 안전하게 접속할 대역을 설정할 수 있습니다. 예를 들어, 집에서 와이파이로 내부에 있는 모든 기기로 접속을 허용하기 위해,

  • 먼저, 스마트폰의 와이파이 접속을 눌러서 Router 정보를 확인합니다.
  • 그 정보가 예를 들어 192.168.100.1로 나오면, 스마트폰의 웹브라우저의 주소창에 해당 ip를 입력합니다.
  • 라우터로 접근한 후에, 라우터의 실제 공인 ip 주소, 예를 들어, 111.11.111.100을 확인합니다. 아래와 같이 설정할 수 있습니다:
  • sudo ufw allow from 111.11.111.100 to any port 21 proto tcp
  • sudo ufw allow from 111.11.111.100 to any port 40000:50000 proto tcp

 

systemd

서버를 시작하고, 컴퓨터가 켜질 때 서버가 기동하도록 설정합니다:

  • sudo systemctl start vsftpd
  • sudo systemctl enable vsftpd

Secure FTP

좀더 보안에 신경을 쓰신다면, SFTP를 이용하는 것을 추천합니다. SFTP를 읽고 설정해 줍니다.

External Resources