본문 바로가기
OS/Linux

[Linux] FTP 서버 구성, Filezilla

by ganyga 2024. 9. 19.

환경

Windows에서 WSL로 구성한 Ubuntu22.04 Server


FTP

- FTP(File Transfer Protocol) : 파일을 전송하기 위한 서비스

- vsftpd는 우분투에서 제공해줌

- vsftpd(Very Secure FTPD)는 우분투에서 기본적으로 제공되며, 리눅스와 유닉스 환경에서 보안과 성능이 우수한 FTP 서버로 인정받고 있음

 

## server
> apt-get -y install vsftpd

> vi /etc/vsftpd.conf
25 : anonymous_enable=YES 변경 # 일반적으로 anonymous는 다운로드만 되게끔 하는 것이 보안상 일반적임
31 : wirte_enable=YES 주석 풀기
40 : anon_upload_enable=YES 주석 풀기
44 : anon_mkdir_write_enable=YES 주석 풀기

 

 

 

- /srv/ftp/ 가 anonymous가 들어오면 확인하는 홈 폴더임

- anonymous는 일반 사용자이므로 쓰기 권한이 없음 r-x

root@LGE-corp:~# ls -l /srv/
total 4
drwxr-xr-x 2 root ftp 4096 Sep 19 17:25 ftp

 

일반적으로 /srv/ftp 아래에 pub라는 폴더를 만듦

root@LGE-corp:~# cd /srv/ftp/
root@LGE-corp:/srv/ftp# pwd
/srv/ftp

root@LGE-corp:/srv/ftp# mkdir pub
root@LGE-corp:/srv/ftp# ls
pub

# 아무나 쓸 수 있도록 권한 777로 주기(익명 사용자가 들어왔을 때 사용할 폴더)
root@LGE-corp:/srv/ftp# chmod 777 pub/
root@LGE-corp:/srv/ftp# ls -l
total 4
drwxrwxrwx 2 root root 4096 Sep 19 17:34 pub

# test할 파일 생성
root@LGE-corp:/srv/ftp/pub# echo "test" >> file1.txt
root@LGE-corp:/srv/ftp/pub# ls
file1.txt
root@LGE-corp:/srv/ftp/pub# cat file1.txt
test

# ftp restart후 enable
root@LGE-corp:/srv/ftp/pub# systemctl restart vsftpd
root@LGE-corp:/srv/ftp/pub# systemctl enable vsftpd
Synchronizing state of vsftpd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable vsftpd

root@LGE-corp:/srv/ftp/pub# systemctl status vsftpd
● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-09-19 17:36:59 KST; 1min 7s ago
   Main PID: 29081 (vsftpd)
      Tasks: 1 (limit: 9302)
     Memory: 848.0K
     CGroup: /system.slice/vsftpd.service
             └─29081 /usr/sbin/vsftpd /etc/vsftpd.conf

Sep 19 17:36:59 LGE-corp systemd[1]: Starting vsftpd FTP server...
Sep 19 17:36:59 LGE-corp systemd[1]: Started vsftpd FTP server.

 

ftp 포트 열어주기 21번 열어줘도 되고 ftp라고 해서 열어줘도 됨

root@LGE-corp:/srv/ftp/pub# ufw allow ftp
Rules updated
Rules updated (v6)

 

filezilla client 설치

호스트에 server IP 넣어주기 : 172.23.186.244

사용자명 : anonymous

비밀번호 : 아무거나 입력

포트 : 21번인데 생략해도 됨

root@LGE-corp:/srv/ftp/pub# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.23.186.244  netmask 255.255.240.0  broadcast 172.23.191.255
        inet6 fe80::215:5dff:fe4b:db72  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:4b:db:72  txqueuelen 1000  (Ethernet)
        RX packets 945  bytes 587728 (587.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 225  bytes 57621 (57.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

리모트 연결된 거 확인하기

- pub가 anonymous의 FTP 홈 폴더

 

로컬 사이트 > 디렉터리 만들기 > C:\download

 

리모트 사이트에 있는 file1.txt를 마우스로 로컬 사이트에 끌면 1초 만에 옮겨짐

 

로컬 컴퓨터에 C 드라이브에 들어가면 file1.txt 파일이 옮겨짐을 확인할 수 있음

 

파일 업로드 방법

- download 경로에 아무 파일이나 추가

 

Filezilla가서 새로고침하기

 

리모트 서버로 끌어서 업로드하기

 

리모트 서버에서 파일 업로드 확인하기

root@LGE-corp:/srv/ftp/pub# ls -l
total 12532
-rw------- 1 ftp  ftp  12826192 Sep 19 17:57 FileZilla_3.67.1_win64_sponsored2-setup.exe
-rw-r--r-- 1 root root        5 Sep 19 17:36 file1.txt

FTP Client 명령어로 구성한 후 FTP Server 접속

## server-B

# ftp client 설치
> apt-get install lftp

# lftp server IP 접속
> lftp 172.23.186.244

lftp 172.23.186.244:~>
lftp 172.23.186.244:/> cd pub

# 파일 보내기
lftp 172.23.186.244:/pub> put file2

# 파일 가져오기
lftp 172.23.186.244:/pub> get file1

# ftp 서버 나가기
lftp 172.23.186.244:/pub> bye

vsftpd.conf 옵션

  • anonymous_enable : anonymous(익명) 사용자의 접속을 허가할지 설정
  • local_enable : 로컬 사용자의 접속 허가 여부를 설정
  • write_enable : 로컬 사용자가 저장, 삭제, 디렉터리 생성 등의 명령을 실행하게 할 것인지 설정 (anonymous 사용자는 해당 없음)
  • anon_upload_enable : anonymous 사용자의 파일 업로드 허가 여부를 설정
  • anon_mkdir_write_enable : anonymous 사용자의 디렉터리 생성 허가 여부를 설정
  • dirlist_enable : 접속한 디렉터리의 파일 리스트를 보여줄지 설정
  • download_enable : 다운로드의 허가 여부를 설정
  • listen_port : FTP 서비스의 포트 번호를 설정(기본 : 21번)

참고자료

- 이것이 우분투 리눅스다 13장 : vsFTPD 서버 구축, ProFTPD 서버 구축

https://www.inflearn.com/course/lecture?courseSlug=%EC%9D%B4%EA%B2%83%EC%9D%B4-%EC%9A%B0%EB%B6%84%ED%88%AC-%EB%A6%AC%EB%88%85%EC%8A%A4%EB%8B%A4&unitId=6302&tab=curriculum

 

학습 페이지

 

www.inflearn.com