[FTP 서버]
Linux/Server

[FTP 서버]

0. FTP 서버란?


file transfer protocal : 파일을 전송하는 프로토콜

TCP/IP 기반으로 작동하며 well known port 20번, 21번을 사용한다.

 

20번 포트는 데이터 채널

21번 포트는 제어 채널

 

ftp 클라이언트가 서버에 접속을 하게 되면 서버의 21번 포트를 통해서 제어와 관련된 세션이 열린다.

20번 포트는 반대로 서버에서 클라이언트로 파일을 전송하기 위해 사용된다. 

 

 

 

1. Active / Passive 모드


어느쪽에서 어디로 연결하냐에 따라 모드가 달라진다.

서버에서 클라이언트 접속은 Active 모드로 ( 서버가 주도적인 )

클라이언트에서 서버 쪽으로의 접속은 Passive 모드로 ( 클라이언트가 주도적인 )

 

  • Active 모드

이미지 : 넥스트 라인

1. client가 5150포트를 사용하여, server의 21번 포트에게 5151포트로 데이터를 받겠다고 요청한다.

2. server가 요청에 응답한다.

3. server가 client 5151포트에 20번포트로  5151포트에게 접속을 요청한다.

4. client가 요청에 응답한다.

 

한 번의 요청-응답 과정이 끝나고 server가 요청하는 과정이 있다. 

이렇게 하면 server는 보안위험이 낮아지지만 client는 방화벽 설정이나 포트포워딩 작업 필요

 

 

  • Passive 모드

이미지 : 넥스트라인

1. client가 server에게 요청

2. server는 20번 포트가 아닌 다른 포트를 client에게 알려줌

3. client가 데이터 전송을 요청

4. server 응답 

 

익숙한 client 요청 -> server 응답 구조

보안 위험은 높아지지만 client는 방화벽이나 포트에 신경 쓸 필요 없음

server가 데이터 채널 포트만 열어주면 됨 

 

즉 기억해야할 건

  • server의 21번 포트는 오직 제어만을 위한 포트다. 데이터 전송은 다른 포트에서 한다.
  • 20번 포트는 active/passive에 따라 사용 유무가 결정됨
  • 20번, 21번 포트는 정해진 게 아니라 변경 가능함.

 

 

 

2. vsftpd 서버 설정


dnf -y install vsftpd 로 패키지 설치

systemctl restart/enable vftpd

systemctl stop firewalld : 방화벽 해제 

 

/etc/vsftpd/vsftpd.conf 파일 옵션들

anonymous_enable=YES # 익명 사용자 활성화
local_enable=YES # 로컬 계정 사용자 활성화
write_enable=YES # 쓰기 기능 활성화
local_umask=022 # 파일 퍼미션 정의
dirmessage_enable=YES # 디렉토리 이동 시 각 디렉토리 메시지 노출 여부
xferlog_enable=YES # 접속자들의 업로드/다운로드 로그파일 저장 여부
connect_from_port_20=YES # 데이터 전송포트 사용
xferlog_std_format=YES # 로그 파일 포맷 설정
listen=YES # 독립모드 사용 설정 
pam_service_name=vsftpd # pam 인증에 사용할 설정파일 이름
userlist_enable=YES # userlist에 있는 사용자 허용
tcp_wrappers=YES # tcp wrapper의 접근 제어를 받도록 설정

이외의 벤기능, 연결 시간 설정, 환영메세지 등 여러가지 기능 설정을 할 수 있다.

기본 설정에서

anonymous_enable=NO -> YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

로 설정

 

chown ftp.ftp /var/ftp/pub/ : 업로드할 디렉토리 소유권 변경

 

윈도우에서 파일질라다운 받고 실행

[사이트 관리자] - [암호화 : 평문 FTP만 사용] - [로그온 유형 : 익명] 변경

양 방향 전송 성공

'Linux > Server' 카테고리의 다른 글

[NFS 서버]  (0) 2021.08.04
[네임 서버]  (0) 2021.08.01
[원격 시스템 관리]  (0) 2021.07.30