Byla vydána verze serveru SFTPGo 2.2, která umožňuje vzdálený přístup k souborům pomocí protokolů SFTP, SCP/SSH, Rsync, HTTP a WebDav. SFTPGo může být také použit pro poskytování přístupu k Git repozitářům prostřednictvím protokolu SSH. Data lze poskytovat jak z lokální souborové soustavy, tak z externích úložišť kompatibilních s Amazon S3, Google Cloud Storage a Azure Blob Storage. Je možná také možnost ukládání dat v šifrované podobě. Pro ukládání uživatelské databáze a metadat jsou používány databáze s podporou SQL nebo formátu klíč/hodnota, jako jsou PostgreSQL, MySQL, SQLite, CockroachDB nebo bbolt, avšak je také možnost ukládat metadata v operační paměti, což nevyžaduje připojení k externí databázi. Kód projektu je napsán v jazyce Go a je distribuován pod licencí GPLv3.
V nové verzi:
- Byla přidána podpora dvoufaktorové autentizace pomocí jednorázových hesel s omezenou dobou platnosti (TOTP, RFC 6238). Jako autentifikátory mohou být použity aplikace jako Authy a Google Authenticator.
- Byla zavedena možnost rozšíření funkcionality prostřednictvím pluginů. Mezi již dostupné pluginy patří: podpora dalších služeb výměny klíčů, integrace schématu Publish/Subscribe, ukládání a vyhledávání informací o událostech v databázi.
- Do REST API byla přidána podpora autentizace pomocí klíčů, vedle tokenů JWT, a je také zajištěna možnost nastavování politiky uchovávání dat (omezení doby platnosti dat) vázaných na jednotlivé adresáře a uživatele. Ve výchozím nastavení je aktivováno rozhraní Swagger UI pro navigaci po API bez použití externích nástrojů.
- Do webového rozhraní byla přidána podpora zápisových operací (nahrávání souborů, vytváření adresářů, přejmenování a mazání), byla implementována možnost resetování hesla s potvrzením přes email, integrován editor textových souborů a prohlížeč PDF dokumentů. Byla přidána možnost vytváření HTTP odkazů pro poskytování externím uživatelům přístupu k jednotlivým souborům a adresářům, s možností nastavení samostatného přístupového hesla, omezení na IP adresy, nastavení doby platnosti odkazu a limitování počtu stažení.
Hlavní funkce SFTPGo:
- Pro každý účet se aplikuje chroot-izolace, která omezuje přístup pouze na domovský adresář uživatele. Je možné vytvářet virtuální adresáře, které odkazují na data mimo domovský adresář uživatele.
- Účty jsou uchovávány ve virtuální databázi uživatelů, která se nepřekrývá se systémovou databází uživatelů. Pro uchování databáze uživatelů mohou být použity SQLite, MySQL, PostgreSQL, bbolt a uchovávání v paměti. Jsou poskytovány prostředky pro mapování virtuálních a systémových účtů — je možné přímé nebo libovolné mapování (jeden systémový uživatel může být mapován na jiného virtuálního uživatele).
- Podporuje se autentizace pomocí veřejných klíčů, SSH klíčů a hesel (včetně interaktivní autentizace se zadáním hesla z klávesnice). Je možné přiřadit několik klíčů pro každého uživatele, stejně jako nastavit vícestupňovou a vícefaktorovou autentizaci (například v případě úspěšné autentizace pomocí klíče může být navíc požadováno heslo).
- Pro každého uživatele je možné nastavit různé metody autentizace, stejně jako definovat vlastní metody, které se implementují prostřednictvím volání externích autentizačních programů (například pro autentizaci přes LDAP) nebo zasíláním požadavků prostřednictvím HTTP API.
- Je možné připojit externí zpracovatele nebo volání HTTP API pro dynamickou změnu uživatelských parametrů před přihlášením uživatele. Podporuje se dynamické vytváření uživatelů při připojení.
- Podpora individuálních kvót pro objem dat a počet souborů.
- Podpora omezení šířky pásma s odděleným nastavením pro příchozí a odchozí provoz, stejně jako omezení na počet současných připojení.
- Prostředky pro řízení přístupu, působící na základě uživatele nebo adresáře (například lze omezit zobrazení seznamu souborů, zakázat nahrávání, stahování, přepisování, mazání, přejmenovávání nebo měnění oprávnění, a zakázat vytváření adresářů nebo symbolických odkazů atd.).
- Pro každého uživatele lze stanovit individuální síťová omezení, například povolit přístup pouze z určitých IP adres nebo podsítí.
- Podporuje se připojení filtrů nahrávaného obsahu vázaných na jednotlivé uživatele a adresáře (například lze blokovat nahrávání souborů s určitými příponami).
- Možnost připojení obslužných programů, které se spouští při různých operacích se soubory (nahrávání, mazání, přejmenovávání atd.). Kromě vyvolání obslužných programů se podporuje odesílání upozornění formou HTTP požadavků.
- Automatické ukončení neaktivních připojení.
- Atomické aktualizace konfigurace bez přerušení připojení.
- Poskytování metrik pro monitoring v Prometheu.
- Podporuje se protokol HAProxy PROXY pro organizaci vyvažování zátěže nebo pro proxy připojení k SFTP/SCP službám bez ztráty informací o původní IP adrese uživatele.
- REST API pro správu uživatelů a adresářů, vytváření záloh a generování zpráv o aktivních připojeních.
- Webové rozhraní (http://127.0.0.1:8080/web) pro nastavení a monitorování (podporováno je také nastavení prostřednictvím obyčejných konfiguračních souborů).
- Možnost stanovení nastavení ve formátech JSON, TOML, YAML, HCL a envfile.
- Podpora připojení přes SSH s omezeným přístupem k systémovým příkazům. Například je povoleno spouštět příkazy potřebné pro činnost Git (git-receive-pack, git-upload-pack, git-upload-archive) a rsync, stejně jako několik vestavěných příkazů (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy a sftpgo-remove).
- Portable režim pro sdílení jednoho společného adresáře s automatickou generací přihlašovacích údajů pro připojení, vyhlašovaných prostřednictvím multicast DNS.
- Vestavěný profilový systém pro analýzu výkonu.
- Zjednodušený proces migrace systémových uživatelských účtů Linux.
- Ukládání protokolů ve formátu JSON.
- Podpora virtuálních adresářů (například obsah určitého adresáře lze poskytovat nikoli z místního FS, ale z externího cloudového úložiště).
- Podpora cryptfs pro transparentní šifrování dat za běhu při ukládání do FS a dešifrování při předávání.
- Podpora přesměrování připojení na jiné SFTP servery.
- Možnost použití SFTPGo jako SFTP subsystému pro OpenSSH.
- Možnost uchovávat uživatelská a důvěrná data v zašifrované podobě pomocí KMS serverů (Key Management Services), jako jsou Vault, GCP KMS, AWS KMS.
Zdroj: opennet.ru
