웹사이트 검색

FTP 대신 SFTP를 사용하도록 ProFTPd를 구성하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 Ubuntu 버전에 대해 설명합니다. 현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 14.04로 업그레이드합니다.
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드
  • 서버 데이터를 지원되는 버전으로 마이그레이션

이유:

대신 참조:

소개

FTP 또는 파일 전송 프로토콜은 로컬 서버와 원격 서버 간에 파일을 전송하는 일반적인 방법입니다. 과거에는 FTP가 선호되는 전송 방법이었지만 일반 텍스트로 인증하기 때문에 안전하지 않습니다.

ProFTPd는 FTP 대신 안전한 FTP 대안인 SFTP 프로토콜을 사용하도록 구성할 수 있는 널리 사용되는 FTP 서버입니다. 이 문서에서는 FTP의 불안정성을 방지하기 위해 이 프로토콜을 사용하도록 ProFTPd를 구성하는 방법을 보여줍니다.

Ubuntu 12.04 VPS에서 이를 구성하는 방법을 보여주지만 대부분의 배포판은 비슷한 방식으로 작동해야 합니다.

ProFTPd 설치

ProFTPd 소프트웨어는 Ubuntu의 기본 리포지토리에 있습니다. 다음을 입력하여 설치할 수 있습니다.

sudo apt-get update && sudo apt-get install proftpd

설치 중 프롬프트가 표시되면 "독립형\을 선택하십시오.

설치한 후 몇 가지 기본 구성 변수를 편집해야 합니다. 텍스트 편집기에서 루트 권한으로 ProFTPd 구성 파일을 엽니다.

sudo nano /etc/proftpd/proftpd.conf

도메인 이름 또는 IP 주소와 일치하도록 ServerName 매개변수를 변경합니다.

ServerName      "yourDomainOrIPAddress"

DefaultRoot 매개변수 앞에서 #를 제거하여 주석 처리를 제거하십시오.

DefaultRoot     ~

파일을 저장하고 닫습니다.

ProFTPd로 SFTP 액세스 구성

이제 SFTP를 사용하도록 서비스를 구성해야 합니다.

기본 파일은 추가 구성을 위해 conf.d 하위 디렉토리를 찾습니다. SFTP를 사용할 수 있도록 파일을 생성합니다.

sudo nano /etc/proftpd/conf.d/sftp.conf

ProFTPd는 Apache와 동일한 형식으로 구성할 수 있습니다. Apache에 익숙하다면 이것은 친숙해 보일 것입니다. 익숙하지 않은 경우 쉽게 알아낼 수 있습니다.

다음을 복사하여 파일에 붙여넣습니다.

<IfModule mod_sftp.c>

        SFTPEngine on
        Port 2222
        SFTPLog /var/log/proftpd/sftp.log

        # Configure both the RSA and DSA host keys, using the same host key
        # files that OpenSSH uses.
        SFTPHostKey /etc/ssh/ssh_host_rsa_key
        SFTPHostKey /etc/ssh/ssh_host_dsa_key

        SFTPAuthMethods publickey

        SFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u

        # Enable compression
        SFTPCompression delayed

</IfModule>

SFTP 구성 해체

파일을 더 잘 이해할 수 있도록 파일을 구성 요소 조각으로 분해해 보겠습니다.

SFTP 모듈을 사용할 수 있는 경우에만 구성 옵션이 적용되도록 전체 섹션이 IfModule 태그로 둘러싸여 있습니다.

  • SFTPEngine 켜기: 서버의 SFTP 기능을 활성화합니다.\n
  • 포트 2222: SFTP 연결이 허용되는 포트를 지정합니다. SSH는 이미 포트 22에서 연결을 찾고 있으므로 다른 포트를 원합니다.\n
  • SFTPLog: 생성될 로그 파일의 위치를 구성합니다.\n
  • SFTPHostKey: 이 두 줄은 SSH 호스트 키를 가리킵니다. 이것이 서버가 클라이언트에게 자신을 식별하는 방법입니다. 대부분의 경우 사용한 라인이 정확해야 합니다.\n
  • SFTPAuthMethods: 이 행은 서버가 SSH 키와의 연결 수락하도록 구성합니다.\n
  • SFTPAuthorizedUserKeys: 이 매개변수는 누군가를 인증하는 데 사용할 수 있는 SFTP 키의 위치를 지정합니다. %u 부분은 인증 사용자의 이름을 대체합니다.\n
  • SFTPCompression 지연됨: 파일 전송 중에 사용될 압축 메커니즘을 설정합니다.\n

키 기반 인증 구성

ProFTPd는 SSH 키를 사용하여 사용자를 인증할 수 있지만 RFC4716 형식을 사용하려면 키를 변환해야 합니다. 운 좋게도 SSH 제품군에는 이러한 파일을 기본적으로 변환할 수 있는 기능이 있습니다.

다음 파일을 보관할 디렉토리를 생성하여 시작합니다.

sudo mkdir /etc/proftpd/authorized_keys

이제 현재 서버에 로그인하는 데 사용되는 공개 키를 변환해야 합니다. 사용자가 한 명뿐인 경우 다음 명령을 사용할 수 있습니다.

<예비>

사용자가 여러 명이고 로그인 자격 증명을 구분해야 하는 경우 다음과 같이 authorized_keys 파일 대신 실제 공개 키를 사용해야 합니다.

<예비>

원하는 만큼 키를 추가할 수 있습니다.

완료되면 ProFTPd 서버를 다시 시작합니다.

sudo service proftpd restart

SSH 포트에서 SFTP 액세스 비활성화

이제 ProFTPd를 통해 SFTP를 활성화했으므로 일반 SSH 포트에서 비활성화할 수 있습니다. 이를 통해 사용자 액세스를 구성하고 각 사용자가 ProFTPd를 통해 보고 조작할 수 있는 것을 잠글 수 있습니다.

SSHD 구성 파일을 엽니다.

sudo nano /etc/ssh/sshd_config

파일 맨 아래에 다음과 같은 줄이 표시됩니다.

Subsystem sftp /usr/lib/openssh/sftp-server

행을 주석 처리하려면 그 앞에 해시(#)를 입력하십시오.

# Subsystem sftp /usr/lib/openssh/sftp-server

파일을 저장하고 닫습니다.

이제 SSH 서버를 다시 시작하여 변경 사항을 활성화하십시오.

sudo service ssh restart

클라이언트와 연결

서버에 연결하는 데 사용할 수 있는 FTP 클라이언트가 많이 있습니다. 좋은 것들은 SFTP 기능도 구현합니다. 모든 주요 플랫폼에서 사용할 수 있는 FileZilla를 통해 연결하는 방법을 시연합니다.

FileZilla의 환경 설정을 엽니다. 왼쪽 메뉴에서 SFTP 섹션을 찾습니다.

"키 파일 추가”를 클릭하고 개인 키의 위치로 이동합니다. 일반적으로 이것은 ~/.ssh/id_rsa에 있습니다. 아마도 FileZilla가 이를 변환할 것이라는 메시지가 표시될 것입니다. 지원되는 형식으로.

기본 설정을 종료하려면 "확인\을 누르십시오.

기본 인터페이스에서 sftp://를 입력하고 "Host\ 필드에 서버의 도메인 이름 또는 IP 주소를 입력합니다. "Username\ 필드에 사용자 이름을 입력하고 다음을 입력합니다. "포트\ 필드에 대해 선택한 포트:

"빠른 연결\을 클릭하면 FileZilla가 SSH 키를 사용하여 자동으로 연결됩니다.

결론

이제 ProFTPd에서 관리하는 SFTP 연결을 수락하도록 서버를 구성해야 합니다. 사용자 및 제한 영역을 관리하도록 소프트웨어를 구성할 수 있습니다. 일반적으로 FTP는 적절한 보안이 부족하므로 어떤 대가를 치르더라도 피해야 합니다.

저스틴 엘링우드