Wydanie serwera SFTP SFTPGo 1.0

Odbyła się pierwsza znacząca wersja serwera SFTPGo 1.0, umożliwiającego zdalny dostęp do plików przy użyciu protokołów SFTP, SCP/SSH i Rsync. SFTPGo może być również używany do udostępniania dostępu do repozytoriów Git z wykorzystaniem 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 i Google Cloud Storage. Do przechowywania bazy użytkowników i metadanych używane są systemy baz danych wspierające SQL lub format klucz/wartość, takie jak PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x lub bbolt 1.3.x. Istnieje również tryb przechowywania metadanych w pamięci operacyjnej, który nie wymaga podłączenia zewnętrznej bazy danych. Kod projektu został napisany w języku Go i rozpowszechniany jest licencjonowany na zasadach GPLv3.

Kompaktowość i łatwość wbudowania w inne projekty. Kod składa się jedynie z kilku plików w języku C, które nie wymagają do kompilacji zewnętrznych zależności. Skompilowana najprostsza aplikacja zajmuje około 190 KB;

  • 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 przetworników lub wywołań HTTP API do dynamicznej zmiany parametrów użytkownika, wywoływanych przed zalogowaniem się użytkownika. Obsługiwane jest dynamiczne tworzenie użytkowników przy podłączaniu.
  • 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ń.
  • Dostarczenie 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 również jest dostępne).
  • Możliwość definiowania ustawień w formatach JSON, TOML, YAML, HCL i envfile.
  • Wsparcie połączeń SSH z ograniczonym dostępem do poleceń systemowych. Na przykład, dopuszczalne jest uruchamianie poleceń niezbędnych do pracy z Git (git-receive-pack, git-upload-pack, git-upload-archive) oraz rsync, a także kilku wbudowanych poleceń (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy i sftpgo-remove).
  • Tryb portable do współdzielenia jednego wspólnego katalogu z automatycznym generowaniem danych logowania do połączeń, ogłaszanych przez multicast DNS.
  • Wbudowany system profilowania dla analizy wydajności.
  • Uproszczony proces migracje systemowych kont użytkowników Linux.
  • Przechowywanie logów w formacie JSON.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster