ftp

메론보이·2024년 6월 5일

리눅스

목록 보기
13/17
post-thumbnail

RHEL에서 FTP 및 vsftpd 설정 및 파일 전송 방법

1. FTP 및 vsftpd 개념 및 정의

FTP (File Transfer Protocol)

  • 정의: 파일 전송 프로토콜로, 인터넷을 통해 파일을 전송하는 데 사용됩니다.
  • 개념: 클라이언트와 서버 간의 파일 전송을 위해 TCP/IP 네트워크를 사용하는 표준 네트워크 프로토콜입니다.
  • 용도: 주로 웹 서버에 파일을 업로드하거나 다운로드할 때, 대규모 파일 전송, 데이터 백업 등에 사용됩니다.

vsftpd (Very Secure FTP Daemon)

  • 정의: FTP 서버 소프트웨어 중 하나로, 보안과 성능을 중시합니다.
  • 개념: 리눅스 및 유닉스 시스템에서 작동하며, 높은 보안성을 제공하는 FTP 서버 데몬입니다.
  • 용도: 안전하고 효율적인 FTP 서버를 구축하고자 할 때 사용됩니다.

언제, 왜, 어떻게 사용하는지

FTP

  • 언제 사용하는가: 파일을 인터넷을 통해 전송할 때, 특히 대규모 파일 전송이나 서버 간 파일 동기화가 필요할 때.
  • 왜 사용하는가:
    • 대용량 파일 전송 가능
    • 사용자와 그룹 관리를 통해 접근 제어 가능
  • 어떻게 사용하는가:
    • FTP 클라이언트 소프트웨어 (예: FileZilla, WinSCP)를 사용하여 서버에 접속
    • FTP 서버 소프트웨어를 서버에 설치하고 설정하여 클라이언트 요청을 처리

vsftpd

  • 언제 사용하는가: 보안이 중요한 FTP 서버를 운영할 때.
  • 왜 사용하는가:
    • 높은 보안성 (SSL/TLS 지원)
    • 높은 성능과 안정성
  • 어떻게 사용하는가:
    • 리눅스/유닉스 시스템에 설치하고, 설정 파일을 통해 서버를 설정 (예: /etc/vsftpd.conf)
    • 사용자 계정 및 권한 설정
    • SSL/TLS 설정을 통해 보안 강화

장점과 단점

FTP

  • 장점:
    • 간단한 설정과 사용법
    • 다양한 클라이언트 지원
    • 대용량 파일 전송에 적합
  • 단점:
    • 보안에 취약 (기본적으로 암호화되지 않은 평문 데이터 전송)
    • 방화벽 설정이 까다로울 수 있음

vsftpd

  • 장점:
    • 높은 보안성 (SSL/TLS 지원)
    • 뛰어난 성능과 안정성
    • 다중 연결 처리 가능
  • 단점:
    • 초기 설정이 복잡할 수 있음
    • FTP 자체의 보안 문제는 해결하지 못함 (FTP의 기본적인 보안 취약점)

사용 예시와 작동 원리

사용 예시

  • 웹 서버 파일 업로드: 웹 개발자가 웹 서버에 최신 웹사이트 파일을 업로드할 때.
  • 데이터 백업: 시스템 관리자들이 중요한 데이터를 다른 서버로 백업할 때.
  • 파일 공유: 회사 내부에서 대용량 파일을 공유할 때.

작동 원리

FTP의 작동 원리
  1. 제어 연결: 클라이언트가 서버에 접속하여 사용자 인증을 수행합니다.
  2. 데이터 연결: 인증 후, 실제 파일 전송을 위한 데이터 연결이 생성됩니다.
  3. 파일 전송: 파일 업로드/다운로드가 수행됩니다.
vsftpd의 작동 원리
  1. 설정 파일 로드: vsftpd는 /etc/vsftpd.conf 파일에서 설정을 읽어옵니다.
  2. 사용자 인증: 클라이언트가 접속 시 사용자 인증을 수행합니다. (로컬 사용자 또는 가상 사용자)
  3. SSL/TLS 연결: 보안 설정이 되어 있는 경우 SSL/TLS를 통해 암호화된 연결을 설정합니다.
  4. 파일 전송: 안전한 연결을 통해 파일 업로드/다운로드가 수행됩니다.

2. RHEL에서 FTP 및 vsftpd 설정

A 컴퓨터: FTP 서버 설정 (B 컴퓨터에서 파일을 받을 서버)

vsftpd 설치

sudo yum install -y vsftpd

vsftpd 서비스 시작 및 자동 시작 설정

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

방화벽 설정 (FTP 포트 열기)

sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload

SELinux 설정 (FTP 활성화)

sudo setsebool -P ftpd_full_access 1
sudo setsebool -P allow_ftpd_full_access 1

vsftpd 설정 파일 수정

sudo vi /etc/vsftpd/vsftpd.conf

다음 설정을 추가 또는 변경합니다:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=NO
allow_writeable_chroot=YES

vsftpd 서비스 재시작

sudo systemctl restart vsftpd

FTP 사용자 추가

sudo useradd -m ftpuser
sudo passwd ftpuser

사용자 홈 디렉토리의 권한 설정:

sudo chmod a-w /home/ftpuser
sudo mkdir /home/ftpuser/uploads
sudo chown ftpuser:ftpuser /home/ftpuser/uploads

B 컴퓨터: FTP 클라이언트를 사용하여 A 컴퓨터로 파일 전송

FTP 클라이언트 설치 (필요시)

sudo yum install -y ftp

FTP 서버에 접속

ftp <A_컴퓨터의_IP_주소>

예:

ftp 192.168.111.100

사용자 인증

FTP 서버에 접속하면 ftpuser와 설정한 비밀번호를 입력합니다.

업로드 디렉토리로 이동

cd uploads

파일 전송

put /path/to/local/a.txt

예:

put a.txt

3. 전체 과정 예시

A 컴퓨터 (FTP 서버) 설정

  1. vsftpd 설치 및 설정:

    sudo yum install -y vsftpd
    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd
    sudo firewall-cmd --permanent --add-service=ftp
    sudo firewall-cmd --reload
    sudo setsebool -P ftpd_full_access 1
    sudo setsebool -P allow_ftpd_full_access 1
    sudo vi /etc/vsftpd/vsftpd.conf
    # 위에서 설명한 설정 추가
    sudo systemctl restart vsftpd
  2. FTP 사용자 추가:

    sudo useradd -m ftpuser
    sudo passwd ftpuser
    sudo chmod a-w /home/ftpuser
    sudo mkdir /home/ftpuser/uploads
    sudo chown ftpuser:ftpuser /home/ftpuser/uploads

B 컴퓨터 (FTP 클라이언트) 설정 및 파일 전송

  1. FTP 클라이언트 설치 (필요시):

    sudo yum install -y ftp
  2. A 컴퓨터의 FTP 서버에 접속 및 파일 전송:

    ftp 192.168.111.100
    # 사용자 인증 후
    cd uploads
    put a.txt

FTP 세션의 전체 흐름 예시

ftp> cd uploads
250 Directory successfully changed.
ftp> put a.txt
local: a.txt remote: a.txt
227 Entering Passive Mode (192,168,111,100,xx,xx).
150 Ok to send data.
226 Transfer complete.

이 과정을 통해 B 컴퓨터에서 A 컴퓨터로 파일을 안전하게 전송할 수 있습니다. A 컴퓨터는 FTP 서버로 설정되고, B 컴퓨터는 클라이언트로 설정되어 파일을 전송합니다.

0개의 댓글