vsFTP

vsftpd(매우 안전한 FTP 데몬)는 Linux 및 Unix 계열 시스템을 위한 가볍고 안전하며 빠른 FTP 서버 소프트웨어입니다. 보안 기능과 단순성으로 유명하여 FTP 서버 설치에 널리 사용됩니다.

vsftpd의 몇 가지 주요 기능

  • 보안: vsftpd는 보안을 염두에 두고 설계되었으며 chroot 감옥, IP 기반 액세스 제한, SSL/TLS 암호화 및 일반적인 FTP 취약성으로부터 보호하는 데 도움이 되는 강력한 구성 옵션 세트와 같은 기능을 포함합니다.

  • 성능: vsftpd는 고성능에 최적화되어 있으며 많은 수의 동시 연결을 처리할 수 있어 트래픽이 많은 환경에서 사용하기에 적합합니다.

  • 손쉬운 구성: vsftpd는 구성하기 쉽고 사용자가 필요에 따라 FTP 서버를 설정하고 사용자 지정하는 데 도움이 되는 포괄적인 문서 세트와 함께 제공됩니다.

  • 호환성: vsftpd는 Linux, FreeBSD 및 Solaris를 포함한 대부분의 Unix 계열 운영 체제와 호환됩니다.

전반적으로 vsftpd는 엔터프라이즈 환경, 웹 호스팅 서비스 및 안전한 파일 전송이 필요한 기타 시나리오에서 널리 사용되는 안정적이고 안전한 FTP 서버입니다.

설치하기

우분에 vsftpd 패키지를 설치합니다.

sudo apt install vsftpd –y

anonymous

익명 사용자의 접속 및 파일 업로드를 허용하도록 설정하기.

sudo /etc/vsftpd.conf

vi 에디터로 /etc/vsftpd.conf 파일 열기, anonymous 계정의 권한 변경

anonymous_enable=YES #25
write_enable=YES # 31
anon_upload_enable=YES # 40
anon_mkdir_write_enable=YES # 44

한글폴더 폴기 허용

utf8_filesystem=YES

패시브 모드

기본적으로 vsftpd는 데이터 전송에 패시브 모드를 사용합니다. 클라이언트가 수동 모드를 사용하도록 구성되지 않은 경우 서버와의 데이터 연결을 설정할 수 없어 파일 목록이 표시되지 않을 수 있습니다. 수동 모드를 사용하도록 클라이언트를 구성하거나 vsftpd 구성 파일(/etc/vsftpd.conf)에 다음 줄을 추가하여 vsftpd에서 활성 모드를 활성화할 수 있습니다.

pasv_enable=NO

익명 폴더

anonymous로 접속되는 기본 디렉터리는 /srv/ftp 이 디렉터리 안에 pub 디렉터리를 만들고 모든 사용자의 읽기, 쓰기 권한 허용합니다.

cd /srv/ftp
mkdir pub
chmod 777 pub

재시작

변경된 설정을 적용하기 위하여 vsftpd 데몬을 재시작 합니다.

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

vsftpd 데몬이 정상적으로 실행되고 있는지 확인합니다.

systemctl status vsftpd 

방화벽 허용

외부에서 FTP 서버에 접근하도록 방화벽 포트를 허용합니다.

sudo ufw allow ftp
sudo ufw reload

문제가 계속 발생시 : 원활한 외부 접속을 허용하기 위해 systemctl stop ufw 명령으로 잠시 방화벽을 끔

접속 주소 확인

ifconfig 명령으로 서버의 IP 주소 확인

poly@poly-VirtualBox:/srv/ftp$ ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::7cac:debc:82dc:b444  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:17:48:bc  txqueuelen 1000  (Ethernet)
        RX packets 56675  bytes 85372089 (85.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4359  bytes 296103 (296.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.114  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::6fee:caa9:42b4:a0e2  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:85:76:27  txqueuelen 1000  (Ethernet)
        RX packets 690  bytes 58667 (58.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 557  bytes 75170 (75.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 203  bytes 19696 (19.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 203  bytes 19696 (19.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

호스트 전용 어뎁터로 연결된 192.168.56.114를 확인할 수 있습니다.

클라이언트 접속

슬라이드39

슬라이드40

슬라이드41

슬라이드42

슬라이드43

계정별 접속

특정 계정을 사용하여 vsftpd에 대한 액세스를 허용하려면 다음 단계를 수행해야 합니다.

  • FTP 서버에 액세스하는 데 사용할 새 시스템 사용자 계정을 만듭니다. “adduser” 명령을 사용하여 새 사용자를 만들 수 있습니다. 예를 들면 다음과 같습니다.
sudo adduser ftpuser
  • passwd 명령을 사용하여 새 사용자 계정의 암호를 설정합니다.
sudo passwd ftpuser
  • 인증에 로컬 사용자 계정을 사용하도록 vsftpd를 구성합니다. 이는 vsftpd 구성 파일(/etc/vsftpd.conf)에 다음 줄을 추가하여 수행할 수 있습니다.
local_enable=YES
  • 선택적으로 사용자를 자신의 홈 디렉토리로 chroot하도록 vsftpd를 구성할 수도 있습니다. 이렇게 하면 FTP 서버에 대한 액세스가 자신의 홈 디렉토리로만 제한됩니다. 이는 vsftpd 구성 파일에 다음 줄을 추가하여 수행할 수 있습니다.
chroot_local_user=YES
allow_writeable_chroot=YES
  • vsftpd 서비스를 다시 시작하여 변경 사항을 적용합니다.
    sudo systemctl restart vsftpd
    

이 단계를 완료한 후 새 사용자 계정과 설정한 암호를 사용하여 vsftpd 서버에 연결할 수 있어야 하며 사용자는 홈 디렉토리로 제한됩니다(chrooting이 활성화된 경우).

서브목차