De release van de SFTPGo-server 2.5.0 is gepubliceerd, waarmee externe toegang tot bestanden mogelijk is via de protocollen SFTP, SCP/SSH, Rsync, HTTP en WebDav, evenals voor toegang tot Git-repositories met behulp van het SSH-protocol. Gegevens kunnen worden geleverd vanuit zowel het lokale bestandssysteem als uit externe opslag die compatibel is met Amazon S3, Google Cloud Storage en Azure Blob Storage. Opslag van gegevens in versleutelde vorm is mogelijk. Voor de opslag van gebruikersgegevens en metadata worden databases met SQL-ondersteuning of sleutel/waarde-formaten, zoals PostgreSQL, MySQL, SQLite, CockroachDB of bbolt, gebruikt, maar er is ook de mogelijkheid om metadata in het geheugen op te slaan zonder verbinding met een externe database. De code van het project is geschreven in de programmeertaal Go en wordt verspreid onder de GPLv3-licentie.
In de nieuwe versie:
- In de webinterface is de mogelijkheid toegevoegd om foutmeldingen te sluiten. In de webinterface voor de administrator is ondersteuning voor zoeken in de auditlog en het exporteren van gegevens toegevoegd, evenals beheer van lijsten. IP-adressen en netwerken, waarbij de mogelijkheid is geboden voor het configureren van SMTP en standaard ACME- en SFTP-instellingen. In de klant-webinterface is een eigen inlogformulier geïmplementeerd (in plaats van basic auth), zijn er kopieeroperaties toegevoegd en is de limiet voor uploads verwijderd.

- Ondersteuning voor wachtwoordbeleid is toegevoegd, bijvoorbeeld kunnen vereisten voor de sterkte van wachtwoorden worden gedefinieerd en kan de levensduur van een wachtwoord worden vastgesteld.
- In EventManager is de mogelijkheid toegevoegd om meldingen te tonen over verlopen wachtwoorden, is er een kopieerfunctie geïmplementeerd, en is er ondersteuning toegevoegd voor vooraf gedefinieerde acties (pre-*) en handlers die worden geactiveerd bij bepaalde acties (bijvoorbeeld een handler die wordt geactiveerd bij inloggen van een gebruiker).
- De mogelijkheid is toegevoegd om gebruikers administratieve rechten te verlenen.
- In de commandoregelinterface zijn commando's toegevoegd voor het resetten van het administratorwachtwoord en voor het controleren van de werking van de service.
- Ondersteuning voor conditionele operators bij het uitvoeren van massaal ombestemmen van bestanden aan de zijde van cloudproviders is toegevoegd.
- Ondersteuning voor het volgen en automatisch herstarten is toegevoegd. TLS-certificaten.
- De mogelijkheid is toegevoegd om eigen MIME-typen voor WebDAV te definiëren.
- Voor SSH is interactieve authenticatie met behulp van het toetsenbord standaard ingeschakeld.
- In de draagbare modus is de mogelijkheid toegevoegd om wachtwoorden vanuit een bestand te uploaden.
- Experimentele ondersteuning voor de service Terraform is toegevoegd.
Belangrijkste mogelijkheden van SFTPGo:
- Voor elke account wordt chroot-isolatie toegepast, die de toegang tot de thuismap van de gebruiker beperkt. Het is mogelijk om virtuele mappen te maken die verwijzen naar gegevens buiten de thuismap van de gebruiker.
- Accounts worden opgeslagen in een virtuele gebruikersdatabase die niet overlapt met de systeemgebruikersdatabase. Voor het opslaan van de gebruikersdatabase kunnen SQLite, MySQL, PostgreSQL, bbolt en opslag in het geheugen worden gebruikt. Er zijn middelen beschikbaar om virtuele en systeemaccounts aan elkaar te koppelen - directe of willekeurige mapping is mogelijk (één systeemgebruiker kan aan een andere virtuele gebruiker worden gekoppeld).
- Authenticatie via openbare sleutels, SSH-sleutels en wachtwoorden (inclusief interactieve authenticatie met invoer van het wachtwoord via het toetsenbord) wordt ondersteund. Het is mogelijk om meerdere sleutels voor elke gebruiker toe te wijzen, evenals het instellen van multifactor- en meervoudige authenticatie (bijvoorbeeld kan na succesvolle authenticatie met de sleutel additioneel om een wachtwoord worden gevraagd).
- Voor elke gebruiker kan een andere authenticatiemethode worden ingesteld, evenals het definiëren van eigen methoden die worden geïmplementeerd via het aanroepen van externe authenticatieprogramma's (bijvoorbeeld voor authenticatie via LDAP) of het versturen van verzoeken via de HTTP API.
- Het is mogelijk om externe handlers of HTTP API-aanroepen aan te sluiten voor het dynamisch wijzigen van de gebruikersparameters die vóór de gebruikersinlog worden aangeroepen. Dynamisch gebruikers aanmaken bij inloggen wordt ondersteund.
- Ondersteuning voor individuele quota voor gegevensgrootte en aantal bestanden.
- Ondersteuning voor bandbreedtebeperkingen met afzonderlijke instellingen voor inkomend en uitgaand verkeer, evenals beperkingen op het aantal gelijktijdige verbindingen.
- Toegangsbeheertools die gebonden zijn aan gebruikers of mappen (het is mogelijk om het bekijken van bestandslijsten te beperken, uploads, downloads, overschrijven, verwijderen, hernoemen of wijziging van toegangsrechten te verbieden, het maken van mappen of symbolische links te verbieden, enz.).
- Voor elke gebruiker kunnen individuele netwerkbeperkingen worden ingesteld, bijvoorbeeld toegang kan alleen vanaf bepaalde IP-adressen of subnetten worden toegestaan.
- Er wordt ondersteuning geboden voor het koppelen van contentfiltering voor afzonderlijke gebruikers en catalogi (bijvoorbeeld, het blokkeren van uploads van bestanden met bepaalde extensies).
- Het is mogelijk om handlers te koppelen die worden uitgevoerd bij verschillende bestandsbewerkingen (upload, verwijderen, hernoemen, enz.). Naast het aanroepen van handlers wordt ook ondersteuning geboden voor het versturen van meldingen in de vorm van HTTP-verzoeken.
- Automatische beëindiging van inactieve verbindingen.
- Atomaire configuratie-updates zonder verbroken verbindingen.
- Het bieden van metrics voor monitoring in Prometheus.
- Ondersteuning voor het HAProxy PROXY-protocol voor het organiseren van load balancing of het proxy'en van verbindingen naar SFTP/SCP-diensten zonder verlies van informatie over het IP-adres van de gebruiker.
- REST API voor gebruikers- en catalogusbeheer, het maken van back-ups en het genereren van rapporten over actieve verbindingen.
- Webinterface (http://127.0.0.1:8080/web) voor configuratie en monitoring (configuratie via gewone configuratiebestanden wordt ook ondersteund).

- De mogelijkheid om instellingen te definiëren in JSON-, TOML-, YAML-, HCL- en envfile-indelingen.
- Ondersteuning voor SSH-verbindingen met beperkte toegang tot systeemcommando's. Bijvoorbeeld, commando's die nodig zijn voor Git (git-receive-pack, git-upload-pack, git-upload-archive) en rsync zijn toegestaan, evenals een aantal ingebouwde commando's (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy en sftpgo-remove).
- Portable modus voor het delen van één gemeenschappelijke catalogus met automatische generatie van inloggegevens voor verbinding, aangekondigd via multicast DNS.
- Ingebouwd profileringssysteem voor prestatie-analyse.
- Vereenvoudigd proces voor het migreren van Linux-systeemaccounts.
- Opslag van logs in JSON-indeling.
- Ondersteuning voor virtuele catalogi (bijvoorbeeld, de inhoud van een bepaalde catalogus kan worden geleverd vanuit een externe cloudopslag in plaats van de lokale bestandssystemen).
- Ondersteuning voor cryptfs voor transparante versleuteling van gegevens in realtime bij opslag in het bestandssysteem en ontsleuteling bij levering.
- Ondersteuning voor het doorsturen van verbindingen naar andere SFTP-servers.
- De mogelijkheid om SFTPGo te gebruiken als een SFTP-subsysteem voor OpenSSH.
- De mogelijkheid om account- en vertrouwelijke gegevens in versleutelde vorm op te slaan met behulp van KMS-servers (Key Management Services), zoals Vault, GCP KMS, AWS KMS.
- Ondersteuning voor twee-factor-authenticatie met gebruik van eenmalige wachtwoorden met een beperkte levensduur (TOTP, RFC 6238). Als authenticators kunnen applicaties zoals Authy en Google Authenticator worden gebruikt.
- Uitbreiding van functionaliteit via plugins. Bijvoorbeeld plugins met ondersteuning voor extra sleuteluitwisselingsdiensten, integratie van het Publish/Subscribe-schema, opslag en zoeken van informatie over gebeurtenissen in databases.
Bron: opennet.ru


