Wydanie serwera SFTP SFTPGo 2.2.0

Opublikowano wersję serwera SFTPGo 2.2, który umożliwia organizację zdalnego dostępu do plików przy użyciu protokołów SFTP, SCP/SSH, Rsync, HTTP i WebDav. SFTPGo może służyć między innymi do zapewnienia dostępu do repozytoriów Git za pomocą protokołu SSH. Dane można przesyłać zarówno z lokalnego systemu plików, jak i z zewnętrznych magazynów kompatybilnych z Amazon S3, Google Cloud Storage i Azure Blob Storage. Możliwe jest przechowywanie danych w postaci zaszyfrowanej. Do przechowywania bazy danych i metadanych użytkowników wykorzystywane są systemy DBMS obsługujące język SQL lub format klucz/wartość, takie jak PostgreSQL, MySQL, SQLite, CockroachDB czy bbolt, ale istnieje również możliwość przechowywania metadanych w pamięci RAM, co nie wymaga podłączania zewnętrzna baza danych. Kod projektu napisany jest w Go i rozpowszechniany na licencji GPLv3.

W nowej wersji:

  • Dodano obsługę uwierzytelniania dwuskładnikowego przy użyciu haseł jednorazowych ograniczonych czasowo (TOTP, RFC 6238). Jako uwierzytelniaczy można używać aplikacji takich jak Authy i Google Authenticator.
  • Zaimplementowano możliwość rozbudowy funkcjonalności poprzez wtyczki. Wśród już dostępnych wtyczek: obsługa dodatkowych usług wymiany kluczy, integracja schematu Publish/Subscription, przechowywanie i wyszukiwanie informacji o zdarzeniach w systemie DBMS.
  • W interfejsie REST API oprócz tokenów JWT dodano obsługę uwierzytelniania za pomocą kluczy, a także zapewnia możliwość ustawienia polityki przechowywania danych (ograniczającej czas życia danych) w odniesieniu do poszczególnych katalogów i użytkowników. Domyślnie interfejs użytkownika Swagger umożliwia nawigację po zasobach API bez korzystania z zewnętrznych narzędzi.
  • Do interfejsu WWW dodano obsługę operacji zapisu (przesyłanie plików, tworzenie katalogów, zmiana nazwy i usuwanie), zaimplementowano możliwość resetowania hasła z potwierdzeniem e-mailem, zintegrowano edytor plików tekstowych i przeglądarkę dokumentów PDF. Dodano możliwość tworzenia linków HTTP zapewniających użytkownikom zewnętrznym dostęp do poszczególnych plików i katalogów, z możliwością ustawienia osobnego hasła dostępu, ograniczenia adresów IP, ustawienia czasu życia łącza oraz ograniczenia liczby pobrań.

Główne cechy SFTPGo:

  • Każde konto jest chrootowane, co ogranicza dostęp do katalogu domowego użytkownika. Możliwe jest tworzenie katalogów wirtualnych, które odwołują się do danych poza katalogiem domowym użytkownika.
  • Konta przechowywane są w wirtualnej bazie danych użytkowników, która nie krzyżuje się z systemową bazą danych użytkowników. SQLite, MySQL, PostgreSQL, bbolt i pamięć w pamięci mogą być używane do przechowywania baz danych użytkowników. Zapewnione są środki do mapowania kont wirtualnych i systemowych - możliwe jest mapowanie bezpośrednie lub dowolne (jeden użytkownik systemu może być mapowany na innego użytkownika wirtualnego).
  • Obsługiwane jest uwierzytelnianie kluczem publicznym, kluczem SSH i hasłem (w tym uwierzytelnianie interaktywne z wprowadzaniem hasła z klawiatury). Możliwe jest przypisanie kilku kluczy dla każdego użytkownika, a także skonfigurowanie uwierzytelniania wieloskładnikowego i wieloetapowego (np. w przypadku udanej autoryzacji kluczem może być dodatkowo wymagane hasło).
  • Istnieje możliwość skonfigurowania różnych metod uwierzytelniania dla każdego użytkownika, a także zdefiniowania własnych metod realizowanych poprzez wywoływanie zewnętrznych programów uwierzytelniających (np. do uwierzytelniania przez LDAP) lub wysyłanie żądań poprzez HTTP API.
  • Możliwe jest podłączenie zewnętrznych handlerów lub wywołań API HTTP w celu dynamicznej zmiany ustawień użytkownika, które są wywoływane przed zalogowaniem użytkownika. Obsługiwane jest dynamiczne tworzenie użytkowników podczas połączenia.
  • Obsługa indywidualnych limitów rozmiaru danych i liczby plików.
  • Obsługa ograniczania przepustowości z osobnymi ustawieniami limitów ruchu przychodzącego i wychodzącego, a także limitów liczby jednoczesnych połączeń.
  • Narzędzia kontroli dostępu, które działają w odniesieniu do użytkownika lub katalogu (możesz ograniczyć przeglądanie listy plików, zabronić przesyłania, pobierania, nadpisywania, usuwania, zmiany nazwy lub praw dostępu, zabronić tworzenia katalogów lub dowiązań symbolicznych itp.).
  • Dla każdego użytkownika możesz zdefiniować indywidualne ograniczenia sieciowe, na przykład możesz zezwolić na dostęp tylko z określonych adresów IP lub podsieci.
  • Obsługuje łączenie filtrów treści do pobrania w odniesieniu do poszczególnych użytkowników i katalogów (np. można zablokować pobieranie plików z określonym rozszerzeniem).
  • Możesz powiązać programy obsługi, które są uruchamiane podczas różnych operacji z plikiem (ładowanie, usuwanie, zmiana nazwy itp.). Oprócz obsługi wywoływania obsługiwane jest wysyłanie powiadomień w postaci żądań HTTP.
  • Automatyczne zakończenie nieaktywnych połączeń.
  • Atomowa aktualizacja konfiguracji bez zrywania połączeń.
  • Dostarczanie metryk do monitorowania w Prometheus.
  • Protokół HAProxy PROXY jest obsługiwany w celu organizowania równoważenia obciążenia lub połączeń proxy z usługami SFTP/SCP bez utraty wiedzy o źródłowym adresie IP użytkownika.
  • REST API do zarządzania użytkownikami i katalogami, tworzenia kopii zapasowych i raportowania aktywnych połączeń.
  • Interfejs sieciowy (http://127.0.0.1:8080/web) do konfiguracji i monitorowania (obsługiwana jest również konfiguracja za pomocą zwykłych plików konfiguracyjnych).
  • Możliwość definiowania ustawień w formatach JSON, TOML, YAML, HCL i envfile.
  • Obsługa połączeń przez SSH z ograniczonym dostępem do poleceń systemowych. Na przykład polecenia wymagane dla Git (git-receive-pack, git-upload-pack, git-upload-archive) i rsync mogą działać, a także kilka wbudowanych poleceń (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy i sftpgo-remove).
  • Tryb przenośny do udostępniania jednego udostępnionego katalogu z automatycznym generowaniem poświadczeń połączenia ogłaszanych za pośrednictwem multiemisji DNS.
  • Wbudowany system profilowania do analizy wydajności.
  • Uproszczony proces migracji konta systemu Linux.
  • Przechowywanie logów w formacie JSON.
  • Obsługa katalogów wirtualnych (na przykład zawartość określonego katalogu może pochodzić nie z lokalnego systemu plików, ale z zewnętrznego magazynu w chmurze).
  • Obsługa cryptfs w celu przejrzystego szyfrowania danych w locie podczas zapisywania w systemie plików i odszyfrowywania podczas przesyłania.
  • Obsługa przekazywania połączeń do innych serwerów SFTP.
  • Możliwość używania SFTPGo jako podsystemu SFTP dla OpenSSH.
  • Możliwość przechowywania danych uwierzytelniających i poufnych danych w postaci zaszyfrowanej z wykorzystaniem serwerów KMS (Key Management Services), takich jak Vault, GCP KMS, AWS KMS.

Źródło: opennet.ru

Dodaj komentarz