Objavljen je SFTPGo 2.2 server koji omogućava organizaciju udaljenog pristupa datotekama putem protokola SFTP, SCP/SSH, Rsync, HTTP i WebDav. SFTPGo se može koristiti i za davanje pristupa Git repozitorijima korištenjem SSH protokola. Podaci se mogu dostavljati s lokalnog datotečnog sustava ili 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 podržane baze podataka ili format ključ/vrijednost, poput PostgreSQL, MySQL, SQLite, CockroachDB ili bbolt, ali postoji i mogućnost pohrane metapodataka u radnoj memoriji, što ne zahtijeva povezivanje vanjske BDP. Kod projekta napisan je na jeziku Go i distribuira se pod GPLv3 licencom.
U novoj verziji:
- Dodana je podrška za dvofaktorsku autentifikaciju koristeći jednokratne lozinke s ograničenim vremenom trajanja (TOTP, RFC 6238). Kao autentifikatori mogu se koristiti aplikacije poput Authy i Google Authenticator.
- Implementirana je mogućnost proširenja funkcionalnosti putem dodataka. Među već dostupnim dodacima su: podrška za dodatne usluge razmjene ključeva, integracija Publish/Subscribe sheme, te pohrana i pretraživanje informacija o događajima u BDP-u.
- U REST API dodana je podrška za autentifikaciju na temelju ključeva, osim JWT tokena, a također je osigurana mogućnost postavljanja politika pohrane podataka (ograničavanje vremena trajanja podataka) u vezi s posebnim direktorijima i korisnicima. Prema zadanim postavkama, aktivirano je Swagger UI sučelje za navigaciju kroz resurse API-a bez potrebe za vanjskim alatima.
- U web sučelje dodana je podrška za operacije pisanja (učitavanje datoteka, stvaranje direktorija, preimenovanje i brisanje), implementirana je mogućnost resetiranja lozinke uz potvrdu putem e-pošte, integrirani su uređivač tekstualnih datoteka i preglednik PDF dokumenata. Dodana je mogućnost stvaranja HTTP veza kako bi se vanjskim korisnicima omogućio pristup pojedinačnim datotekama i direktorijima, uz mogućnost postavljanja posebne lozinke za pristup, ograničenja prema IP adrese, određivanja vremena trajanja veze i ograničenja broja preuzimanja.
Osnovne mogućnosti SFTPGo:
- Za svaki korisnički račun primjenjuje se chroot izolacija, koja ograničava pristup korisničkom home direktoriju. Moguće je stvaranje virtualnih direktorija koji upućuju na podatke izvan korisničkog home direktorija.
- Korisnički računi se pohranjuju u virtualnoj bazi korisnika, koja se ne preklapa s sistemskom bazom korisnika. Za pohranu baze korisnika mogu se koristiti SQLite, MySQL, PostgreSQL, bbolt i pohrana u memoriji. Pružaju se alati za mapiranje virtualnih i sistemskih računa — moguće je izravno ili proizvoljno mapiranje (jedan sistemski korisnik može biti mapiran na drugog virtualnog korisnika).
- Podržava se autentifikacija putem javnih ključeva, SSH ključeva i lozinki (uključujući interaktivnu autentifikaciju sa unosom lozinke sa tipkovnice). Moguće je vezati više ključeva za svakog korisnika, kao i postaviti više faktorsku i višestepenu autentifikaciju (na primjer, u slučaju uspješne autentifikacije putem ključa, može se dodatno zatražiti lozinka).
- Za svakog korisnika moguće je postaviti različite metode autentifikacije, kao i definisati vlastite metode, implementirane pozivom vanjskih programa za autentifikaciju (na primjer, za autentifikaciju putem LDAP-a) ili slanjem zahtjeva putem HTTP API-ja.
- Moguće je povezivanje vanjskih obrada ili poziva HTTP API-a za dinamičko mijenjanje korisničkih parametara, koji se pozivaju prije korisničkog prijavljivanja. Podržano je dinamičko kreiranje korisnika prilikom povezivanja.
- Podrška za individualne kvote za veličinu podataka i broj datoteka.
- Podrška za ograničenje propusnosti s odvojenim postavkama ograničenja za ulazni i izlazni promet, kao i ograničenja za broj istovremenih veza.
- Sredstva za kontrolu pristupa koja djeluju vezano uz korisnika ili direktorij (moguće je ograničiti pregled popisa datoteka, zabraniti prijenos, preuzimanje, preimenovanje, brisanje ili promjenu prava pristupa, zabraniti stvaranje direktorija ili simboličkih linkova itd.).
- Za svakog korisnika mogu se definirati individualna mrežna ograničenja, primjerice, može se dopustiti pristup samo s određenih IP adresa ili podmreža.
- Podržava se povezivanje filtara za učitavanje sadržaja vezano uz pojedinačne korisnike i direktorije (na primjer, moguće je blokirati učitavanje datoteka s određenim ekstenzijama).
- Moguća je veza handlera koji se pokreću pri različitim operacijama s datotekom (učitavanje, brisanje, preimenovanje itd.). Osim pozivanja handlera, podržava se slanje obavijesti u obliku HTTP zahtjeva.
- Automatsko zatvaranje neaktivnih veza.
- Atomsko ažuriranje konfiguracije bez prekida veza.
- Pružanje metrika za praćenje u Prometheusu.
- Podržan je HAProxy PROXY protokol za organizaciju opterećenja ili proksiranje veza do SFTP/SCP usluga bez gubitka informacija o izvornoj IP adresi korisnika.
- REST API za upravljanje korisnicima i katalogima, stvaranje rezervnih kopija i generiranje izvještaja o aktivnim vezama.
- Web sučelje (http://127.0.0.1:8080/web) za konfiguraciju i praćenje (podrška i za postavke putem običnih datoteka s konfiguracijom).
- Mogućnost definiranja postavki u formatima JSON, TOML, YAML, HCL i envfile.
- Podrška za povezivanje putem SSH sa ograničenim pristupom sistemskim naredbama. Na primjer, dopušteno je izvršavanje naredbi potrebnih za rad Git-a (git-receive-pack, git-upload-pack, git-upload-archive) i rsync, kao i nekoliko ugrađenih naredbi (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy i sftpgo-remove).
- Portable način za zajedničko korištenje jednog zajedničkog kataloga s automatskim generiranjem vjerodajnica za povezivanje, najavljenih putem multicast DNS-a.
- Ugrađeni sustav profiliranja za analizu performansi.
- P pojednostavljeni proces migracije sistemskih korisničkih računa Linux-a.
- Skladištenje logova u JSON formatu.
- Podrška za virtualne kataloge (na primjer, sadržaj određenog kataloga može se isporučiti ne iz lokalnog FS-a, već iz vanjskog oblaka).
- Podrška za cryptfs za transparentno šifriranje podataka u hodu pri spremanju u FS i dešifriranje prilikom isporuke.
- Podrška za preusmjeravanje veza na druge SFTP poslužitelje.
- Mogućnost korištenja SFTPGo kao SFTP podsustava za OpenSSH.
- Mogućnost pohranjivanja korisničkih i povjerljivih podataka u šifriranom obliku korištenjem KMS poslužitelja (usluge upravljanja ključevima), kao što su Vault, GCP KMS, AWS KMS.
Izvor: opennet.ru
