Ubuntu 20.04에서 VSFTP를 사용하여 FTP 서버를 설정하는 방법

Ubuntu 20.04에서 VSFTP를 사용하여 FTP 서버를 설정하는 방법

2022-05-31 last update

15 minutes reading ftp ubuntu
본고는 Ubuntu 20.04에 FTP 서버를 설치하고 설정하여 장치 간에 파일을 공유하는 방법을 소개한다.FTP(파일 전송 프로토콜)는 원격 네트워크 간에 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜입니다.Linux에는 몇 개의 오픈 소스 FTP 서버가 있습니다.가장 널리 알려진 것과 가장 광범위한 것은 PureFTPd이다
, ProFTPD
, 및 vsftpd
.우리는 vsftpd (매우 안전한 Ftp 수호 프로그램) 를 설치할 것입니다. 이것은 안정적이고 안전하며 빠른 Ftp 서버입니다.또한 사용자를 홈 디렉토리로 제한하고 전체 전송을 SSL/TLS로 암호화하기 위해 서버를 구성하는 방법을 보여 드리겠습니다.FTP는 매우 유행하는 프로토콜이지만 더욱 안전하고 신속하게 데이터를 전송하기 위해서는 SCP을 사용해야 합니다
또는 SFTP
.

Ubuntu 20.04에 vsftpd 설치

은 Ubuntu 저장소에서 vsftpd 패키지를 제공합니다.그것을 설치하려면 다음 명령을 실행하십시오:
sudo apt updatesudo apt install vsftpd
설치 과정이 완료되면 ftp 서비스가 자동으로 시작됩니다.검증을 진행하려면 인쇄 서비스 상태:
sudo systemctl status vsftpd
출력은 vsftpd 서비스가 활성 상태이고 실행 중임을 표시해야 합니다.
● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-03-02 15:17:22 UTC; 3s ago
...

vsftpd 설정

vsftpd 서버 설정은 /etc/vsftpd.conf 파일에 저장됩니다.대부분의 서버 설정은 파일에 기록됩니다.사용 가능한 모든 옵션에 대해서는 vsftpd documentation을 참조하십시오.
페이지다음 부분에서, 우리는 안전 vsftpd 설치를 설정하는 데 필요한 중요한 설정을 소개할 것이다.먼저 vsftpd 프로필을 엽니다.
sudo nano /etc/vsftpd.conf

1. FTP 액세스

로컬 사용자만 FTP 서버에 접근할 수 있습니다.anonymous_enablelocal_enable 명령을 검색하고 설정이 다음 줄과 일치하는지 확인하십시오./etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES

2. 업로드 활성화

에서 write_enable 명령을 찾아 설명을 취소하여 파일 시스템의 변경을 허용합니다. 예를 들어 파일을 업로드하고 삭제하는 것:/etc/vsftpd.conf
write_enable=YES

3. Chroot 감옥

로컬 FTP 사용자가 홈 디렉터리 이외의 파일에 접근하는 것을 방지하기 위해 chroot_local_user:/etc/vsftpd로 시작하는 lne에 대한 설명을 취소하십시오.conf
chroot_local_user=YES
기본적으로 보안상의 이유로chroot를 사용할 때 사용자가 잠긴 디렉터리를 쓸 수 있으면 vsftpd는 파일 업로드를 거부합니다.chroot를 사용할 때 다음 해결 방안 중 하나를 사용하여 업로드할 수 있습니다:
  • 방법 1 -권장되는 옵션은 chroot 기능을 활성화하고 FTP 디렉토리를 구성하는 것입니다.
    이 예에서, 우리는 사용자 홈 페이지에 ftp 디렉터리를 만들 것입니다. 이 디렉터리는chroot와 쓰기 가능한 uploads 디렉터리로 사용되며, 파일을 업로드하는 데 사용됩니다:/etc/vsftpd.형태
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • 방법 2.또 다른 옵션은 allow_writeable_chroot 명령을 사용합니다:/etc/vsftpd.conf
    allow_writeable_chroot=YES
    은 사용자가 홈 디렉터리에 쓰기 가능한 접근 권한을 부여해야 할 때만 이 옵션을 사용합니다.
  • 4. 수동 FTP 연결

    기본적으로 vsftpd는 이벤트 모드를 사용합니다.수동 모드를 사용하려면 포트의 최소와 최대 범위를 설정하십시오:/etc/vsftpd.conf
    pasv_min_port=30000
    pasv_max_port=31000
    
    모든 포트를 사용하여 수동 FTP 연결을 할 수 있습니다.수동 모드를 활성화하면 FTP 클라이언트가 선택한 범위의 랜덤 포트에서 서버와의 연결을 엽니다.

    5. 사용자 로그인 제한

    일부 사용자만 로그인할 수 있도록 vsftpd를 설정할 수 있습니다.이를 위해 파일 끝에 다음 줄을 추가하십시오:/etc/vsftpd.conf
    userlist_enable=YES
    userlist_file=/etc/vsftpd.user_list
    userlist_deny=NO
    
    에서 이 옵션을 사용하면 사용자 이름을 /etc/vsftpd.user_list 파일 (줄마다 사용자) 에 추가하여 로그인할 수 있는 사용자를 명확하게 지정해야 합니다.(adsbygoogle=window.adsbygoogle | |[]).푸시({});

    6. SSL/TLS를 사용하여 전송 보호

    은 SSL/TLS로 FTP 전송을 암호화하려면 SSL 인증서를 가지고 FTP 서버를 설정해야 합니다.신뢰할 수 있는 인증서 발급 기관에서 서명한 기존 SSL 인증서를 사용하거나 자체 서명 인증서를 만들 수 있습니다.FTP 서버의 IP 주소를 가리키는 도메인이나 하위 도메인이 있으면 무료 Let’s Encrypt을 신속하게 생성할 수 있습니다
    SSL 인증서.2048비트 개인 키 및 self-signed SSL certificate을 생성합니다.
    유효기간은 10년:
    sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
    개인 키와 인증서가 같은 파일에 저장됩니다.SSL 인증서를 만든 후 vsftpd 프로필을 엽니다.
    sudo nano /etc/vsftpd.conf
    에서 rsa_cert_filersa_private_key_file 명령을 찾으면 그 값을 pam 파일 경로로 변경하고 ssl_enable 명령을 YES:/etc/vsftpd로 설정합니다.conf
    rsa_cert_file=/etc/ssl/private/vsftpd.pem
    rsa_private_key_file=/etc/ssl/private/vsftpd.pem
    ssl_enable=YES
    
    이 별도로 지정되지 않으면 FTP 서버는 TLS만 사용하여 안전하게 연결됩니다.

    vsftpd 서비스 다시 시작

    편집을 마친 후 vsftpd 프로필(주석 포함)은 다음과 같이 해야 합니다./etc/vsftpd.conf
    listen=NO
    listen_ipv6=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    dirmessage_enable=YES
    use_localtime=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    chroot_local_user=YES
    secure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=vsftpd
    rsa_cert_file=/etc/ssl/private/vsftpd.pem
    rsa_private_key_file=/etc/ssl/private/vsftpd.pem
    ssl_enable=YES
    user_sub_token=$USER
    local_root=/home/$USER/ftp
    pasv_min_port=30000
    pasv_max_port=31000
    userlist_enable=YES
    userlist_file=/etc/vsftpd.user_list
    userlist_deny=NO
    
    파일을 저장하고 vsftpd 서비스를 다시 시작하여 변경 사항을 적용합니다:
    sudo systemctl restart vsftpd

    방화벽을 열다

    UFW firewall 실행 중인 경우
    , FTP 통신을 허용해야 합니다.포트 21(FTP 명령 포트), 포트 20(FTP 데이터 포트) 및 30000-31000(패시브 포트 범위)을 열려면 다음과 같은 명령을 실행하십시오.
    sudo ufw allow 20:21/tcpsudo ufw allow 30000:31000/tcp
    이 잠기지 않도록 포트 22이 열려 있는지 확인하십시오.
    sudo ufw allow OpenSSH
    은 UFW를 비활성화하고 다시 활성화하여 UFW 규칙을 다시 로드합니다.
    sudo ufw disablesudo ufw enable
    은 변경 실행 확인:
    sudo ufw status

    FTP 사용자 만들기

    을 사용하여 FTP 서버를 테스트합니다.우리는 새로운 사용자를 만들 것이다.
  • FTP 액세스 권한을 부여할 사용자가 이미 있으면 첫 번째 단계를 건너뜁니다.
  • 프로필에 allow_writeable_chroot=YES을 설정하면 3단계를 건너뜁니다.
  • newftpuser이라는 새 사용자를 만듭니다.
    Status: active
    
    To                         Action      From
    --                         ------      ----
    20:21/tcp                  ALLOW       Anywhere
    30000:31000/tcp            ALLOW       Anywhere
    OpenSSH                    ALLOW       Anywhere
    20:21/tcp (v6)             ALLOW       Anywhere (v6)
    30000:31000/tcp (v6)       ALLOW       Anywhere (v6)
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    
  • 허용된 FTP 사용자 목록에 사용자를 추가합니다.
    sudo adduser newftpuser
  • FTP 디렉터리 트리를 만들고 올바른 permissions을 설정합니다.
    :
    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
    앞에서 설명한 바와 같이 사용자는 파일을 ftp/upload 디렉터리에 업로드할 수 있습니다.
  • 현재 FTP 서버의 기능이 모두 갖추어져 있습니다.TLS 암호화를 사용하도록 구성할 수 있는 모든 FTP 클라이언트를 사용하여 서버에 연결할 수 있어야 합니다. 예를 들어 FileZilla
    .

    셸 액세스 비활성화

    기본적으로 사용자를 만들 때 명시적으로 지정되지 않으면 서버에 대한 SSH 액세스 권한이 있습니다.셸 액세스를 비활성화하려면 새 셸을 만듭니다. 이 셸은 FTP 액세스에만 계정이 제한되어 있음을 알리는 메시지를 인쇄합니다.다음 명령을 실행하여 /bin/ftponly 파일을 만들고 실행할 수 있도록 합니다.
    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp
    새 셸을 /etc/shells 파일의 유효한 셸 목록에 추가합니다.
    echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponlysudo chmod a+x /bin/ftponly
    사용자 셸을 /bin/ftponly으로 변경합니다.
    echo "/bin/ftponly" | sudo tee -a /etc/shells
    같은 명령을 사용하여 FTP에만 접근할 수 있는 모든 사용자의 셸을 변경할 수 있습니다.

    결론

    Ubuntu 20.04 시스템에 안전하고 빠른 FTP 서버를 설치하고 구성하는 방법을 보여 드립니다.질문이나 피드백이 있으면 언제든지 의견을 발표하십시오.