androide

Come configurare il server ftp con vsftpd su centos 7

[CENTOS] - #29 FTP, FTPS E SFTP. Facciamo chiarezza e installiamo il più adatto

[CENTOS] - #29 FTP, FTPS E SFTP. Facciamo chiarezza e installiamo il più adatto

Sommario:

Anonim

FTP (File Transfer Protocol) è un protocollo di rete client-server standard che consente agli utenti di trasferire file da e verso una rete remota.

Esistono diversi server FTP open source disponibili per Linux. I più popolari e ampiamente utilizzati sono PureFTPd, ProFTPD e vsftpd.

In questo tutorial, installeremo vsftpd (Very Secure Ftp Daemon) su CentOS 7. È un server FTP stabile, sicuro e veloce. Ti mostreremo anche come configurare vsftpd per limitare gli utenti alla loro home directory e crittografare l'intera trasmissione con SSL / TLS.

Per trasferimenti di dati più sicuri e veloci, utilizzare SCP o SFTP.

Prerequisiti

Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.

Installazione di vsftpd su CentOS 7

Il pacchetto vsftpd è disponibile nei repository CentOS predefiniti. Per installarlo, emettere il seguente comando:

sudo yum install vsftpd

Una volta installato il pacchetto, avvia il demone vsftpd e abilita l'avvio automatico all'avvio:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

Puoi verificare che il servizio vsftpd sia in esecuzione stampando il suo stato:

sudo systemctl status vsftpd

L'output sarà simile al seguente, a dimostrazione che il servizio vsftpd è attivo e in esecuzione:

● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Configurazione di vsftpd

La configurazione del servizio vsftpd implica la modifica del file di configurazione /etc/vsftpd/vsftpd.conf . La maggior parte delle impostazioni sono ben documentate all'interno del file di configurazione. Per tutte le opzioni disponibili, visita la pagina ufficiale vsftpd.

Nelle sezioni seguenti verranno esaminate alcune importanti impostazioni necessarie per configurare un'installazione vsftpd sicura.

Inizia aprendo il file di configurazione vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

1. Accesso FTP

Consentiremo l'accesso al server FTP solo agli utenti locali, troveremo le direttive anonymous_enable e local_enable e verificheremo che la configurazione corrisponda alle righe seguenti:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES

2. Abilitazione dei caricamenti

write_enable impostazione write_enable per consentire modifiche al filesystem come il caricamento e l'eliminazione di file.

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. Prigione di Chroot

Impedisci agli utenti FTP di accedere a qualsiasi file esterno alle loro home directory togliendo il commento alla direttiva chroot .

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

Per impostazione predefinita, quando chroot è abilitato vsftpd rifiuta di caricare file se la directory in cui sono bloccati gli utenti è scrivibile. Questo per prevenire una vulnerabilità della sicurezza.

Utilizzare uno dei metodi seguenti per consentire i caricamenti quando è abilitato Chroot.

  • Metodo 1. - Il metodo consigliato per consentire il caricamento è mantenere chroot abilitato e configurare le directory FTP. In questo tutorial, creeremo una directory ftp all'interno della home dell'utente che fungerà da chroot e una directory di uploads scrivibile per il caricamento dei file.

    /etc/vsftpd/vsftpd.conf

    user_sub_token=$USER local_root=/home/$USER/ftp

    Metodo 2. - Un'altra opzione è quella di aggiungere la seguente direttiva nel file di configurazione vsftpd. Utilizzare questa opzione se è necessario concedere l'accesso scrivibile al proprio utente alla sua home directory.

    /etc/vsftpd/vsftpd.conf

    allow_writeable_chroot=YES

4. Connessioni FTP passive

vsftpd può usare qualsiasi porta per connessioni FTP passive. Specificheremo l'intervallo minimo e massimo di porte e successivamente apriremo l'intervallo nel nostro firewall.

Aggiungi le seguenti righe al file di configurazione:

/etc/vsftpd/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Limitazione dell'accesso utente

Per consentire solo a determinati utenti di accedere al server FTP aggiungere le seguenti righe dopo la userlist_enable=YES :

/etc/vsftpd/vsftpd.conf

userlist_file=/etc/vsftpd/user_list userlist_deny=NO

Quando questa opzione è abilitata, è necessario specificare esplicitamente quali utenti sono in grado di accedere aggiungendo i nomi utente al /etc/vsftpd/user_list (un utente per riga).

6. Protezione delle trasmissioni con SSL / TLS

Per crittografare le trasmissioni FTP con SSL / TLS, è necessario disporre di un certificato SSL e configurare il server FTP per utilizzarlo.

È possibile utilizzare un certificato SSL esistente firmato da un'autorità di certificazione attendibile o creare un certificato autofirmato.

In questo tutorial, genereremo un certificato SSL autofirmato usando il comando openssl .

Il comando seguente creerà una chiave privata a 2048 bit e un certificato autofirmato valido per 10 anni. Sia la chiave privata che il certificato verranno salvati in uno stesso file:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Una volta creato il certificato SSL, apri il file di configurazione vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

Trova le direttive rsa_cert_file e rsa_private_key_file , modifica i loro valori nel percorso del file pam e imposta la direttiva ssl_enable su YES :

/etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Se non diversamente specificato, il server FTP utilizzerà solo TLS per stabilire connessioni sicure.

Riavvia il servizio vsftpd

Una volta terminata la modifica, il file di configurazione di vsftpd (esclusi i commenti) dovrebbe assomigliare a questo:

/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 userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Salvare il file e riavviare il servizio vsftpd per rendere effettive le modifiche:

sudo systemctl restart vsftpd

Apertura del firewall

Per aprire la porta 21 (porta comando FTP), la porta 20 (porta dati FTP) e 30000-31000 (intervallo porte passive), 30000-31000 i seguenti comandi:

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Ricarica le regole del firewall digitando:

firewall-cmd --reload

Creazione di un utente FTP

Per testare il nostro server FTP creeremo un nuovo utente.

  • Se hai già un utente a cui desideri concedere l'accesso FTP, salta il primo passaggio. Se imposti allow_writeable_chroot=YES nel tuo file di configurazione, salta il terzo passaggio.
  1. Crea un nuovo utente chiamato newftpuser :

    sudo adduser newftpuser

    Successivamente, dovrai impostare la password dell'utente:

    sudo passwd newftpuser

    Aggiungi l'utente all'elenco degli utenti FTP consentiti:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

    Creare la struttura di directory FTP e impostare le autorizzazioni corrette:

    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

    Come discusso nella sezione precedente, l'utente sarà in grado di caricare i suoi file nella directory ftp/upload .

A questo punto il tuo server FTP è perfettamente funzionante e dovresti essere in grado di connetterti al tuo server con qualsiasi client FTP che può essere configurato per usare la crittografia TLS come FileZilla.

Disabilitazione dell'accesso alla shell

Per impostazione predefinita, quando si crea un utente, se non specificato esplicitamente, l'utente avrà accesso SSH al server.

Per disabilitare l'accesso alla shell, creeremo una nuova shell che stamperà semplicemente un messaggio che dice all'utente che il suo account è limitato solo all'accesso FTP.

Esegui i seguenti comandi per creare la shell /bin/ftponly e renderla eseguibile:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

Aggiungi la nuova shell all'elenco di shell valide nel /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Cambia la shell dell'utente in /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Utilizzare lo stesso comando per modificare la shell per gli altri utenti a cui si desidera fornire solo l'accesso FTP.

Conclusione

In questo tutorial, hai imparato come installare e configurare un server FTP sicuro e veloce sul tuo sistema CentOS 7.

ftp centos