Veröffentlichung des SFTP-Servers SFTPGo 1.0

Die erste bedeutende Veröffentlichung des Servers erfolgte SFTPGo 1.0, mit dem Sie den Fernzugriff auf Dateien mithilfe der Protokolle SFTP, SCP/SSH und Rsync organisieren können. Mit SFTPGo kann unter anderem der Zugriff auf Git-Repositories über das SSH-Protokoll ermöglicht werden. Daten können sowohl vom lokalen Dateisystem als auch von einem externen Speicher übertragen werden, der mit Amazon S3 und Google Cloud Storage kompatibel ist. Zur Speicherung der Benutzerdatenbank und Metadaten werden DBMS mit Unterstützung für SQL oder Schlüssel/Wert-Format verwendet, wie z. B. PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x oder bbolt 1.3.x. Es gibt auch einen Modus zum Speichern von Metadaten im RAM, der keine Anbindung einer externen Datenbank erfordert. Der Projektcode ist in Go und geschrieben vertrieben von lizenziert unter GPLv3.

Hauptmerkmale:

  • Jedes Konto ist chrooted, wodurch der Zugriff auf das Home-Verzeichnis des Benutzers eingeschränkt wird. Es ist möglich, virtuelle Verzeichnisse zu erstellen, die auf Daten außerhalb des Home-Verzeichnisses des Benutzers verweisen.
  • Konten werden in einer virtuellen Benutzerdatenbank gespeichert, die sich nicht mit der Systembenutzerdatenbank überschneidet. Zur Speicherung von Benutzerdatenbanken können SQLite, MySQL, PostgreSQL, Bbolt und In-Memory-Storage verwendet werden. Es stehen Funktionen für die Zuordnung virtueller und Systemkonten zur Verfügung – entweder direkte oder zufällige Zuordnung ist möglich (ein Systembenutzer kann einem anderen virtuellen Benutzer zugeordnet werden).
  • Die Authentifizierung mit öffentlichen Schlüsseln, SSH-Schlüsseln und Passwörtern wird unterstützt (einschließlich interaktiver Authentifizierung mit einem über die Tastatur eingegebenen Passwort). Es ist möglich, für jeden Benutzer mehrere Schlüssel zu binden sowie eine mehrstufige und mehrstufige Authentifizierung einzurichten (z. B. kann bei erfolgreicher Schlüsselauthentifizierung zusätzlich ein Passwort abgefragt werden).
  • Für jeden Benutzer ist es möglich, verschiedene Authentifizierungsmethoden zu konfigurieren sowie eigene Methoden zu definieren, die durch den Aufruf externer Authentifizierungsprogramme (z. B. zur Authentifizierung über LDAP) oder das Senden von Anfragen über die HTTP-API implementiert werden.
  • Es ist möglich, externe Handler oder HTTP-API-Aufrufe anzuschließen, um Benutzerparameter dynamisch zu ändern, die aufgerufen werden, bevor sich der Benutzer anmeldet. Unterstützt dynamisch Erstellen von Benutzern bei der Verbindung.
  • Unterstützt individuelle Kontingente für Datengröße und Anzahl der Dateien.
  • Unterstützung der Bandbreitenbegrenzung mit separater Konfiguration von Beschränkungen für ein- und ausgehenden Datenverkehr sowie Beschränkungen der Anzahl gleichzeitiger Verbindungen.
  • Zugriffskontrolltools, die in Bezug auf einen Benutzer oder ein Verzeichnis funktionieren (Sie können die Anzeige einer Liste von Dateien einschränken, das Hochladen, Herunterladen, Überschreiben, Löschen, Umbenennen oder Ändern von Zugriffsrechten verbieten, die Erstellung von Verzeichnissen oder symbolischen Links verbieten usw.).
  • Für jeden Benutzer können Sie individuelle Netzwerkeinschränkungen definieren, z. B. können Sie nur Anmeldungen von bestimmten IPs oder Subnetzen zulassen.
  • Es unterstützt die Verknüpfung von Filtern für heruntergeladene Inhalte in Bezug auf einzelne Benutzer und Verzeichnisse (Sie können beispielsweise das Herunterladen von Dateien mit einer bestimmten Erweiterung blockieren).
  • Es ist möglich, Handler zu binden, die bei verschiedenen Vorgängen mit einer Datei (Herunterladen, Löschen, Umbenennen usw.) gestartet werden. Neben dem Aufruf von Handlern wird auch das Versenden von Benachrichtigungen in Form von HTTP-Anfragen unterstützt.
  • Automatische Beendigung inaktiver Verbindungen.
  • Atomare Konfigurationsaktualisierung ohne Verbindungsunterbrechung.
  • Bereitstellung Metriken für die Überwachung in Prometheus.
  • Das HAProxy PROXY-Protokoll wird unterstützt, um Lastausgleich oder Proxy-Verbindungen zu SFTP/SCP-Diensten zu organisieren, ohne Informationen über die Quell-IP-Adresse des Benutzers zu verlieren.
  • REST API um Benutzer und Verzeichnisse zu verwalten, Backups zu erstellen und Berichte über aktive Verbindungen zu erstellen.
  • Webschnittstelle (http://127.0.0.1:8080/web) zur Konfiguration und Überwachung (Konfiguration über reguläre Konfigurationsdateien wird ebenfalls unterstützt).
  • Möglichkeit, Einstellungen in den Formaten JSON, TOML, YAML, HCL und envfile zu definieren.
  • Unterstützen Verbindungen über SSH mit eingeschränktem Zugriff auf Systembefehle. Beispielsweise ist es erlaubt, für Git erforderliche Befehle (git-receive-pack, git-upload-pack, git-upload-archive) und rsync sowie mehrere integrierte Befehle (scp, md5sum, sha*sum) auszuführen , cd, pwd, sftpgo-copy und sftpgo-remove).
  • Regime tragbar um ein gemeinsames Verzeichnis mit automatischer Generierung von Verbindungsanmeldeinformationen zu teilen, die über Multicast-DNS bekannt gegeben werden.
  • Eingebettetes System Profilierung zur Leistungsanalyse.
  • Vereinfacht Prozess Migration von Linux-Systemkonten.
  • Lagerung Protokolle im JSON-Format.

Source: opennet.ru

Kommentar hinzufügen