GNU/Linux >> Linux Esercitazione >  >> Debian

Come configurare vsftpd su Debian

Vsftpd è l'acronimo di Very Secure FTP Daemon:è uno dei server ftp più utilizzati su Linux e altri sistemi operativi simili a Unix. È open source e rilasciato con licenza GPL e supporta utenti virtuali e SSL per la crittografia
dei dati. In questo tutorial vedremo come installarlo e configurarlo su Linux.

In questo tutorial imparerai :

  • Come installare vsftpd su Debian 10
  • Come configurare vsftpd
  • Come impostare l'utilizzo anonimo
  • Come configurare l'accesso con utenti locali
  • Come configurare utenti virtuali
  • Come configurare ufw per consentire il traffico in entrata

Come configurare vsftpd su Debian

Requisiti software e convenzioni utilizzati

Requisiti software e convenzioni della riga di comando Linux
Categoria Requisiti, convenzioni o versione del software utilizzata
Sistema Debian 10 (Buster)
Software vsftpd, openssl, libpam-pwdfile
Altro Autorizzazioni di root per installare e configurare vsftpd
Convenzioni # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo command
$ – richiede l'esecuzione di determinati comandi linux come un normale utente non privilegiato

Installazione

Vsftpd è disponibile nei repository Debian ufficiali, quindi per installarlo possiamo usare il nostro gestore di pacchetti preferito; si tratta solo di sincronizzare i repository e installare il pacchetto. Entrambe le cose possono essere eseguite
eseguendo i seguenti comandi:

$ sudo apt-get update && sudo apt-get install vsftpd

Pochi secondi e il pacchetto verrà installato sul nostro sistema Debian. Gli script di installazione inclusi nel pacchetto si occuperanno anche di avviare il vsftpd servizio automaticamente ma dobbiamo ricordarci di riavviare o ricaricare il servizio ogni volta che cambiamo il file di configurazione. Per poter utilizzare gli utenti virtuali funzione fornita da vsftpd abbiamo anche bisogno di installare un altro pacchetto:

$ sudo apt-get install libpam-pwdfile

Vedremo il suo utilizzo nella sezione dedicata di questo tutorial.

Una volta installati i pacchetti necessari, possiamo procedere ulteriormente e configurare vsftpd:vedremo come farlo nella prossima sezione di questo tutorial.

Configurazione Vsftpd

Il file di configurazione di vsftpd è /etc/vsftpd.conf . Se lo apriamo possiamo vedere le varie direttive già contenute in esso. Vediamo quali sono i più rilevanti per i casi più comuni.

Abilita accesso anonimo

L'accesso non autenticato al server, come utenti anonimi, è disabilitato per impostazione predefinita. Per abilitarlo, dobbiamo usare anonymous_enable direttiva, che sul file di configurazione è posta alla riga 25 . Tutto quello che dobbiamo fare è impostarlo su YES :
deve modificare l'istruzione in:

anonymous_enable=YES

Un'altra direttiva che potremmo voler cambiare è quella che ci permette di impostare una directory in cui vsftpd proverà a navigare dopo un accesso anonimo. La direttiva che ci permette di controllare questa impostazione è anon_root . Diciamo che vogliamo che un utente anonimo acceda a /srv/ftp directory per impostazione predefinita, scriveremmo:

anon_root=/srv/ftp

Tutti gli accessi anonimi sono mappati internamente a un utente designato, che, per impostazione predefinita, è ftp . Per cambiare questa mappatura dobbiamo usare il ftp_username opzione e impostarlo sul nome dell'utente a cui vogliamo mappare gli utenti anonimi.

Per impostazione predefinita, un utente anonimo non potrà scrivere nulla sul server, per ovvi motivi di sicurezza. Se si desidera modificare questo comportamento (non consigliato) ci sono alcune opzioni che devono essere modificate. Prima di tutto il generale write_enable la direttiva deve essere impostata su YES . Questa direttiva è commentata alla riga 31 del file di configurazione, quindi tutto ciò che devi fare è rimuovere il commento.

# Uncomment this to enable any form of FTP write command.
write_enable=YES

Una volta abilitata questa direttiva, tutto ciò che dobbiamo fare è lavorare su altre due opzioni:anon_upload_enable e anon_mkdir_write_enable . Quando il primo è impostato su YES un utente anonimo potrà caricare file, ma solo se l'utente su cui è mappato (come abbiamo detto, ftp, per impostazione predefinita) ha i permessi di scrittura sulla directory di destinazione. Per attivare questa opzione non dobbiamo fare altro che rimuovere il commento dalla riga 40 del file di configurazione:

# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES

Il anon_mkdir_write_enable direttiva, invece, se impostata su YES consente agli utenti anonimi di creare nuove directory sul server, alle stesse condizioni che abbiamo visto sopra (l'utente sottostante sul server deve avere i permessi di scrittura sulla directory padre). La direttiva si trova alla riga 44 del file di configurazione:

# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES

Ancora una volta, poiché la variabile è già impostata su YES , affinché sia ​​pertinente, tutto ciò che dobbiamo fare è rimuovere il commento da esso.

Per consentire agli utenti anonimi di eseguire anche altri tipi di operazioni di scrittura, come ad esempio rinominare o eliminazione una directory, dobbiamo usare un'altra direttiva che non è presente nel file di configurazione, anon_other_write_enable e impostalo su YES se quello sopra è il nostro comportamento desiderato:

anon_other_write_enable=YES

Accessi autenticati

Per consentire agli utenti del sistema locale di accedere al server ftp con la loro password di sistema, il local_enable la direttiva deve essere impostata su YES :questa è l'impostazione predefinita sul sistema Debian. La direttiva si trova alla riga 28 del demone
file di configurazione:

# Uncomment this to allow local users to log in.
local_enable=YES

Per impostazione predefinita, quando un utente locale si autentica con successo, avrà la propria home directory come root. È tuttavia possibile specificare un punto di partenza alternativo utilizzando local_root direttiva. Questa direttiva non è presente nel file di configurazione, quindi dobbiamo aggiungerla se vogliamo usarla. Per impostare il /srv/ftp directory come root locale, per esempio, scriveremo:

local_root=/srv/ftp

Croot utenti locali

Come misura di sicurezza è possibile chroot ogni utente autenticato nella propria home directory. Per eseguire questo compito dobbiamo usare il chroot_local_user direttiva:

chroot_local_user=YES

Quando questa funzione è abilitata, è possibile specificare un elenco di esclusioni, (un elenco di utenti che non devono essere sottoposti a chroot) utilizzando le seguenti direttive:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

La prima direttiva è necessaria per attivare la funzionalità, l'altra per specificare la posizione del file contenente l'elenco di esclusione . Il file deve essere creato se non esiste già, altrimenti il ​​login fallirà.

Come misura di sicurezza, quando un utente è in chroot, non dovrebbe essere in grado di scrivere nella directory di livello superiore del chroot. In tal caso, nelle versioni più recenti di vsftpd, un utente non sarà in grado di accedere e il server risponderà con il seguente messaggio:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Questo problema può essere risolto sostanzialmente in due modi. Questo primo consiste ovviamente nel fissare i permessi , negando all'utente l'accesso in scrittura alla directory di livello superiore del chroot e consentendogli di scrivere solo nelle sottodirectory.
Il secondo modo per risolvere il problema, se non ti interessano le possibili implicazioni sulla sicurezza, è quello di ignora questa restrizione , utilizzando la seguente direttiva:

allow_writeable_chroot=YES

Parlando di autorizzazioni, è importante tenere presente che l'umask predefinito per l'utente locale è impostato su 077 . Se questa impostazione è considerata troppo restrittiva, è possibile modificarla utilizzando il local_umask direttiva. Questa direttiva è commentata alla riga 35 del file di configurazione:

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022

Accedi con utenti virtuali

Una caratteristica interessante offerta da vsftpd è la possibilità di accedere utilizzando utenti virtuali . Un utente virtuale è un utente che non esiste realmente nel sistema, ma solo nel contesto dell'applicazione sftpd. Per abilitare questa funzione dobbiamo usare la seguente direttiva:

guest_enable=YES

Quando la funzione è attiva, tutti gli accessi non anonimi (quindi anche utenti reali/locali) vengono mappati all'utente specificato con il guest_username direttiva, che per impostazione predefinita, come abbiamo già visto, è ftp .

Il passaggio successivo consiste nel creare un file contenente i nomi utente e le password degli utenti virtuali. Per generare una password con hash, possiamo usare openssl ed emettere il seguente comando:

$ openssl passwd -1
Password:
Verifying - Password:
$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

La passwd comando di openssl viene utilizzato per generare password hash (md5). Nell'esempio sopra, ci è stato chiesto di eseguire l'hashing della password e la sua conferma. Infine la password con hash viene generata e visualizzata sullo schermo.

Il nome utente, insieme alla password, deve essere inserito in un file, diciamo che è /etc/virtual_users.pwd , nel seguente formato:

username:hashed_password

Quindi supponendo che il nostro utente virtuale si chiami "linuxconfig" scriveremo:

linuxconfig:$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

L'operazione deve essere ripetuta per ogni utente virtuale che vogliamo configurare.

Ora dobbiamo creare il pam servizio che verrà utilizzato da vsftpd per autenticare gli utenti virtuali. Chiameremo il file vsftpd_virtual e inseriscilo nel /etc/pam.d directory. Il suo contenuto sarà il seguente:

#%PAM-1.0
auth    required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.pwd
account required pam_permit.so

Come puoi vedere, abbiamo specificato nella prima riga il percorso del file contenente il nome utente e le password degli utenti virtuali. Tutto ciò che dobbiamo fare, ora, è istruire vsftpd a utilizzare questo "servizio" pam. Possiamo farlo con il pam_service_name direttiva:

pam_service_name=vsftpd_virtual

A questo punto possiamo salvare il file di configurazione, riavviare il demone e verificare di poter accedere con l'utente virtuale appena creato.

Abilitazione del supporto SSL per la crittografia dei dati

Per impostazione predefinita, il supporto SSL è disabilitato su vsftpd, quindi i dati trasferiti non verranno crittografati. Per abilitare il supporto SSL dobbiamo utilizzare le seguenti direttive, che si trovano alle righe 149 a 151 del file di configurazione:

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES

La prima direttiva, rsa_cert_file viene utilizzato per indicare il percorso del certificato RSA da utilizzare per le connessioni crittografate SSL. Il secondo, rsa_private_key , invece, viene utilizzato per specificare la posizione della chiave privata RSA. Infine, il ssl_enable viene utilizzata per abilitare l'uso della crittografia SSL.

L'esempio utilizza /etc/ssl/certs/ssl-cert-snakeoil.pem e /etc/ssl/private/ssl-cert-snakeoil.key file, ma quasi sicuramente ne vuoi usare uno dedicato.

Specifica dell'intervallo di porte per la modalità passiva

La modalità passiva FTP è l'impostazione predefinita su una nuova installazione di vsftpd, ma se vogliamo abilitarla esplicitamente possiamo utilizzare la seguente direttiva:

# Set to NO if you want to disallow the PASV method of obtaining a data connection
# (passive mode). Default: YES
pasv_enable=YES

Quando il server funziona in modalità passiva , invia al client un indirizzo IP e una porta che dovrebbe ascoltare per la connessione. Per impostazione predefinita, queste porte sono selezionate casualmente, tuttavia, poiché dobbiamo utilizzare un firewall sul nostro server, dobbiamo sapere quali porte dovremmo consentire il traffico completo. L'intervallo di porte da utilizzare può essere specificato con pasv_min_port e pasv_max_port direttive, ad esempio:

# The minimum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling.
pasv_min_port=10090

# The maximum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling. Default: 0 (use any port)
pasv_max_port=10100

Con la seguente configurazione il server utilizzerà un intervallo di porte che va da 10090 a 10100 .

Configurazione del firewall

Affinché il nostro server vsftpd funzioni correttamente, dobbiamo consentire il traffico attraverso le porte necessarie, alcune dobbiamo impostare le regole appropriate per il nostro firewall. In questo tutorial assumerò l'uso di ufw gestore firewall (firewall semplice).

La prima porta attraverso la quale vogliamo consentire il traffico è la porta 21 , che è la porta standard utilizzata dal protocollo FTP:

$ sudo ufw allow in 21/tcp

Come seconda cosa, dobbiamo consentire il traffico in entrata tramite l'intervallo di porte specificato che abbiamo impostato nella sezione precedente. Per specificare un intervallo di porte che possiamo eseguire:

$ sudo ufw allow in 10090:10100/tcp

Conclusioni

In questo articolo abbiamo visto come installare e configurare vsftpd su Debian 10 Buster. Abbiamo visto come impostare l'utilizzo anonimo e l'utilizzo degli utenti locali e come possiamo sfruttare gli utenti virtuali caratteristica fornita dal servizio. Poiché FTP non fornisce la crittografia dei dati, abbiamo visto come abilitare il supporto SSL e, infine, come configurare il firewall per consentire il traffico in entrata attraverso le porte necessarie. Per un elenco completo delle possibili direttive che possono essere utilizzate nel file di configurazione vsftpd, dai un'occhiata a vsftpd.conf manpage (VSFTPD.CONF(5)). Vuoi sapere come lavorare a livello di codice con un server FTP? Dai un'occhiata al nostro articolo su Come connettersi a un server FTP usando Python.


Debian
  1. Come installare R su Debian 9

  2. Come configurare il server FTP con VSFTPD su Debian 9

  3. Come installare R su Debian 10

  4. Come configurare il server Rsyslog su Debian 11

  5. Come configurare VSFTPD su CentOS 7.x?

Come installare il server vsftpd su Debian 11

Come configurare UFW Firewall su Debian 10

Come installare Vai su Debian 10

Come configurare UFW Firewall su Debian 11

Come configurare il server OpenLDAP su Debian 10

Come installare Vai su Debian