Configura il server FTP sicuro (SFTP) con WebDAV utilizzando SFTPGo
File Transfer Protocol (FTP) è un protocollo di comunicazione utilizzato per trasferire file tra computer tramite Internet. FTP utilizza un modello client-server con dati e connessioni diversi tra loro. Normalmente, gli utenti in FTP si autenticano utilizzando un accesso in chiaro (nome utente e password), ma una volta possono anche connettersi in modo anonimo se il server è configurato per accettarlo.
Secure File Transfer Protocol(SFTP) è un FTP sicuro che utilizza la crittografia shell durante l'invio e la ricezione di file per garantire la massima sicurezza. SFTPGo può essere utilizzato per eseguire SFTP con supporto aggiuntivo per HTTP, WebDAV e FTP/S. Inoltre, supporta diversi backend di archiviazione come; S3 (compatibile) Object Storage, file system locale, file system locale crittografato, archiviazione BLOB di Azure, Google Cloud Storage ecc.
Altre funzionalità di SFTPGo sono:
- Supporta le cartelle virtuali: una cartella virtuale può utilizzare uno qualsiasi dei backend di archiviazione supportati
- Isolamento chroot per account locali: gli account basati su cloud possono essere limitati a un determinato percorso di base.
- Autorizzazioni virtuali per utente e per directory: per ogni percorso esposto puoi consentire o negare: elenco di directory, caricamento, eliminazione, sovrascrittura, download, rinomina, creazione di directory, creazione di collegamenti simbolici, modifica di proprietario/gruppo/file modalità.
- API REST per gestione di utenti e cartelle, conservazione dei dati, backup, ripristino e report in tempo reale, ecc.
- Interfaccia di amministrazione web: per gestire facilmente utenti, cartelle e connessioni.
- Interfaccia client Web: viene utilizzata dagli utenti finali per modificare le proprie credenziali, gestire e condividere i propri file.
- Supporta l'autenticazione con chiave pubblica e password. Sono supportate anche più chiavi pubbliche per utente.
- Autenticazione interattiva da tastiera: puoi impostare facilmente un'autenticazione a più fattori personalizzabile.
- Autenticazione personalizzata utilizzando programmi esterni/API HTTP.
- Limitazione della larghezza di banda: con impostazioni separate per caricamento e download e sostituzioni in base all'indirizzo IP del client.
- Supporta SQLite, MySQL, PostgreSQL, CockroachDB, Bolt (archivio chiave/valore in puro Go) e fornitori di dati in memoria.
- Supporto per repository Git su SSH.
- Sono supportati SCP e rsync.
- Supporta il protocollo di bilanciamento del carico HAProxy: puoi proxy e/o bilanciare il carico del servizio SFTP/SCP/FTP/WebDAV senza perdere le informazioni sull'indirizzo del client.
Questa guida offre un'illustrazione approfondita di come configurare un server FTP sicuro (SFTP) con WebDAV utilizzando SFTPGo
Immergiamoci!
Passaggio 1: installa SFTPGo su Linux
Questa guida mostra come installare SFTPGo sul tuo sistema utilizzando i seguenti metodi:
- Su Ubuntu utilizzando PPA
- Utilizzo dei pacchetti .RPM/.DEB
- Utilizzando Docker
Metodo 1: installa SFTPGo utilizzando PPA (Ubuntu)
Esiste un PPA che fornisce la versione attualmente supportata di SFTPGo. Questo PPA può essere aggiunto al tuo sistema Ubuntu come di seguito.
Inizia aggiornando l'indice del tuo pacchetto APT.
sudo apt update
Quindi installare le dipendenze del pacchetto richieste.
sudo apt install software-properties-common
Ora aggiungi il PPA SFTPGo
sudo add-apt-repository ppa:sftpgo/sftpgo
sudo apt-get update
Una volta aggiunto il PPA, puoi installare SFTPGo su Ubuntu usando il comando:
sudo apt install sftpgo
Albero delle dipendenze:
The following NEW packages will be installed:
sftpgo
0 upgraded, 1 newly installed, 0 to remove and 84 not upgraded.
Need to get 9,871 kB of archives.
After this operation, 41.0 MB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/sftpgo/sftpgo/ubuntu focal/main amd64 sftpgo amd64 2.2.2-1ppa1 [9,871 kB]
Fetched 9,871 kB in 0s (30.9 MB/s)
Selecting previously unselected package sftpgo.
Al termine dell'installazione, il servizio si avvia automaticamente, verificare lo stato come di seguito.
$ systemctl status sftpgo
● sftpgo.service - SFTPGo Server
Loaded: loaded (/lib/systemd/system/sftpgo.service; enabled; vendor preset>
Active: active (running) since Mon 2022-02-14 08:26:18 UTC; 1min 7s ago
Main PID: 3801 (sftpgo)
Tasks: 8 (limit: 7029)
Memory: 16.1M
CGroup: /system.slice/sftpgo.service
└─3801 /usr/bin/sftpgo serve
Feb 14 08:26:22 ubuntu sftpgo[3801]: {"level":"info","time":"2022-02-14T08:26:2>
Feb 14 08:26:22 ubuntu sftpgo[3801]: {"level":"info","time":"2022-02-14T08:26:2>
Feb 14 08:26:22 ubuntu sftpgo[3801]: {"level":"info","time":"2022-02-14T08:26:2>
Feb 14 08:26:22 ubuntu sftpgo[3801]: {"level":"info","time":"2022-02-14T08:26:2>
Metodo 2: installa SFTPGo utilizzando i pacchetti .RPM e .DEB.
Sono inoltre disponibili pacchetti DEB e RPM creati per SFTPGo per ogni versione. Questi pacchetti sono disponibili nella pagina di rilascio di SFTPGo Github.
Per prima cosa salva l'ultima versione di rilascio nella variabile:
VER=$(curl -s https://api.github.com/repos/drakkan/sftpgo/releases/latest|grep tag_name | cut -d '"' -f 4 |sed 's/v//g')
Scarica il pacchetto appropriato per il tuo sistema come di seguito.
- Su Debian/Ubuntu
##For AMD64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo_$VER-1_amd64.deb
##For ARM64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo_$VER-1_arm64.deb
##For PPC64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo_$VER-1_ppc64el.deb
- Su RHEL/CentOS/Rocky Linux/Alma Linux
##For x86_64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.x86_64.rpm
##For ARMV7Hl##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.armv7hl.rpm
##For PPC64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.ppc64le.rpm
##For AARCH64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.aarch64.rpm
Dopo aver scaricato il pacchetto corretto, procedere e installarlo come di seguito.
##On Debian/Ubuntu##
sudo apt install ./sftpgo_$VER-1_*.deb
##On RHEL/CentOS/Rocky Linux/Alma Linux##
sudo rpm -i sftpgo-$VER-1.*.rpm
Una volta installato, avvia e abilita STPGo.
sudo systemctl enable --now sftpgo
Controlla lo stato del servizio.
$ systemctl status sftpgo
● sftpgo.service - SFTPGo Server
Loaded: loaded (/lib/systemd/system/sftpgo.service; enabled; ve>
Active: active (running) since Mon 2022-02-14 04:28:32 EST; 55s>
Main PID: 1490 (sftpgo)
Tasks: 7 (limit: 7075)
Memory: 17.6M
CPU: 1.150s
CGroup: /system.slice/sftpgo.service
└─1490 /usr/bin/sftpgo serve
Ora abilita WebDAV specificando la porta come di seguito:
$
"webdavd": {
"bindings": [
{
"port": 8090,
"address": "",
"enable_https": false,
"client_auth_type": 0,
"tls_cipher_suites": [],
"prefix": "",
"proxy_allowed": []
.....
Proteggi SFTPGO con SSL/TLS.
Una volta installato, è necessario creare certificati SSL/TLS per proteggere SFTPGo. Per questa guida, genereremo certificati autofirmati utilizzando OpenSSL come di seguito.
Innanzitutto, assicurati che OpenSSL sia installato.
##On Debian/ubuntu
sudo apt install openssl
##On RHEL/CentOS/Rocky Linux/Alma Linux
sudo yum install openssl
Una volta installato, emettere i certificati come di seguito.
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/sftpgo.pem -out /etc/sftpgo/sftpgo.pem
Fornire i dettagli richiesti per creare la chiave.
Imposta le autorizzazioni richieste.
sudo chmod 777 /etc/sftpgo/sftpgo.pem
sudo chmod 777 /etc/sftpgo.pem
Una volta creato, aggiungi le chiavi al contenitore (docker). Durante l'installazione normale, modifica il file JSON come di seguito.
sudo vim /etc/sftpgo/sftpgo.json
Nel file, abilita HTTPS e aggiungi i certificati.
"httpd": {
"bindings": [
{
........
"enable_https": true,
...
}
],
"templates_path": "/usr/share/sftpgo/templates",
"static_files_path": "/usr/share/sftpgo/static",
"openapi_path": "/usr/share/sftpgo/openapi",
"backups_path": "/srv/sftpgo/backups",
"web_root": "",
"certificate_file": "/etc/sftpgo/sftpgo.pem",
"certificate_key_file": "/etc/sftpgo.pem",
"ca_certificates": [],
....
Salva il file e riavvia SFTPGo.
sudo systemctl restart sftpgo
Metodo 3: installa SFTPGo utilizzando Docker
Sono inoltre disponibili immagini docker SFTPGo fornite nel registro dei contenitori Docker Hub e GitHub. Con questo metodo assicurati che Docker sia installato sul tuo sistema.
Puoi raggiungere questo obiettivo utilizzando gli aiuti della guida seguente:
- Come installare Docker CE su sistemi Linux
Una volta installato, esegui il contenitore SFTPGo utilizzando la sintassi seguente.
docker run --name some-sftpgo -p 8080:8080 -p 2022:2022 -d drakkan/sftpgo
Nel comando:
- some-sftpgo è il nome del contenitore
- drakkan/sftpgo è la versione SFTPGo specifica da utilizzare.
Puoi anche eseguire il contenitore con il servizio FTP abilitato. Ricorda che questo è disabilitato per impostazione predefinita e viene abilitato avviando l'istanza come di seguito
docker run --name some-sftpgo \
-p 8080:8080 \
-p 2022:2022 \
-p 2121:2121 \
-p 50000-50100:50000-50100 \
-e SFTPGO_FTPD__BINDINGS__0__PORT=2121 \
-e SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP=<your external ip here> \
-d drakkan/sftpgo
A questo punto, l'FTP è disponibile sulla porta 2121 e l'SFTP sulla 2022.
Abilita WebDAV e imposta la persistenza dei dati in cui:
- /my/own/sftpgodata è il percorso dei dati:
sudo mkdir -p /my/own/sftpgodata
sudo chown -R 1000:1000 /my/own/sftpgodata
- /my/own/sftpgohome come directory home per il contenitore
sudo mkdir /my/own/sftpgohome
sudo chown -R 1000:1000 /my/own/sftpgohome
Ora esegui il contenitore come di seguito
docker run --name some-sftpgo \
-p 8080:8080 \
-p 2022:2022 \
-p 8090:8090 \
--mount type=bind,source=/my/own/sftpgodata,target=/srv/sftpgo \
--mount type=bind,source=/my/own/sftpgohome,target=/var/lib/sftpgo \
-e SFTPGO_WEBDAVD__BINDINGS__0__PORT=8090 \
-d drakkan/sftpgo
In questo modo WebDAV è disponibile sulla porta 8090 con SFTP sul 2022.
Controlla lo stato del contenitore.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc98cb37b837 drakkan/sftpgo "sftpgo serve" 6 seconds ago Up 4 seconds 0.0.0.0:2022->2022/tcp, :::2022->2022/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8090->8090/tcp, :::8090->8090/tcp some-sftpgo
Passaggio 2: accedi all'interfaccia utente dell'amministratore web SFTPGO.
Con HTTPS abilitato, possiamo accedere a SFTPGO tramite il Web utilizzando l'URL https://IP_address:8080 o http://IP_address:8080 ma prima assicuriamoci che le porte necessarie siano consentite attraverso il firewall.
##For UFW
sudo ufw allow 8080
sudo ufw allow 2022
sudo ufw allow 8090
#For Firewalld
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8090/tcp
sudo firewall-cmd --permanent --add-port=2022/tcp
sudo firewall-cmd --reload
Crea l'utente e la password per SFTPGO
La dashboard di amministrazione apparirà come di seguito.
Crea un utente da utilizzare per connettersi a SFTPGo, con il nome utente e la password desiderati e, se lo desideri, aggiungi chiavi pubbliche.
Passaggio 3: testare SFTP utilizzando il client SFTP (FileZilla)
Inizia installando il pacchetto client SFTP (FileZilla)
$ sudo apt install filezilla #[On Debian, Ubuntu & Mint]
$ sudo yum install filezilla #[On RHEL/CentOS/Fedora & Rocky Linux/AlmaLinux]
$ sudo pacman -S filezilla #[On Arch Linux]
$ sudo zypper in filezilla #[On OpenSUSE]
Ora avvialo e configura la comunicazione in File->Gestione sito.
Crea una nuova connessione SFTP come sopra. Fai clic su Connetti e fidati delle impronte digitali.
Ora la nuova connessione apparirà come di seguito. Abbiamo la macchina locale sulla sinistra e il server SFTP sulla tua destra.
Carica un file dal tuo computer locale al server.
Puoi anche scaricare un file dal tuo server SFTP sul tuo computer locale come di seguito.
In caso di connessione client riuscita, la scheda di connessione sull'interfaccia Web viene aggiornata come di seguito.
Passaggio 4: testare SFTP utilizzando WebDav
Apri la finestra dei file e aggiungi la nuova connessione come di seguito.
Fornire le credenziali utente SFTPGo create.
Potrai visualizzare i file, modificarli e copiarli sul tuo computer.
Ecco.
Questo segna la fine di questa fantastica guida su come configurare un server FTP sicuro (SFTP) con WebDAV utilizzando SFTPGo. Spero che questo sia stato di grande significato per te.
Libri Linux consigliati da leggere:
- I migliori libri su Linux per principianti ed esperti
- I migliori libri sulla programmazione del kernel Linux
- I migliori libri di scripting Bash per Linux
- I migliori libri di studio sulla certificazione RHCSA/RHCE
- I migliori libri di certificazione CompTIA A+ più votati
- I migliori libri di studio sulla certificazione LPIC-1 e LPIC-2
Vedi altro:
- Come aggiungere un sito FTP su Windows Server
- Installa e configura il server FTP su Windows Server
- Configura il server TFTP su CentOS 8|RHEL 8|Rocky Linux 8