본문 바로가기
IT/리눅스 이론

리눅스 vsftpd 설정하는 방법과 ftp 서버 만들기에서 파일업로드까지

by 꾸꾸웍스 2022. 5. 25.
반응형

 


리눅스 vsftpd 설정하는 방법과 ftp 서버 만들기에서 파일업로드까지


 

 

 

※ 목차

1. 리눅스 vsftpd란?
2. 리눅스 vsftpd 패키지 설치
3. 리눅스 vsftpd 디렉토리 설명
4. 리눅스 vsftpd config 파일 설정

5. 리눅스 vsfpd 서비스 시작
6. ftp 프로그램으로 파일 업로드

 

 

 

1. 리눅스 vsftpd란?

 

리눅스 vsftpd는 Very Secure File Transfer Protocol Daemon의 약자로 FTP의 보안을 강조한 파일 전송 프로토콜입니다. 파일 전송이 주 목적인 FTP 서비스는 유닉스 또는 리눅스 계열에서 vsftpd로 사용합니다. 따라서 유닉스 또는 리눅스의 운영체제에서 사용자 계정과 사용자 계정의 암호를 가진 계정이 존재해야 vsftpd를 이용할 수 있습니다.

 

또한 TCP/IP 프로토콜을 가지고 파일을 업로드 및 다운로드를 하기 때문에 여러 파일을 연속으로 송수신해야 된다면 서버와 지속적인 네트워크 연결 상태를 유지해야 합니다. 즉, 네트워크를 통해 데이터가 통로를 통하여 이동하게 됩니다.

 

 

리눅스 서버의 vsftpd를 설치하였다면 리눅스 서버는 ftp 서버가 되는 것이고 ftp서비스를 이용하기 위해 ftp프로그램을 이용하여 파일을 업로드 또는 다운로드를 합니다. 이에 대표적인 ftp서비스 프로그램은 파일질라, ftp 보이저, winscp 등이 있습니다. 이 글에서는 리눅스에 vsftpd를 설치 후 파일질라를 통해 리눅스 서버에 파일을 업로드 및 다운로드를 시도하는 예시를 보여드리겠습니다.

 

 

 

2. 리눅스 vsftpd 패키지 설치

 

리눅스 서버에서 레포지토리(repository)구성이 안되어 있어 패키지 설치가 안된다면 아래 링크의 iso 파일을 이용하여 레포지토리 구성하는 법을 참고하세요

 

↓↓리눅스 레포지토리(repository) 구성↓↓

 

https://rhrhth23.tistory.com/63

 

리눅스 외부 인터넷 없이 레포지토리 구성하기 - linux repository

리눅스 외부 인터넷 없이 레포지토리 구성하기 - linux repository 레포지토리를 구성하는 2가지 방법 리눅스 서버를 처음 구성하다 보면 아주 기본적인 패키지들만 설치가 되어있습니다. 원하

rhrhth23.tistory.com

 

리눅스 vsftpd를 설치하기 전 vsftpd가 사용 중인 리눅스 서버에 설치가 되어있는지 먼저 확인을 해야 됩니다. 확인 방법은 rpm 명령어에 -qa 옵션을 이용해 리눅스 vsftpd가 설치되었는지 확인합니다. grep명령어는 rpm -qa 명령어로 나온 설치된 패키지 목록 중 vsftpd라는 글자가 포함된 결과값만 추출하여 터미널 화면에 표시합니다.

 

※ rpm 명령어의 -qa 옵션 간단 설명

  • rpm -q 옵션은 시스템에 설치된 특정 패키지 정보를 확인
  • rpm -a 옵션은 시스템에 설치된 모든 정보를 확인

 

rpm -qa | grep vsftpd

 

 

 

→ 사용 중인 리눅스 시스템에 vsftpd가 설치되지 않았다면 아무런 출력도 하지 않습니다.

※ vsftpd 패키지가 설치되어있다면 목차 '3. 리눅스 vsftpd config 파일 수정'으로 이동하셔도 됩니다.

 

사용 중인 리눅스 서버에 vsftpd 설치

 

리눅스 서버에서 yum 명령어를 이용하여 vsftpd를 설치를 진행합니다. yum 명령어를 사용 시 -y 옵션(yes)을 자주 사용하는데 설치 유무를 물어볼 때 y를 직접 입력하지 않아도 -y옵션을 사용했기 때문에 바로 설치가 진행됩니다. 하지만 본인이 개인적으로 사용하는 리눅스 서버가 아닐 시 패키지를 설치할 때 의도하지 않은 의존되는 패키지가 설치가 되어 기존 시스템의 영향을 줄 수도 있으니 항상 어떤 패키지를 설치할 때 항상 의존되는 패키지를 확인하시기 바랍니다.

 

yum install vsftpd

 

 

 

설치를 진행하면 vsftpd를 설치하기 위한 패키 지명과 버전, 패키지 사이즈 크기를 나타냅니다. 또한 설치를 진행하겠다면 y를 입력 진행하지 않겠다면 n을 입력하세요

 

 

y를 입력 후 리눅스 vsftpd 패키지가 성공적으로 설치되었습니다.

 

 

위 사진과 같이 Package ~~~~ already installed and latest version이라는 문구가 나타났다면 이미 패키지가 기존에 설치가 되었다는 의미입니다. 패키지가 제대로 설치되었는지는 아래와 같이 rpm 명령어를 통해 확인할 수 있습니다.

 

 

 

 


 

반응형

 


 

 

 

3. 리눅스 vsftpd 디렉토리 설명

 

리눅스 vsftpd 디렉토리

리눅스 vsftpd 설치가 완료되었다면 /etc 디렉토리 하위에 vsftpd 디렉토리가 생성이 됩니다.

/etc/vsftpd

 

 

/etc/vsftpd/ftpusers

ftpusers 파일은 리눅스 내 ftp 서비스를 이용하는 사용자를 제한하거나 접근 허용을 하는 파일 중 한 개입니다. 파일을 수정하지 않았다면 리눅스에서 생성한 사용자 계정 리스트가 존재합니다.  이에 대한 설정 파일은 /etc/pam.d/vsftpd 파일에 sense값을 deny으로 설정하면 ftpusers 파일에 있는 사용자 계정 리스트들만 ftp 서비스를 제한하고 allow로 설정하면 ftpuser 파일에있는 사용자 계정 리스트들만 접근을 허용하게 됩니다.

 

 

/etc/vsftpd/user_list

user_list 파일은 리눅스 내 ftp 서비스를 이용하는 사용자를 제한하거나 접근 허용을 하는 파일 중 한 개입니다. user_list 파일에도 파일을 수정하지 않았다면 리눅스에서 생성한 사용자 계정 리스트가 존재합니다. 이에 대한 설정 파일은 /etc/vsftpd/vsftpd.conf 파일의 설정으로 인해 user_list에 등록된 사용자들을 ftp 서비스를 제한하거나 접근을 허용하게 합니다.

 

vsftpd.conf 파일에서 아래처럼 선언을 해주면 user_list 파일에 있는 사용자 리스트들에 대해 ftp 서비스 접속을 제한합니다.

root@server # cat /etc/vsftpd/vsftpd.conf | grep userlist
userlist_enable=yes
userlist_deny=yes

 

vsftpd.conf 파일에서 아래 처럼 선언을 해주면 user_list 파일에 있는 사용자 리스트들에 대해 ftp 서비스 접속을 허용합니다.

root@server # cat /etc/vsftpd/vsftpd.conf | grep userlist
userlist_enable=yes
userlist_deny=no

 

 

 

4. 리눅스 vsftpd config 파일 설정

 

/etc/vsftpd/vsftpd.conf

리눅스 vsftpd의 핵심 파일로 대부분의 설정은 vsftpd.conf 파일에서 편집합니다. vsftpd.conf파일에 대해 어떠한 설정도 하지 않았다면 기본 default 설정 값은 아래와 같습니다.(앞에 주석 처리된 부분은 제거)

 

 

앞부분에 언급했듯이 리눅스에서 사용하는 vsftpd의 주된 목적은 네트워크 연결 상태를 유지하며 파일을 전송하는 것이기 때문에 중요한 설정 몇 가지에 대해 설명드리겠습니다.

 

 

local_umask=002

리눅스 서버 자체에서 파일이나 디렉토리를 만들 때 사용되는 umask 값리눅스에서 사용하는 vsftp의 ftp 서비스를 이용할 때의 umask 값은 다르게 적용됩니다. vsftpd.conf 파일의 umask값을 002로 설정을 한 이유는 같은 서버를 사용하는 여러 명의 사용자가 존재한다고 할 때 각자 사용자와 사용자 그룹이 다르면 권한 문제가 생길 우려가 있습니다. 따라서 사용자는 각자 달라도 같은 그룹으로 묶어준 다음 vsftpd.conf 파일에서 umask를 002로 설정해준다면 각자 다른 사용자들이 파일을 업로드 할시 업로드한 파일에 그룹 권한까지 읽고 쓸 수 있게 권한(파일 기준 → -rw-rw-r--)이 설정되어 각자 다른 사용자가 서로의 파일을 읽을 수 있습니다.

 

idle_session_timeout=600

이 설정은 세션이 취소되는 시간을 설정하는 값입니다. 활동이 발생하지 않으면 유휴 상태로 돌아가 설정을 한 값으로 세션이 만료되어 새 활동을 할 수 없게 합니다. 600초의 값은 vsftpd.conf의 default값으로 주석처리가 되어있습니다.

 

data_connection_timeout=360

ftp로 데이터를 전송하는 시간을 설정하는 값으로 데이터를 전송할 때 접속이 끊기는 현상이 발생한다면 이 설정값을 주석 처리하거나 설정값보다 크게 설정을 합니다. vsftpd.conf의 default값은 300초입니다.

 

listen_port=2121

리눅스 vsftpd 서비스 포트에 대한 설정값입니다. 기본 포트는 21이며 포트를 변경하는 이유는 보안상의 이유로 포트를 변경하는 것을 추천드립니다. 포트로 공격하는 예는 외부로부터 공격을 무한으로 시도할 때 포트 번호가 낮게 되어있으면 포트가 쉽게 뚫리기 때문입니다.

 

 

 

5. 리눅스 vsfpd 서비스 시작

 

리눅스에서 vsftpd의 패키지를 설치하고 설정 파일에 대한 설정이 끝났으면 vsftpd 서비스를 시작해야 됩니다. vsftpd를 시작하기 전 서버가 재부팅이 돼도 자동으로 서비스를 시작할 수 있도록 enable 설정을 먼저 해주는 것을 추천드립니다. 또한 systemctl 명령어를 이용해 서비스를 기동 하는데 systemctl 명령어가 설치되지 않았다면 service 명령어를 이용하시면 됩니다.

 

service {서비스명} {start|stop|restart|status}

 

 

vsftpd 서비스 시작

vsftpd 서비스에 대한 현재 상태를 출력하는 명령어입니다.

systemctl status vsftpd

 

 

 

 

vsftpd 서비스 enable

vsftpd 서비스를 재부팅 후에도 자동실행될 수 있도록 enable을 설정합니다.

systemctl enable vsftpd

 

리눅스 vsftpd 서비스에 enable을 설정하였다면 systemd서비스의 심볼릭 링크로 생성되었다는 문구를 출력합니다. 또한 systemctl status vsftpd 명령을 다시 입력하면 enable이 설정된 것을 볼 수 있습니다.

 

 

 

vsftpd 서비스 시작

리눅스 vsftpd 서비스를 시작합니다.

systemctl start vsftpd

 

 

vsftpd 서비스를 시작 후 systemctl status vsftpd 명령을 입력하면 서비스 상태가 active인 것을 확인할 수 있습니다.

 

 

 


 

 


 

 

 

6. ftp 프로그램으로 파일 업로드

 

리눅스 vsftpd 패키지를 설치하고 conf파일을 수정 후 서비스를 기동 하는 모든 과정을 마쳤으면 실제로 파일 업로드를 해보는 과정까지 해보겠습니다. ftp 프로그램은 파일질라를 사용했으며 파일질라 다운로드 링크는 아래에 있습니다. 파일 질라 다운로드는 정식 서비스 홈페이지가 아닐 시 다른 프로그램이 추가로 다운로드될 수 있으니 정식 홈페이지에서 다운로드하시는 것을 추천드립니다.

 

↓↓파일질라 다운로드(FileZilla download)↓↓

 

https://filezilla-project.org/download.php?platform=win64 

 

Download FileZilla Client for Windows (64bit x86)

Download FileZilla Client for Windows (64bit x86) The latest stable version of FileZilla Client is 3.59.0 Please select the file appropriate for your platform below. Prerelease versions To download the latest prerelease version (currently 3.60.0-rc1), go t

filezilla-project.org

 

파일질라 프로그램 설명

 

 

1) 파일질라 프로그램의 메뉴 탭

2) ftp서비스를 이용할 서버의 정보 입력

  • 호스트는 IP 정보를 입력
  • 사용자명은 리눅스 서버의 사용자 계정을 입력
  • 비밀번호는 사용자 계정의 비밀번호 입력
  • 포트는 vsftpd.conf 파일의 포트번호(2121)를 입력(설정하지 않았다면 기본 default 포트 입력)

3) ftp서비스 이용할 서버로 접속을 시도할 때 보이는 상태 화면(로그처럼 보임)

4) ftp 클라이언트로 현재 사용 중인 PC 또는 서버

  • 윈도우 PC에서 파일질라 프로그램을 이용해 ftp가 설치된 리눅스서버로 이동한다면
    4번에 해당하는 local은 윈도우 PC입니다. (파일 탐색기 창처럼 보임)

5) 접속을 성공하였다면 ftp가 설치된 서버의 정보가 나타남

 

 

파일질라 ftp 서버 접속 성공

 

 

각 서버의 IP와 사용자 계정 정보를 입력하여 '빠른 연결'을 눌러 정상 접속된 사진입니다.

 

 

파일질라 파일 업로드 및 다운로드

 

 

파일을 마우스로 드래그하거나 마우스 우클릭으로 업로드 및 다운로드를 진행할 수 있습니다.

 

 

파일질라 파일명 깨짐 오류

 

파일질라 프로그램을 이용하여 리눅스 서버에 파일을 업로드하거나 다운로드를 할때 파일명이 깨져서 보이거나 한국어가 아닌 다른 언어로 보인다면 파일질라 프로그램에서 언어 설정을 변경하여 다시 시도해 볼 수 있습니다.

 

우선 파일질라 프로그램의 상단탭의 메뉴를 클릭합니다.

 

 

오른쪽 상단탭의 문자셋을 클릭합니다.

 

파일질라 프로그램의 인코딩 값을 수정합니다. 어떠한 값이 입력되지 않았으면 원하는 값으로 설정합니다.

 

 

위 사진은 다른 언어 설정이 되어있는 것처럼 예시를 보여준 것임을 참고하시길 바랍니다. 파일질라 프로그램에는 인코딩이 euckr이며 리눅스 서버의 인코딩은 en_US.UTF=8로 설정되어 있는 예시를 나타냈습니다.

 

 

 

 


 

반응형
그리드형

댓글