Wydanie serwera SFTP SFTPGo 1.0

Miało miejsce pierwsze znaczące wydanie serwera SFTPGo 1.0, który umożliwia organizację zdalnego dostępu do plików przy użyciu protokołów SFTP, SCP/SSH i Rsync. 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 pamięci zewnętrznej kompatybilnej z Amazon S3 i Google Cloud Storage. Do przechowywania bazy danych i metadanych użytkowników wykorzystywane są systemy DBMS obsługujące SQL lub format klucz/wartość, takie jak PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x lub bbolt 1.3.x. Dostępny jest także tryb przechowywania metadanych w pamięci RAM, który nie wymaga podłączenia zewnętrznej bazy danych. Kod projektu jest napisany w Go i dystrybuowane przez licencjonowany na licencji GPLv3.

Najważniejsze cechy:

  • 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 parametrów użytkownika, wywoływanych przed zalogowaniem użytkownika. Utrzymany dynamiczny tworzenie użytkowników po połączeniu.
  • 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 metryki do monitorowania w Prometheusie.
  • 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 generowania raportów o aktywnych połączeniach.
  • 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.
  • Wsparcie połączenia poprzez SSH z ograniczonym dostępem do poleceń systemowych. Przykładowo dozwolone jest uruchamianie poleceń niezbędnych dla Gita (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 przenośny udostępnianie jednego wspólnego katalogu z automatycznym generowaniem poświadczeń połączeń ogłaszanych za pośrednictwem multiemisji DNS.
  • Wbudowany system profilowy do analizy wydajności.
  • Uproszczony proces migracja kont systemu Linux.
  • magazynowanie dzienniki w formacie JSON.

Źródło: opennet.ru

Dodaj komentarz