Udgaven af SFTPGo-serveren 2.2 er offentliggjort, hvilket muliggør fjernadgang til filer ved hjælp af protokollerne SFTP, SCP/SSH, Rsync, HTTP og WebDav. SFTPGo kan også anvendes til at give adgang til Git-depot ved hjælp af SSH-protokollen. Data kan leveres fra både det lokale filsystem og fra eksterne lagre, der er kompatible med Amazon S3, Google Cloud Storage og Azure Blob Storage. Data kan opbevares i krypteret form. Til opbevaring af brugerdata og metadata anvendes databaser, der understøtter SQL- eller nøgle/værdi-format, såsom PostgreSQL, MySQL, SQLite, CockroachDB eller bbolt, men der er også mulighed for at opbevare metadata i RAM uden ekstern database. Projektets kode er skrevet i Go og distribueres under GPLv3-licensen.
I den nye version:
- Der er tilføjet støtte til to-faktor-autentifikation ved brug af engangspasswords med begrænset holdbarhed (TOTP, RFC 6238). Autentifikatorer som Authy og Google Authenticator kan anvendes.
- Muligheden for at udvide funktionaliteten via plugins er implementeret. Blandt de allerede tilgængelige plugins er: støtte til ekstra nøgleudvekslingstjenester, integration af Publish/Subscribe-schemaet, samt opbevaring og søgning af begivenhedsinformation i databasen.
- REST API'en har fået tilføjet støtte til autentifikation via nøgler, ud over JWT-tokens, og muligheden for at fastsætte databælter (begrænsning af datalivscyklus) knyttet til specifikke mapper og brugere. Swagger UI-grænsefladen er aktiveret som standard til navigation i API-ressourcer uden brug af eksterne værktøjer.
- Webgrænsefladen har fået tilføjet støtte til skriveoperationer (upload af filer, oprettelse af mapper, omdøbning og sletning), muligheden for at nulstille password med bekræftelse via e-mail, samt integration af tekstfilredaktør og PDF-viewer. Muligheden for at oprette HTTP-links er tilføjet for at give eksterne brugere adgang til specifikke filer og mapper, med mulighed for at fastsætte individuelle adgangskoder, begrænsninger på IP-adresser, fastsætte linkets holdbarhed og for at begrænse antallet af downloads.
Hovedfunktioner i SFTPGo:
- Der anvendes chroot-isolering for hver konto, der begrænser adgangen til brugerens hjemmekatalog. Det er muligt at oprette virtuelle mapper, der refererer til data uden for brugerens hjemmekatalog.
- Konti opbevares i en virtuel brugerdatabase, der ikke overlapper med systemets bruger-DB. SQLite, MySQL, PostgreSQL, bbolt og opbevaring i hukommelsen kan anvendes til opbevaring af brugerdatabasen. Der gives værktøjer til at matche virtuelle og systembrugerkonti - direkte eller vilkårligt match (én systembruger kan matches med en anden virtuel bruger).
- Der understøttes godkendelse via offentlige nøgler, SSH-nøgler og adgangskoder (herunder interaktiv godkendelse med indtastning af adgangskode fra tastaturet). Det er muligt at knytte flere nøgler til hver bruger samt konfigurere multifaktor- og flertrins-godkendelse (for eksempel kan der efter vellykket godkendelse med en nøgle blive anmodet om en adgangskode).
- For hver bruger er det muligt at konfigurere forskellige godkendelsesmetoder samt definere egne metoder, der implementeres gennem kald af eksterne autentifikationsprogrammer (for eksempel til godkendelse via LDAP) eller ved at sende anmodninger gennem HTTP API.
- Det er muligt at tilslutte eksterne behandlere eller HTTP API-kald for dynamisk at ændre brugerparametre, der aktiveres før brugerens login. Dynamisk oprettelse af brugere understøttes ved tilslutning.
- Understøttelse af individuelle kvoter for datastørrelse og antal filer.
- Understøttelse af båndbreddebegrænsning med separat konfiguration af begrænsninger for indgående og udgående trafik, samt begrænsninger for antal samtidige forbindelser.
- Adgangskontroller, der virker i forbindelse med brugeren eller mappen (det er muligt at begrænse visningen af filernes liste, forbyde upload, download, overskrivning, sletning, omdøbning eller ændring af adgangsrettigheder, forbyde oprettelse af mapper eller symboliske links osv.).
- For each user, individual network limits can be set, for example, allowing access only from specific IPs or subnets.
- Support is provided for attaching content loading filters linked to individual users and directories (for example, blocking the upload of files with certain extensions).
- It is possible to bind handlers that are triggered during various file operations (upload, delete, rename, etc.). In addition to calling handlers, sending notifications in the form of HTTP requests is supported.
- Automatic disconnection of inactive connections.
- Atomic configuration updates without breaking connections.
- Providing metrics for monitoring in Prometheus.
- The HAProxy PROXY protocol is supported for load balancing or proxying connections to SFTP/SCP services without losing information about the user's original IP address.
- REST API for managing users and directories, creating backups, and generating reports on active connections.
- Web interface (http://127.0.0.1:8080/web) for configuration and monitoring (configuration can also be set via regular configuration files).
- The ability to define settings in JSON, TOML, YAML, HCL, and envfile formats.
- Support for SSH connections with limited access to system commands. For example, running commands necessary for Git (git-receive-pack, git-upload-pack, git-upload-archive) and rsync is allowed, as well as several built-in commands (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy, and sftpgo-remove).
- Portable mode for sharing a common directory with automatically generated connection credentials announced via multicast DNS.
- Built-in profiling system for performance analysis.
- Simplified process for migrating Linux system accounts.
- Log storage in JSON format.
- Support for virtual directories (for example, the content of a specific directory can be served not from the local filesystem but from external cloud storage).
- Support for cryptfs for transparent on-the-fly encryption of data when saving to the filesystem and decryption when serving.
- Support for forwarding connections to other SFTP servers.
- The ability to use SFTPGo as an SFTP subsystem for OpenSSH.
- Mulighed for opbevaring af følsomme og fortrolige data i krypteret form ved brug af KMS-servere (Key Management Services) som Vault, GCP KMS, AWS KMS.
Kilde: opennet.ru
