Opublikowano wydanie serwera SFTPGo 2.5.0, który umożliwia organizację zdalnego dostępu do plików za pomocą protokołów SFTP, SCP/SSH, Rsync, HTTP oraz WebDav, a także udostępniania dostępu do repozytoriów Git, używając protokołu SSH. Dane mogą być przekazywane zarówno z lokalnego systemu plików, jak i z zewnętrznych magazynów zgodnych z Amazon S3, Google Cloud Storage i Azure Blob Storage. Umożliwiono przechowywanie danych w zaszyfrowanej formie. Do przechowywania bazy użytkowników i metadanych wykorzystuje się systemy baz danych wspierające SQL lub format klucz/wartość, takie jak PostgreSQL, MySQL, SQLite, CockroachDB lub bbolt, ale istnieje również możliwość przechowywania metadanych w pamięci operacyjnej, nie wymagającej łączenia z zewnętrzną bazą danych. Kod projektu napisano w języku Go i jest udostępniany na licencji GPLv3.
W nowej wersji:
- W interfejsie webowym dodano możliwość zamykania komunikatów o błędach. W interfejsie webowym dla administratorów wprowadzono możliwość przeszukiwania logów audytu oraz eksportowania danych z nich, zrealizowano zarządzanie listami. adresów IP i sieci, dodano możliwość konfiguracji SMTP oraz standardowych parametrów ACME i SFTP. W klienckim interfejsie webowym stworzono własny formularz logowania (zamiast basic auth), dodano operację kopiowania i usunięto ograniczenie dotyczące rozmiaru przesyłek.

- Dodano wsparcie dla polityk dotyczących użycia haseł, na przykład można określić wymagania dotyczące bezpieczeństwa hasła oraz ustawić czas życia hasła.
- W EventManager dodano możliwość wyświetlania powiadomień o przeterminowanych hasłach, zrealizowano operację kopiowania, dodano wsparcie dla wcześniej wywoływanych akcji (pre-*) oraz obsługiwanych zdarzeń, które są wywoływane przy określonych czynnościach (na przykład dodano obsługę wywoływaną przy logowaniu użytkownika).
- Dodano możliwość nadawania użytkownikom praw administratora.
- W interfejsie wiersza poleceń dodano komendy do resetowania hasła administratora oraz sprawdzania poprawności działania usługi.
- Dodano wsparcie dla instrukcji warunkowych przy wykonywaniu masowego zmieniania nazw plików po stronie dostawców chmur.
- Dodano wsparcie dla śledzenia i automatycznego restartu. certyfikatów TLS.
- Dodano możliwość definiowania własnych typów MIME dla WebDAV.
- Dla SSH domyślnie włączono interaktywną autoryzację przy użyciu klawiatury.
- W trybie przenośnym dodano możliwość importowania haseł z pliku.
- Dodano eksperymentalne wsparcie dla usługi Terraform.
Główne możliwości SFTPGo:
- Dla każdego konta stosowana jest izolacja chroot, ograniczająca dostęp do katalogu domowego użytkownika. Możliwe jest tworzenie wirtualnych katalogów, które odwołują się do danych spoza domowego katalogu użytkownika.
- Konta są przechowywane w wirtualnej bazie użytkowników, która nie krzyżuje się z systemową bazą użytkowników. Do przechowywania bazy danych użytkowników można używać SQLite, MySQL, PostgreSQL, bbolt oraz przechowywania w pamięci. Dostarczane są narzędzia do mapowania wirtualnych i systemowych kont użytkowników — możliwe jest bezpośrednie lub dowolne mapowanie (jedno konto systemowe może być mapowane na inne wirtualne konto użytkownika).
- Obsługiwana jest autoryzacja za pomocą kluczy publicznych, kluczy SSH oraz haseł (w tym interaktywna autoryzacja z wprowadzaniem hasła z klawiatury). Możliwe jest przypisanie wielu kluczy do każdego użytkownika, a także konfiguracja autoryzacji wielofaktorowej i wieloetapowej (na przykład, w przypadku pomyślnej autoryzacji za pomocą klucza może zostać dodatkowo poproszone o hasło).
- Dla każdego użytkownika możliwe jest skonfigurowanie różnych metod autoryzacji, a także określenie własnych metod, realizowanych przez wywołanie zewnętrznych programów autoryzacyjnych (na przykład, dla autoryzacji przez LDAP) lub wysyłanie zapytań przez HTTP API.
- Możliwe jest podłączenie zewnętrznych procesorów lub wywołań HTTP API do dynamicznej zmiany parametrów użytkownika, wywoływanych przed zalogowaniem. Wsparcie dla dynamicznego tworzenia użytkowników przy połączeniu.
- Wsparcie dla indywidualnych limitów rozmiaru danych i liczby plików.
- Wsparcie dla limitów przepustowości z oddzielnymi ustawieniami dla ruchu przychodzącego i wychodzącego, a także limitów liczby jednoczesnych połączeń.
- Środki kontroli dostępu powiązane z użytkownikiem lub katalogiem (można ograniczyć przeglądanie listy plików, zabronić przesyłania, pobierania, nadpisywania, usuwania, zmiany nazw lub praw dostępu, zabronić tworzenia katalogów lub dowiązań symbolicznych itp.).
- Dla każdego użytkownika można określić indywidualne ograniczenia sieciowe, na przykład można zezwolić na dostęp tylko z określonych adresów IP lub podsieci.
- Wsparcie dla przyłączania filtrów ładowanego contentu powiązanych z poszczególnymi użytkownikami i katalogami (na przykład można blokować ładowanie plików o określonej wielkości).
- Możliwość powiązania wywoływaczy uruchamianych podczas różnych operacji na plikach (ładowanie, usuwanie, zmiana nazwy itp.). Oprócz wywoływania wywoływaczy wspierane są powiadomienia w formie zapytań HTTP.
- Automatyczne kończenie nieaktywnych połączeń.
- Atomowe aktualizacje konfiguracji bez zerwania połączeń.
- Dostarczanie metryk do monitorowania w Prometheus.
- Wsparcie dla protokołu HAProxy PROXY do organizacji równoważenia obciążenia lub proxy połączeń do usług SFTP/SCP bez utraty informacji o pierwotnym adresie IP użytkownika.
- REST API do zarządzania użytkownikami i katalogami, tworzenia kopii zapasowych oraz generowania raportów o aktywnych połączeniach.
- Interfejs webowy (http://127.0.0.1:8080/web) do konfiguracji i monitorowania (wsparcie dla konfiguracji poprzez standardowe pliki konfiguracyjne).

- Możliwość definiowania ustawień w formatach JSON, TOML, YAML, HCL i envfile.
- Wsparcie dla połączeń SSH z ograniczonym dostępem do poleceń systemowych. Na przykład, dozwolone jest uruchamianie poleceń niezbędnych do działania Git (git-receive-pack, git-upload-pack, git-upload-archive) i rsync, a także kilku wbudowanych poleceń (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy i sftpgo-remove).
- Tryb portable do wspólnego korzystania z jednego katalogu z automatycznym generowaniem danych logowania do połączenia, ogłaszanych za pomocą multicast DNS.
- Wbudowany system profilowania do analizy wydajności.
- Uproszczony proces migracji systemowych kont użytkowników Linux.
- Przechowywanie logów w formacie JSON.
- Wsparcie dla wirtualnych katalogów (na przykład zawartość określonego katalogu można dostarczać nie z lokalnego systemu plików, ale z zewnętrznej chmury).
- Wsparcie dla cryptfs do przezroczystego szyfrowania danych w locie podczas zapisu do systemu plików i deszyfrowania przy wydawaniu.
- Wsparcie dla tunelowania połączeń do innych serwerów SFTP.
- Możliwość użycia SFTPGo jako podsystemu SFTP dla OpenSSH.
- Możliwość przechowywania danych uwierzytelniających i poufnych w zaszyfrowanej formie przy użyciu serwerów KMS (Key Management Services), takich jak Vault, GCP KMS, AWS KMS.
- Wsparcie dla dwuetapowej autoryzacji z użyciem jednorazowych haseł o ograniczonym czasie życia (TOTP, RFC 6238). Jako autoryzatory mogą być używane aplikacje takie jak Authy i Google Authenticator.
- Rozszerzanie funkcjonalności poprzez wtyczki. Na przykład dostępne są wtyczki z wsparciem dla dodatkowych usług wymiany kluczy, integracji schematu Publish/Subscribe oraz przechowywania i wyszukiwania informacji o zdarzeniach w bazach danych.
Źródło: opennet.ru


