La version 2.2 du serveur SFTPGo a Ă©tĂ© publiĂ©e, permettant un accĂšs Ă distance aux fichiers via les protocoles SFTP, SCP/SSH, Rsync, HTTP et WebDav. SFTPGo peut Ă©galement ĂȘtre utilisĂ© pour fournir un accĂšs Ă des dĂ©pĂŽts Git en utilisant le protocole SSH. Les donnĂ©es peuvent ĂȘtre rĂ©cupĂ©rĂ©es Ă la fois d'un systĂšme de fichiers local et de stockages externes compatibles avec Amazon S3, Google Cloud Storage et Azure Blob Storage. Il est possible de stocker des donnĂ©es de maniĂšre chiffrĂ©e. Pour le stockage de la base d'utilisateurs et des mĂ©tadonnĂ©es, des SGBD prenant en charge SQL ou le format clĂ©/valeur, comme PostgreSQL, MySQL, SQLite, CockroachDB ou bbolt, sont utilisĂ©s, mais il est aussi possible de stocker les mĂ©tadonnĂ©es en mĂ©moire vive, sans nĂ©cessiter de connexion Ă un SGBD externe. Le code du projet est Ă©crit en Go et est distribuĂ© sous la licence GPLv3.
Dans la nouvelle version :
- Ajout de la prise en charge de l'authentification Ă deux facteurs avec des mots de passe Ă usage unique Ă durĂ©e limitĂ©e (TOTP, RFC 6238). Des applications telles que Authy et Google Authenticator peuvent ĂȘtre utilisĂ©es comme authentificateurs.
- La possibilitĂ© d'Ă©tendre les fonctionnalitĂ©s via des plugins a Ă©tĂ© mise en Ćuvre. Parmi les plugins dĂ©jĂ disponibles : prise en charge de services d'Ă©change de clĂ©s supplĂ©mentaires, intĂ©gration du schĂ©ma Publish/Subscribe, stockage et recherche d'informations sur les Ă©vĂ©nements dans un SGBD.
- L'API REST a ajouté la prise en charge de l'authentification par clés, en plus des tokens JWT, ainsi que la possibilité de définir des politiques de stockage des données (restriction de la durée de vie des données) liées à des répertoires et utilisateurs particuliers. L'interface Swagger UI est activée par défaut pour naviguer dans les ressources de l'API sans utiliser d'outils externes.
- L'interface web a ajouté la prise en charge des opérations d'écriture (téléchargement de fichiers, création de répertoires, renommage et suppression), la possibilité de réinitialiser le mot de passe avec confirmation par email, l'intégration d'un éditeur de fichiers texte et d'un visualiseur de documents PDF. Il est possible de créer des liens HTTP pour fournir aux utilisateurs externes l'accÚs à des fichiers et répertoires spécifiques, avec la possibilité de définir un mot de passe d'accÚs distinct, de restreindre la adresses IPdurée de vie du lien et de limiter le nombre de téléchargements.
Principales fonctionnalités de SFTPGo :
- Pour chaque compte, une isolation chroot est appliquée, limitant l'accÚs au répertoire personnel de l'utilisateur. Il est possible de créer des répertoires virtuels, faisant référence à des données en dehors du répertoire personnel de l'utilisateur.
- Les comptes sont stockĂ©s dans une base de donnĂ©es virtuelle d'utilisateurs, sĂ©parĂ©e de la base de donnĂ©es systĂšme des utilisateurs. SQLite, MySQL, PostgreSQL, bbolt et le stockage en mĂ©moire peuvent ĂȘtre utilisĂ©s pour gĂ©rer la base de donnĂ©es des utilisateurs. Des outils sont fournis pour faire correspondre les comptes virtuels et systĂšmes â il est possible d'effectuer une correspondance directe ou arbitraire (un utilisateur systĂšme peut ĂȘtre associĂ© Ă un autre utilisateur virtuel).
- L'authentification par clĂ©s publiques, clĂ©s SSH et mots de passe est prise en charge (y compris l'authentification interactive avec saisie du mot de passe via le clavier). Il est possible d'associer plusieurs clĂ©s Ă chaque utilisateur, ainsi que de configurer une authentification multifactorielle et par Ă©tapes (par exemple, en cas d'authentification rĂ©ussie par clĂ©, un mot de passe peut ĂȘtre demandĂ© en complĂ©ment).
- Pour chaque utilisateur, il est possible de configurer diffĂ©rents mĂ©thodes d'authentification, ainsi que de dĂ©finir des mĂ©thodes personnalisĂ©es, mises en Ćuvre par des appels Ă des programmes d'authentification externes (par exemple, pour l'authentification via LDAP) ou l'envoi de requĂȘtes via l'API HTTP.
- Il est possible de connecter des gestionnaires externes ou d'appels d'API HTTP pour modifier dynamiquement les paramÚtres utilisateurs appelés avant la connexion de l'utilisateur. La création dynamique d'utilisateurs lors de la connexion est prise en charge.
- Prise en charge des quotas individuels pour la taille des données et le nombre de fichiers.
- Prise en charge de la limitation de la bande passante avec configuration séparée pour le trafic entrant et sortant, ainsi que des limitations sur le nombre de connexions simultanées.
- Moyens de contrÎle d'accÚs agissant en fonction de l'utilisateur ou du répertoire (il est possible de restreindre l'affichage de la liste des fichiers, d'interdire le téléchargement, le transfert, la réécriture, la suppression, le renommage ou la modification des droits d'accÚs, d'interdire la création de répertoires ou de liens symboliques, etc.).
- Pour chaque utilisateur, il est possible de définir des limitations réseau individuelles, par exemple, permettre l'accÚs uniquement à partir de certaines adresses IP ou sous-réseaux.
- Prise en charge de la connexion de filtres de contenu téléchargé en fonction des utilisateurs individuels et des répertoires (par exemple, il est possible de bloquer le téléchargement de fichiers avec une certaine extension).
- Il est possible de lier des gestionnaires qui s'exĂ©cutent lors de diffĂ©rentes opĂ©rations sur le fichier (tĂ©lĂ©chargement, suppression, renommage, etc.). En plus de l'appel des gestionnaires, il est pris en charge l'envoi de notifications sous forme de requĂȘtes HTTP.
- Fermeture automatique des connexions inactives.
- Mise Ă jour atomique de la configuration sans interruption des connexions.
- Fourniture de métriques pour la surveillance dans Prometheus.
- Prise en charge du protocole HAProxy PROXY pour organiser l'équilibrage de charge ou le proxy des connexions vers les services SFTP/SCP sans perte d'informations sur l'adresse IP d'origine de l'utilisateur.
- API REST pour la gestion des utilisateurs et des répertoires, la création de sauvegardes et la génération de rapports sur les connexions actives.
- Interface web (http://127.0.0.1:8080/web) pour la configuration et la surveillance (la configuration via des fichiers de configuration traditionnels est également prise en charge).
- Possibilité de définir des paramÚtres dans les formats JSON, TOML, YAML, HCL et envfile.
- Prise en charge de la connexion SSH avec un accÚs limité aux commandes systÚme. Par exemple, l'exécution de commandes nécessaires pour le fonctionnement de Git (git-receive-pack, git-upload-pack, git-upload-archive) et rsync est autorisée, ainsi que quelques commandes intégrées (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy et sftpgo-remove).
- Mode portable pour le partage d'un répertoire commun avec génération automatique des identifiants de connexion, annoncés via multicast DNS.
- SystÚme de profilage intégré pour analyser les performances.
- Processus simplifié de migration des comptes utilisateurs Linux.
- Stockage des journaux au format JSON.
- Prise en charge des rĂ©pertoires virtuels (par exemple, le contenu d'un rĂ©pertoire donnĂ© peut ĂȘtre servi non pas Ă partir du systĂšme de fichiers local, mais depuis un stockage cloud externe).
- Prise en charge de cryptfs pour le chiffrement transparent des données à la volée lors de l'enregistrement dans le systÚme de fichiers et déchiffrement lors de la restitution.
- Prise en charge du transfert de connexions vers d'autres serveurs SFTP.
- Possibilité d'utiliser SFTPGo comme sous-systÚme SFTP pour OpenSSH.
- Possibilité de stocker des données d'identification et sensibles sous forme chiffrée en utilisant des serveurs KMS (Key Management Services) tels que Vault, GCP KMS, AWS KMS.
Source : opennet.ru
