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
