Objavljen je izdanak SFTPGo servera 2.2 koji omogućava organizaciju daljinskog pristupa datotekama putem protokola SFTP, SCP/SSH, Rsync, HTTP i WebDav. SFTPGo se također može koristiti za pružanje pristupa Git repozitorijima koristeći SSH protokol. Podaci se mogu davati iz lokalnog datotečnog sistema kao i iz vanjskih skladišta kompatibilnih s Amazon S3, Google Cloud Storage i Azure Blob Storage. Moguće je pohranjivanje podataka u šifriranom obliku. Za pohranu korisničke baze i metapodataka koriste se SQL ili formati ključ/vrijednost kao što su PostgreSQL, MySQL, SQLite, CockroachDB ili bbolt, ali postoji i mogućnost pohrane metapodataka u radnoj memoriji, koja ne zahtijeva povezivanje s vanjskom bazom podataka. Kod projekta napisan je na jeziku Go i distribuira se pod GPLv3 licencom.
V novi različici:
- Dodana je podrška za dvofaktorsku autentifikaciju koristeći jednokratne lozinke s ograničenim vremenom trajanja (TOTP, RFC 6238). Mogu se koristiti aplikacije kao što su Authy i Google Authenticator kao autentifikatori.
- Implementirana je mogućnost proširenja funkcionalnosti putem dodataka. Među već dostupnim dodacima su: podrška za dodatne servise razmjene ključeva, integracija Publish/Subscribe sheme, pohrana i pretraga informacija o događajima u bazi podataka.
- REST API je dobio podršku za autentifikaciju putem ključeva, pored JWT tokena, a također je omogućena definicija politika pohranjivanja podataka (ograničenje trajanja podataka) vezanih uz pojedinačne direktorije i korisnike. Po defaultu je aktivirano Swagger UI sučelje za navigaciju kroz API resurse bez korištenja vanjskih alata.
- Web sučelju je dodana podrška za operacije pisanja (upload datoteka, kreiranje direktorija, preimenuvanje i brisanje), implementirana je mogućnost resetiranja lozinke uz potvrdu putem e-maila, integrirani su uređivač tekstualnih datoteka i preglednik PDF dokumenata. Dodana je mogućnost kreiranja HTTP linkova za omogućavanje vanjskim korisnicima pristup pojedinačnim datotekama i direktorijima, uz mogućnost definiranja posebne lozinke, ograničenja trajanja IP-naslovov, kao i limitiranja broja preuzimanja.
Glavne funkcionalnosti SFTPGo:
- Za vsak račun se uporablja chroot izolacija, ki omejuje dostop do domačega imenika uporabnika. Možno je ustvarjanje virtualnih imenikov, ki se navezujejo na podatke zunaj uporabnikovega domačega imenika.
- Računi se shranjujejo v virtualni bazi uporabnikov, ki ne prekriva sistemske baze uporabnikov. Za shranjevanje baze uporabnikov se lahko uporabljajo SQLite, MySQL, PostgreSQL, bbolt in shranjevanje v pomnilniku. Na voljo so sredstva za usklajevanje virtualnih in sistemskih računov - mogoče je neposredno ali poljubno usklajevanje (en sistemski uporabnik je lahko usklajen z drugim virtualnim uporabnikom).
- Podprta je avtentikacija z javnimi ključi, SSH ključi in gesli (vključno z interaktivno avtentikacijo z vnosom gesla s tipkovnice). Možna je povezava več ključev za vsakega uporabnika ter nastavitev večfaktorske in večstopenjske avtentikacije (na primer, ob uspešni avtentikaciji s ključem lahko dodatno zahtevamo geslo).
- Za vsakega uporabnika je možna nastavitev različnih metod avtentikacije ter določitev lastnih metod, izvedenih prek klica zunanjih avtentikacijskih programov (na primer za avtentikacijo prek LDAP) ali pošiljanje zahtevkov prek HTTP API.
- Možno je povezovanje zunanjih obdelovalcev ali klicev HTTP API za dinamično spreminjanje параметров uporabnika, ki se izvajajo pred prijavo uporabnika. Podprto je dinamično ustvarjanje uporabnikov ob povezavi.
- Podpora individualnim kvotam za velikost podatkov in število datotek.
- Podpora omejitvi prepustnosti z ločenim nastavljanjem omejitev za vhodni in izhodni promet ter omejitvami na število hkratnih povezav.
- Orodja za razmejevanje dostopa, ki delujejo v navezavi na uporabnika ali imenik (lahko omejite ogled seznama datotek, prepovedujete nalaganje, prenos, prepisovanje, brisanje, preimenovanje ali spreminjanje pravic dostopa, prepovedujete ustvarjanje imenikov ali simboličnih povezav itd.).
- Za vsakega uporabnika lahko določite individualna omrežna omejitev, na primer, lahko dovolimo dostop samo z določenih IP naslovov ali podomrežij.
- Podprto je povezovanje filtrov prenesenih vsebin v povezavi z določenimi uporabniki in imeniki (na primer, lahko blokiramo nalaganje datotek z določenimi razširitvami).
- Možna je vezava obdelovalcev, ki se izvajajo pri različnih operacijah z datoteko (nalaganje, brisanje, preimenovanje itd.). Poleg klica obdelovalcev se tudi pošiljajo obvestila v obliki HTTP zahtev.
- Samodejno zaključevanje neaktivnih povezav.
- Atomarna posodobitev konfiguracije brez prekinitev povezav.
- Zagotavljanje metrik za spremljanje v Prometheus.
- Podprt je protokol HAProxy PROXY za organizacijo uravnoteženja obremenitve ali posredovanje povezav do SFTP/SCP storitev brez izgube informacij o izvorni IP naslovu uporabnika.
- REST API za upravljanje uporabnikov in imenikov, ustvarjanje varnostnih kopij in oblikovanje poročil o aktivnih povezavah.
- Web-vmesnik (http://127.0.0.1:8080/web) za nastavitev in spremljanje (podprta je tudi nastavitev prek navadnih datotek konfiguracije).
- Možnost določanja nastavitev v formatih JSON, TOML, YAML, HCL in envfile.
- Podpora za povezovanje preko SSH z omejenim dostopom do sistemskih ukazov. Na primer, dovoljeno je izvajanje ukazov, potrebnih za delovanje Gita (git-receive-pack, git-upload-pack, git-upload-archive) in rsync, pa tudi nekaj vgrajenih ukazov (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy in sftpgo-remove).
- Prenosni način za skupno rabo enega skupnega imenika z avtomatskim ustvarjanjem poveril za povezovanje, napovedanih preko multicast DNS.
- Vgrajen sistem profiliranja za analizo uspešnosti.
- Poenostavljen postopek migracije sistemskih uporabniških računov Linux.
- Shranjevanje dnevnikov v formatu JSON.
- Podpora za virtualne imenike (na primer, vsebino določenega imenika lahko dostavimo ne iz lokalnega FS, temveč iz zunanjega oblačnega skladišča).
- Podpora za cryptfs za prozorno šifriranje podatkov v realnem času pri shranjevanju v FS in dešifriranje pri dostavi.
- Podpora za posredovanje povezav k drugim SFTP strežnikom.
- Možnost uporabe SFTPGo kot SFTP podsystems za OpenSSH.
- Možnost shranjevanja računovodskih in zaupnih podatkov v šifrirani obliki z uporabo strežnikov KMS (Key Management Services), kot so Vault, GCP KMS, AWS KMS.
Izvor: opennet.ru
