[OS] Linux FTP

hugingstar·2025년 12월 26일

Operating system

목록 보기
17/34
post-thumbnail

이번 글에서는 Linux 환경에서 FTP(File Transfer Protocol)를 사용해서 파일 전송 환경을 구축한다.

FTP는 단순히 파일을 보내는 개념에서 나아가 자료(=파일)를 공유하고 관리하는 프로토콜이다. 예를 들어서 대용량 로그 파일을 수집하는 서버가 있다고 했을 때 10대의 서버에서 발생하는 접속 로그들을 한곳에서 종합적으로 관리하고 싶을 때 사용할 수 있다. 각 서버에서 일일이 접속할 필요없이 중앙 로그 서버에서 FTP 계정으로 업로드하도록 설정한다. 생각만해도 희열이 느껴진다.

다른 방법으로는 내가 어떤 강의를 하는 강사인데 이메일로 보내기에는 너무 크거나, 보안상 메신저를 쓰기도 어려운 자료를 가지고 있을 때 FTP를 활용한다. 공급자가 GB 이상 분량의 고화질 교육자료나 동영상을 공유할 때 FTP 전용 계좌를 생성하고나서 수요자에게 계정을 알려준다. 수요자는 그 곳에 들어가서 더욱 빠르게 파일을 받을 수 있다.

그럼 어떻게 구축할 수 있을까?

1. FTP 공급자(파일을 공유하고 싶은 사람)

FTP 공급 환경을 만드는 것은 역시 IP 설정에서부터 시작한다. IP 설정은 10.17.0.21/8로 설정했다. 이거는 공급자의 계정과도 같기 때문에 잘 기억해둔다.

편집과 환경 구축을 편하게 하기 위해서 모바에서도 접속한다.(ssh로 새로운 세션을 만들면 된다.)

FTP 환경을 구축할 때 사용하는 패키지는 vsftpd 이다.

dnf install vsftpd

다운로드가 완료되었으면 vsftpd를 활성화한다.

systemctl start vsftpd
systemctl status vsftpd

Netstat을 사용해서 ftp의 네트워크 상태를 확인한다.

netstat -antp | antp ftp

2. FTP 수요자(공유받을 사람)

FTP를 공유받을 사람은 알드라이브를 사용해서 접속할 수 있다. 윈도우 10 클라이언트를 FTP 공유받기 위해서 하나 새롭게 만들었다. rocky라는 사이트를 추가했다. FTP는 포트 21번을 통해서 들어간다. FTP 공급자는 10.17.0.21:21으로 파일을 공급하는 것이다.

이 화면은 FTP 공급자와 연결이 된 화면이다.

참고로 알드라이브를 연결할 때 TCP 통신을 사용하기 때문에 3Way hand shake가 일어난다.

Three-way handshake : TCP 장치들 사이에 논리적인 접속을 성립(establish)하기 위한 방법

Client > Server : TCP SYN
Server > Client : TCP SYN ACK
Client > Server : TCP ACK

윈도우 10 클라이언트에서 바탕화면에 텍스트 파일 하나 만들고 알드라이브에 업로드했다.

계정을 알고있을 떄는 업로드 테스트까지는 되었는데 진짜 공유를 하고 싶다면은 익명인 상태에서도 다운로드/업로드가 모두 성공되어야 하지 않을까?

3. FTP 다운로드 테스트

리눅스 웹서버는 기본적으로 익명(Anonymous) 접속은 허락하고 있지 않다. 로그인 그래서 익명에게도 접속 권한을 부여해야 한다.

vi /etc/vsftpd/vsftpd.conf
:se nu
12 anonymouous_enable=YES

이렇게 하면 익명 로그인이 허락된다. 익명 로그인 부분을 체크하고 접속해본다.

알드라이브에 들어가졌다. 아까랑은 조금 다른 상태인데 뭔가 막혀있는 것같기도 하고 더욱 자세하게 분석해본다.

첫번째 증상으로는 ID/PW 모두 입력하고 들어갈 때와 달리 파일 업로드가 안된다.

알드라이브 환경 설정 부분을 참고하여 설정한다.

다운로드 테스트 익명은 왜 업로드는 안될까? 현재 상태를 파악하기 위해서 FTP 공급자 PC(10.17.0.21)에서 test2.txt 파일을 만들어서 공유가 되는지를 먼저 확인한다.

touch text2.txt

클라이언트에서 확인해보니 test2.txt가 들어왔다.

다운로드도 깔끔하게 되었다.

다시 FTP 공급자 PC로 가서 익명이 업로드가 왜 안되는지를 자세히 살펴보고 어떻게 변경하는지를 살펴본다.

vi /etc/vsftpd/vsfrpd.conf

100번과 101번에 있는 주석을 풀어준다. 노축시키는 최상위 폴더를 조절하는 것이다. 아래에 처럼 수정해준다.

chroot_local_user=YES
allow_writable_chroot=YES
#chroot_list_enable=YES

vsftpd를 다시한번 실행시켜본다.

systemctl restart vsftpd

알드라이브 최상위처럼 보이지만, home 디렉토리이다.

home보다 더 상위 디렉토리에 접근할려고 하면 접근이 제한된다.

0개의 댓글