Pubblicata l'uscita del server SFTPGo 2.2, che consente di organizzare l'accesso remoto ai file tramite i protocolli SFTP, SCP/SSH, Rsync, HTTP e WebDav. SFTPGo può anche essere utilizzato per fornire accesso ai repository Git utilizzando il protocollo SSH. I dati possono provenire sia dal sistema di file locale che da archivi esterni compatibili con Amazon S3, Google Cloud Storage e Azure Blob Storage. È possibile memorizzare i dati in forma cifrata. Per la memorizzazione della base utenti e dei metadati vengono utilizzati database relazionali con supporto SQL o formato chiave/valore, come PostgreSQL, MySQL, SQLite, CockroachDB o bbolt, ma è anche possibile memorizzare i metadati in memoria, senza necessità di connettersi a un database esterno. Il codice del progetto è scritto in Go e distribuito con licenza GPLv3.
Nella nuova versione:
- Aggiunta il supporto per l'autenticazione a due fattori utilizzando password temporanee (TOTP, RFC 6238). Possono essere utilizzate applicazioni come Authy e Google Authenticator come autenticatori.
- Implementata la possibilità di estendere le funzionalità tramite plugin. Tra i plugin già disponibili: supporto per servizi di scambio chiavi aggiuntivi, integrazione dello schema Publish/Subscribe, memorizzazione e ricerca di informazioni sugli eventi nel database.
- Nell'API REST è stato aggiunto il supporto per l'autenticazione basata su chiavi, oltre ai token JWT, ed è stata fornita la possibilità di definire politiche di memorizzazione dei dati (limite di tempo di vita dei dati) collegato a singole directory e utenti. Per impostazione predefinita, è attivata l'interfaccia Swagger UI per la navigazione nelle risorse API senza utilizzare strumenti esterni.
- Nell'interfaccia web è stato aggiunto il supporto per le operazioni di scrittura (caricamento file, creazione di directory, rinomina e eliminazione), implementata la possibilità di reimpostare la password con conferma via email, integrati editor di file di testo e visualizzatore PDF. È stata aggiunta la possibilità di creare link HTTP per fornire accesso a singoli file e directory a utenti esterni, con la possibilità di impostare una password di accesso separata, limitazioni indirizzi IP., impostare il tempo di vita del link e limitare il numero di download.
Caratteristiche principali di SFTPGo:
- Per ogni account viene applicata l'isolamento chroot, che limita l'accesso alla home directory dell'utente. È possibile creare directory virtuali che fanno riferimento ai dati al di fuori della home directory dell'utente.
- Gli account sono memorizzati in un database virtuale degli utenti, che non si sovrappone al database degli utenti di sistema. Per memorizzare il database degli utenti possono essere utilizzati SQLite, MySQL, PostgreSQL, bbolt e memorizzazione in memoria. Sono forniti strumenti per l'abbinamento degli account virtuali e di sistema, consentendo un abbinamento diretto o arbitrario (un utente di sistema può essere abbinato a un altro utente virtuale).
- È supportata l'autenticazione tramite chiavi pubbliche, chiavi SSH e password (inclusa l'autenticazione interattiva con inserimento password da tastiera). È possibile associare più chiavi per ogni utente, così come configurare l'autenticazione multipla e a più fasi (ad esempio, in caso di autenticazione riuscita tramite chiave, potrebbe essere richiesto un ulteriore inserimento di password).
- Per ogni utente è possibile configurare diversi metodi di autenticazione, nonché definire metodi personalizzati, implementati tramite chiamate a programmi di autenticazione esterni (ad esempio, per autenticazione LDAP) o l'invio di richieste attraverso API HTTP.
- È possibile collegare gestori esterni o chiamate API HTTP per modificare dinamicamente i parametri utente, invocati prima dell'accesso dell'utente. È supportata la creazione dinamica di utenti all'accesso.
- Supporto per quote individuali sulla dimensione dei dati e sul numero di file.
- Supporto per limitazioni della larghezza di banda con configurazione separata dei limiti per il traffico in entrata e in uscita, nonché limiti sul numero di connessioni simultanee.
- Strumenti per il controllo degli accessi, funzionanti in base all'utente o alla directory (è possibile limitare la visualizzazione dell'elenco dei file, vietare il caricamento, il download, la sovrascrittura, la cancellazione, la rinominazione o la modifica delle autorizzazioni, vietare la creazione di directory o collegamenti simbolici, ecc.).
- Per ogni utente è possibile definire limitazioni di rete individuali, ad esempio, è possibile consentire l'accesso solo da determinati IP o subnet.
- È supportata la connessione di filtri per il contenuto caricato, legati a singoli utenti e directory (ad esempio, è possibile bloccare il caricamento di file con determinate estensioni).
- È possibile associare gestori che vengono attivati durante diverse operazioni con i file (caricamento, eliminazione, rinomina, ecc.). Oltre all'invocazione dei gestori, è supportinata l'invio di notifiche sotto forma di richieste HTTP.
- Chiusura automatica delle connessioni inattive.
- Aggiornamento atomico della configurazione senza interruzione delle connessioni.
- Fornitura di metriche per il monitoraggio in Prometheus.
- È supportato il protocollo HAProxy PROXY per l'organizzazione del bilanciamento del carico o del proxy delle connessioni ai servizi SFTP/SCP senza perdere informazioni sull'indirizzo IP originale dell'utente.
- REST API per la gestione degli utenti e delle directory, la creazione di backup e la generazione di report sulle connessioni attive.
- Interfaccia web (http://127.0.0.1:8080/web) per la configurazione e il monitoraggio (è supportata anche la configurazione tramite normali file di configurazione).
- Possibilità di definire impostazioni nei formati JSON, TOML, YAML, HCL e envfile.
- Supporto per la connessione tramite SSH con accesso limitato ai comandi di sistema. Ad esempio, è consentito eseguire comandi necessari per l'uso di Git (git-receive-pack, git-upload-pack, git-upload-archive) e rsync, così come alcuni comandi incorporati (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy e sftpgo-remove).
- Modalità portable per la condivisione di una directory comune con generazione automatica delle credenziali di accesso, annunciate tramite multicast DNS.
- Sistema di profilazione integrato per l'analisi delle prestazioni.
- Procedura semplificata per la migrazione degli account di sistema Linux.
- Archiviazione di log in formato JSON.
- Supporto per directory virtuali (ad esempio, il contenuto di una determinata directory può essere fornito non dalla FS locale, ma da un archivio cloud esterno).
- Supporto per cryptfs per la crittografia trasparente dei dati in tempo reale durante il salvataggio nella FS e decifratura durante il recupero.
- Supporto per il forwarding delle connessioni ad altri server SFTP.
- Possibilità di utilizzare SFTPGo come sottosistema SFTP per OpenSSH.
- Possibilità di memorizzare dati di accesso e sensibili in forma crittografata utilizzando server KMS (Key Management Services), come Vault, GCP KMS, AWS KMS.
Fonte: opennet.ru
