
Ubuntu 18.04에서 VSFTP를 사용하여 FTP 서버를 설정하는 방법
FTP(파일 전송 프로토콜)는 원격 네트워크 간에 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜입니다.Linux에는 사용 가능한 FTP 서버가 많이 있습니다.가장 인기 있고 광범위한 사용PureFTPd
, ProFTPD
, 및 vsftpd
. 이 강좌에서, 우리는 vsftpd (매우 안전한 Ftp 수호 프로그램) 를 설치할 것입니다.안정적이고 안전하며 빠른 FTP 서버입니다.사용자를 홈 디렉터리로 제한하고 SSL/TLS로 전체 전송을 암호화하기 위해 vsftpd를 설정하는 방법도 보여 드리겠습니다.이 강좌는 Ubuntu 18.04를 위한 것이지만, 같은 설명은 Ubuntu 16.04와 Debian 기반의 모든 버전, 예를 들어 Debian, Linux Mint, 초급 운영체제를 포함한다.보다 안전하고 빠른 데이터 전송을 위해 사용SCP
또는 SFTP
.
.
페이지다음 부분에서, 우리는 안전 vsftpd 설치를 설정하는 데 필요한 중요한 설정을 소개할 것이다.먼저 vsftpd 프로필을 엽니다. 방법 1. -업로드를 허용하는 방법은 chroot를 활성화하고 FTP 디렉터리를 설정하는 것입니다.이 강좌에서 사용자 홈페이지에 방법 2. -또 다른 옵션은 vsftpd 프로필에 다음 명령을 추가하는 것입니다.사용자에게 홈 디렉토리에 대한 쓰기 가능 액세스 권한을 부여해야 하는 경우 이 옵션을 사용합니다/etc/vsftpd.ff
SSL 인증서.우리는 생성할 것이다 self-signed SSL certificate
FTP 통신을 허용해야 합니다.포트 FTP 액세스 권한을 부여할 사용자가 이미 있으면 첫 번째 단계를 건너뜁니다. 구성 파일에 허용된 FTP 사용자 목록에 사용자 추가: FTP 디렉터리 트리를 만들고 올바른 permissions
: 이제 FTP 서버는 TLS 암호화로 구성된 모든 FTP 클라이언트를 사용하여 서버에 연결할 수 있는 기능을 갖추고 있습니다(예: FileZilla.
.
, ProFTPD
, 및 vsftpd
. 이 강좌에서, 우리는 vsftpd (매우 안전한 Ftp 수호 프로그램) 를 설치할 것입니다.안정적이고 안전하며 빠른 FTP 서버입니다.사용자를 홈 디렉터리로 제한하고 SSL/TLS로 전체 전송을 암호화하기 위해 vsftpd를 설정하는 방법도 보여 드리겠습니다.이 강좌는 Ubuntu 18.04를 위한 것이지만, 같은 설명은 Ubuntu 16.04와 Debian 기반의 모든 버전, 예를 들어 Debian, Linux Mint, 초급 운영체제를 포함한다.보다 안전하고 빠른 데이터 전송을 위해 사용SCP
또는 SFTP
.
선결 조건
본 강좌를 계속하기 전에 user with sudo privileges 로 로그인하십시오..
Ubuntu 18.04에 vsftpd 설치
Ubuntu 저장소에서 vsftpd 패키지를 제공합니다.그것을 설치하려면 다음 명령을 실행하십시오.vsftpd 서비스는 설치 과정이 끝난 후에 자동으로 시작됩니다.인쇄 서비스 상태를 검증합니다.sudo apt update
sudo apt install vsftpd
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 Mon 2018-10-15 03:38:52 PDT; 10min ago
Main PID: 2616 (vsftpd)
Tasks: 1 (limit: 2319)
CGroup: /system.slice/vsftpd.service
`-2616 /usr/sbin/vsftpd /etc/vsftpd.conf
vsftpd 설정
파일을 편집하여 vsftpd 서버를 설정할 수 있습니다.대부분의 설정은 구성 파일에 기록됩니다.사용 가능한 모든 옵션에 대한 액세스 official vsftpd페이지다음 부분에서, 우리는 안전 vsftpd 설치를 설정하는 데 필요한 중요한 설정을 소개할 것이다.먼저 vsftpd 프로필을 엽니다.
sudo nano /etc/vsftpd.conf
1. FTP 액세스
로컬 사용자만 FTP 서버에 접근할 수 있도록 합니다./etc/vsftpd.conf
및 anonymous_enable
명령을 찾고 다음 줄과 일치하는지 확인하십시오./etc/vsftpd.confanonymous_enable=NO
local_enable=YES
2. 업로드 활성화
local_enable
설정에 대한 설명을 취소하여 파일 시스템 업로드 및 삭제/etc/vsftpd.confwrite_enable=YES
3. Chroot 감옥
FTP 사용자가 홈 디렉토리 이외의 파일에 액세스하지 못하도록 하려면write_enable
설정에 대한 설명을 취소하십시오.etc/vsftpd.기본적으로 사용자가 잠긴 디렉터리가 쓸 수 있다면,chroot를 사용할 때, vsftpd는 보안 빈틈을 방지하기 위해 파일을 업로드하는 것을 거부합니다.chroot를 사용할 때 다음 방법 중 하나를 사용하여 업로드를 허용합니다.chroot
디렉터리를 만들 것입니다. 이 디렉터리는chroot와 파일을 업로드하는 데 사용할 수 있는 쓰기 가능한 ftp
디렉터리/etc/vsftpd.형태chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
4. 수동 FTP 연결
vsftpd는 모든 포트를 사용하여 수동 FTP 연결을 할 수 있습니다.우리는 포트의 최소와 최대 범위를 지정한 후에 방화벽에서 이 범위를 열 것이다.다음 줄을 프로필에 추가합니다:/etc/vsftpd.ffallow_writeable_chroot=YES
5. 사용자 로그인 제한
는 일부 사용자만 FTP 서버에 로그인할 수 있도록 합니다. 파일 끝에 다음 줄을 추가하십시오. (adsbygoogle=window.adsbygoogle | | []).푸시 ({})/etc/vsftpd.ffpasv_min_port=30000
pasv_max_port=31000
에서 이 옵션을 사용하면 uploads
파일에 사용자 이름을 추가하여 (줄마다 사용자) 로그인할 수 있는 사용자를 명확하게 지정해야 합니다.6. SSL/TLS를 사용하여 전송 보호
FTP 전송을 SSL/TLS로 암호화하려면 SSL 인증서를 가지고 FTP 서버를 구성해야 합니다.신뢰할 수 있는 인증서 발급 기관에서 서명한 기존 SSL 인증서를 사용하거나 자체 서명 인증서를 만들 수 있습니다.FTP 서버의 IP 주소를 가리키는 도메인 또는 하위 도메인이 있으면 무료로 쉽게 생성할 수 있습니다 Let’s EncryptSSL 인증서.우리는 생성할 것이다 self-signed SSL certificate
/etc/vsftpd.user_list
명령을 사용합니다.다음 명령은 유효기간이 10년인 2048비트 개인 키와 자체 서명 인증서를 만들 것입니다.개인 키와 인증서는 같은 파일에 저장됩니다. userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
SSL 인증서를 만든 후 vsftpd 프로필을 엽니다. sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
openssl
및 rsa_cert_file
명령을 찾으면 그 값을 rsa_private_key_file
파일 경로로 변경하고 pam
명령을 ssl_enable
:/etc/vsftpd로 설정합니다.confsudo nano /etc/vsftpd.conf
가 별도로 지정되지 않으면 FTP 서버는 TLS로만 안전하게 연결됩니다.vsftpd 서비스 다시 시작
편집이 완료되면 vsftpd 프로필(주석 포함)은 다음과 같이 해야 합니다./etc/vsftpd.ffrsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
파일을 저장하고 vsftpd 서비스를 다시 시작하여 변경 사항을 적용합니다. 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
방화벽을 열다
실행 중인 경우 UFW firewallFTP 통신을 허용해야 합니다.포트
YES
(FTP 명령 포트), 포트21
(FTP 데이터 포트) 및20
(패시브 포트 범위)를 열려면 다음 명령을 실행합니다. sudo systemctl restart vsftpd
잠금을 피하려면 포트30000-31000
를 엽니다. UFW를 비활성화하고 다시 활성화하여 UFW 규칙을 다시 로드합니다.sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw allow OpenSSH
변경 사항을 확인하려면 실행합니다. sudo ufw disable
sudo ufw enable
FTP 사용자 만들기
FTP 서버를 테스트하려면 새 사용자를 만듭니다.22
이 설정되어 있으면 3단계를 건너뜁니다.allow_writeable_chroot=YES
라는 새 사용자 만들기: sudo ufw status
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)
:
sudo adduser newftpuser
앞에서 설명한 바와 같이 사용자는 파일을 newftpuser
디렉터리에 업로드할 수 있습니다..
셸 액세스 비활성화
기본적으로 사용자를 만들 때 명시적으로 지정되지 않으면 서버에 대한 SSH 액세스 권한이 있습니다.셸 액세스를 사용하지 않으려면, 새 셸을 만들 것입니다. 이 셸은 FTP 액세스에만 한정된 계정을 알려 주는 메시지를 출력할 수 있습니다.ftp/upload
셸을 만들고 실행할 수 있도록 합니다. echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
새 셸을 /bin/ftponly
파일에 첨부하는 유효한 셸 목록: 사용자 셸을sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo chown -R newftpuser: /home/newftpuser/ftp
/etc/shells
로 변경합니다. 같은 명령을 사용하여 FTP 액세스 권한만 부여한 모든 사용자의 셸을 변경합니다.echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly