Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verbinden eines Bastion-Servers mit einem PostgreSQL-Server über einen SSH-Tunnel

PostgreSQL ist ein bekanntes Verwaltungssystem für relationale Datenbanken, das eine sichere Umgebung für Entwickler und Benutzer bietet. Da Remote-Arbeit jedoch weiterhin Teil der neuen Normalität jedes Unternehmens ist, stehen IT-Experten vor neuen Herausforderungen, wenn es um die Verwaltung der Sicherheit und Zugänglichkeit ihrer Server geht.

Die Verwendung eines Bastion-Servers für den Zugriff auf eine PostgreSQL-Datenbank fügt eine zusätzliche Sicherheitsebene hinzu. Da Bastion-Server jedoch als Firewalls fungieren sollten, ist es notwendig, einen Secure Shell (SSH)-Tunnel zu verwenden, um die Gefährdung privater Netzwerke zu verringern.

Viele PostgreSQL-Datenbankverwaltungstools können diesen Verbindungsprozess automatisieren, aber die Interaktion mit der Shell erfordert die manuelle Erstellung eines SSH-Tunnels. Das Verständnis des Prozesses und der Vorsichtsmaßnahmen kann Ihrem Unternehmen sicherlich dabei helfen, sichere Datenbanken aufrechtzuerhalten.

Vorteile der Erstellung und Verwendung eines sicheren SSH-Shell-Tunnels

SSH-Tunneling wird seit über dreißig Jahren in der Netzwerkkommunikation verwendet und ist für die heutigen Computeranforderungen genauso relevant.

Entwickler wenden sich konsequent an SSH Secure Shell-Protokolle, um den Datenbankzugriff auf allen Arten von Servern, einschließlich PostgreSQL, zu verwalten. Sicherer Fernzugriff ist heute von entscheidender Bedeutung, insbesondere wenn 50 % der Geräte am Arbeitsplatz mobil sind (mobile Geräte gehören zu den anfälligsten für Cyberangriffe). Umso wichtiger ist es, dass Unternehmen Geräte und Benutzerzugriff auf ihre Netzwerke remote verwalten können.

Unternehmen, die mit großen Datenmengen umgehen, müssen ihren Mitarbeitern schnellen Zugriff auf wichtige Datenbanken gewähren und einen proaktiven Ansatz für die Datenbanksicherheit verfolgen. Die Verwendung von SSH-Protokollen ist die Nummer eins, wenn es darum geht, Benutzern von Remote-Servern aus sicheren Zugriff zu bieten. Es macht es auch einfacher, automatisierte Programme zu authentifizieren. Daher können Unternehmen ihre täglichen Aufgaben effizienter erledigen.

Da die Sicherheitsstandards endlich zu mobilen Geräten und Remote-Servern aufschließen, können wir erwarten, dass sich auch die Verschlüsselungs- und Authentifizierungsprotokolle verbessern werden. Flexibilität und Interoperabilität sind die Zukunft der IoT-Sicherheit. Dennoch werden SSH-Protokolle auf absehbare Zeit weiterhin ein Standardbestandteil sein.

Wie funktioniert SSH?

Mit SSH-Protokollen können Sie den Zugriff auf Ihre Server über das Internet in einer sicheren Umgebung fernsteuern. Nicht nur die anfängliche Verbindung ist hochsicher, sondern auch die gesamte Kommunikationssitzung zwischen den beiden Parteien. Benutzer können sich über einen offenen SSH Secure Shell-Tunnel oder andere SSH Secure Shell-Clients bei einem Remote-Server anmelden.

Der Server sucht nach einer offenen Portverbindung. Sobald er einen findet, muss der Server die Verbindung authentifizieren. Es bestimmt, ob eine sichere Umgebung für die Kommunikation und Dateiübertragung eingerichtet wurde. Wenn die Verbindung vom Client initiiert wird, muss der Client den Server zusätzlich zur Bereitstellung seiner Anmeldeinformationen authentifizieren.

Wenn beide Parteien authentifiziert und die Verbindung hergestellt ist, gewährleistet das SSH-Verschlüsselungsprotokoll die fortgesetzte Vertraulichkeit aller Datenübertragungen zwischen dem Server und dem Client.

Es gibt drei Arten von Verschlüsselungen, die SSH-Tunnel verwenden, um Verbindungen zu sichern:

  • symmetrische Verschlüsselung
  • asymmetrische Verschlüsselung
  • Hashes.

Symmetrische Verschlüsselung wird für die Dauer der Verbindung verwendet, um die Kommunikation sicher zu halten. Sowohl der Client als auch der Server teilen sich denselben geheimen Schlüssel, um Daten zu verschlüsseln und zu entschlüsseln. Dieser Algorithmus ist sicher, da ein tatsächlicher Schlüssel nie wirklich ausgetauscht wird. Vielmehr teilen beide Seiten öffentliche Informationen, aus denen sie unabhängig voneinander den Schlüssel ableiten können.

Asymmetrische Verschlüsselung erfordert dagegen sowohl einen öffentlichen als auch einen privaten Schlüssel. Es wird zu Beginn des Tunneling-Prozesses verwendet, um die Server zu authentifizieren. Der Server verwendet einen öffentlichen Schlüssel, um diese Daten zu verschlüsseln, und der Client muss sie mit einem privaten Schlüssel authentifizieren. Da nur ein bestimmter privater Schlüssel Nachrichten entschlüsseln kann, die mit dem öffentlichen Schlüssel verschlüsselt wurden, hilft dies bei der Authentifizierung der Parteien, die eine Verbindung suchen.

Kryptografisches Hashing erstellt eine eindeutige Signatur für den Datensatz. Dies ist bei einer SSH-Verbindung hilfreich, da der Server so erkennen kann, ob ein MAC zulässig ist. Ein passender Hash kann nur durch das Datenelement erstellt werden, das mit dem identisch ist, das das Original erstellt hat. Daher kann Hashing verwendet werden, um die Eingabe zu überprüfen, um sicherzustellen, dass sie korrekt ist.

SSH-Authentifizierung

Nach dem Aufbau der Verschlüsselung findet ein Authentifizierungsprozess statt. Die einfachste Form der Authentifizierung ist die Verwendung eines Passworts. Obwohl dies für Clients ein einfacher Weg ist, ist es auch sehr einfach für böswillige automatisierte Skripte. Auch ein verschlüsseltes Passwort hat eine begrenzte Komplexität. Das macht unsicher. Die Verwendung asymmetrischer Schlüssel ist eine gängige Maßnahme anstelle der Verwendung von Passwörtern.

Sobald ein öffentlicher Schlüssel eingerichtet ist, muss der Client den privaten Schlüssel bereitstellen, der zu dem öffentlichen Schlüssel gehört. Ohne diese Kombination schlägt die Authentifizierung fehl. Dadurch wird sichergestellt, dass die verschlüsselten Daten nicht von einem Eindringling entschlüsselt werden können.

Der gesamte Authentifizierungsprozess wird während der Einrichtung ausgehandelt, und nur Parteien mit komplementären Schlüsseln können kommunizieren. Dieser Vorgang beschleunigt auch den Anmeldevorgang. Daher ist es optimal für automatisierte Verfahren.

Der Authentifizierungsprozess hängt von den folgenden Faktoren ab:

  • die Art der zu schützenden Datenbank
  • die Beziehung und der Standort des Servers
  • die Berechtigungen des Benutzers innerhalb des Servers.

Das Tolle an der Verwendung eines SSH-Protokolls ist, dass der gesamte Prozess verschlüsselt und hochsicher ist.

SSH-Tunnel einrichten

Wenn Sie über die Shell mit einer Datenbank interagieren möchten, müssen Sie wissen, wie man einen SSH-Tunnel erstellt. Während die Verwendung einer automatisierten SSH-Verwaltungsanwendung bequem sein kann, ziehen es viele Datenbankadministratoren vor, Datenbankverwaltungstools von Grund auf neu einzurichten, da die Interaktion mit der Shell der beste Weg zum Debuggen, Auditieren und zur maximalen Kontrolle ist.

Die Verwendung eines SSH-Tunnels ist eine sehr sichere Möglichkeit, eine Sitzung zu öffnen, ohne Angst vor Datenverlust oder Hackerangriffen zu haben (solange Sie Ihre Sitzungen schließen und Ihre Server überwachen).

So erstellen Sie einen SSH-Tunnel:

Verifizieren Sie den Bastion-Server

Um einen SSH Secure Shell-Tunnel zu erstellen, müssen Sie die Hostnamen des Bastion-Servers und der PostgreSQL-Datenbank sowie Ihren Benutzernamen auf dem Bastion-Server kennen. Führen Sie den Befehl aus:

$ ssh <username>@<bastion_server>

Geben Sie dann Ihr Passwort ein, wenn das entsprechende Fenster erscheint.

SSH-Tunnel öffnen

Öffnen Sie den Tunnel mit diesem Befehl:

$ ssh -L localhost:port_number:<sql_server>:port_number<username>@<bastion_server>

Lassen Sie das Fenster geöffnet, um die Verbindung aufrechtzuerhalten. Die Zwei-Port-Nummern gelten für Ihren Computer bzw. den Remote-Server.

Bestätigen Sie Ihre Verbindung

Um sicherzustellen, dass Ihr Tunnel geöffnet und mit dem PostgreSQL-Server verbunden ist, verwenden Sie den folgenden Befehl:

$ psql --port=X --host=localhost -c "SELECT * FROM pg_catalog.pg_tables"

Prüfen Sie, ob die Tabellen zurückgegeben werden. Wenn dies der Fall ist, war Ihre Verbindung erfolgreich und sicher.

Einige optionale Schritte können die Effizienz Ihres Zugriffs vom Bastion-Host auf den SQL-Server erhöhen. Denken Sie jedoch daran, dass die ständige Automatisierung des Zugriffs keine sichere Strategie ist. Es ist ratsam, sich immer anzumelden, wenn Sie einen SSH-Tunnel öffnen möchten, um Sitzungen vollständig privat zu halten.

Benutzerprofil erstellen

Um die Notwendigkeit zu vermeiden, jedes Mal Passwörter eingeben zu müssen, können Sie ein Profil auf dem Bastion-Server erstellen. Dazu müssen Sie Ihren SSH-Schlüssel mit dem folgenden Befehl zum Server hinzufügen:

$ ssh-copy-id <username>@<bastion_server>

Dann wird Ihr Schlüssel automatisch verwendet, wenn Sie sich anmelden möchten. Er hat jedoch sowohl positive als auch negative Aspekte. Es ist bequemer, aber Sie müssen sicherstellen, dass andere Sicherheitsprotokolle vorhanden sind, um die Maschine vor Malware oder Diebstahl zu schützen. Wenn eine andere Person Zugriff auf Ihren Computer erhält, kann sie sich möglicherweise automatisch bei Ihren Servern anmelden, da Ihr Schlüssel gespeichert ist.

Aktualisieren Sie Ihre SSH-Konfigurationsdatei

Es kann kompliziert sein, sich die genauen Namen und Portnummern der Server zu merken, zu denen Sie eine Verbindung herstellen möchten. Aus diesem Grund ist es Teil des SSH Secure Shell-Tunnelprotokolls.

Sie verfolgen die Hostnamen und authentifizieren sich mit Ihrem Benutzernamen. Es ist ein Teil dessen, was die SSH-Verbindung überhaupt erst sicher macht. Es gibt jedoch eine Möglichkeit, Ihr Verfahren so zu konfigurieren, dass der Zugriff schneller und einfacher erfolgt, ohne den Prozess vollständig zu automatisieren. Sie können Ihrer SSH-Konfigurationsdatei einen Eintrag hinzufügen:

Host-Bastion-Produktion

  • Hostname
  • Benutzer
  • LocalForward localhost:port_number:port_number

Führen Sie dann den folgenden Befehl aus:

$ ssh bastion-production 

Jetzt können Sie in nur einem Schritt eine Verbindung herstellen.

SSH-Datenschutztipps

Es ist zwingend erforderlich, die Datenbanken sicher zu halten. Daten sind die wertvollste Währung der Welt, und mit dem Aufkommen von Ransomware und anderer Cyberkriminalität ist es ein inakzeptabler Fehler, Kundendaten nicht zu schützen.

Der ganze Zweck der Verwendung des Bastion-Servers besteht in erster Linie darin, Ihre Datenbank zu schützen. Ein paar Fehltritte würden Ihre Server jedoch weit offen lassen, damit jeder hereinkommen kann.

Hier sind einige Tipps, um bei der Verwendung von SSH-Tunneln für die Verbindung zu PostgreSQL-Servern sicher zu bleiben:

Remote-Mitarbeiter richtig authentifizieren

Wenn Ihre Organisation SSH verwendet, um eine Remoteverbindung herzustellen, muss jeder die Grundlagen der digitalen Hygiene kennen. Verwenden Sie eine schlüsselbasierte Authentifizierung, die durch ein starkes Kennwort geschützt ist. Die Bestätigung in zwei Schritten für jede Anmeldung ist ebenfalls ein guter Anfang, um sicherzustellen, dass die öffentlichen SSH-Schlüssel authentisch sind.

Beschränken Sie SSH-Anmeldungen nur auf diejenigen, die sie benötigen, und legen Sie Berechtigungen fest, die die Aufgaben der Benutzer widerspiegeln.

Portweiterleitung deaktivieren

Nur etwa die Hälfte der Entwickler setzen Verfahren zur Verhinderung der Portweiterleitung durch. Durch die Portweiterleitung können Sie für verschlüsselte Kommunikation mit nicht genehmigten Benutzern und Servern offen bleiben. So können Hacker direkt in Ihre Datenbank eindringen. Filtern Sie alle Ihre Verbindungen über den Bastion-Server und erwägen Sie die Verwendung von Port-Knocking, bevor Sie eine Verbindung zulassen.

Stellen Sie sicher, dass Sie die neueste Software verwenden und Ihre SSH-Verbindungen den neuesten Compliance-Standards entsprechen.

Prüfen Sie häufig

Verwenden Sie zusätzlich zu den regelmäßigen manuellen Audits ein kontinuierliches Überwachungstool. Beschränken Sie Ihre Verbindungen nur auf die notwendigen, und überprüfen Sie Ihre Konfigurationseinstellungen auf Änderungen, die nicht vorher genehmigt wurden.

Indem Sie im Auge behalten, wer sich anmeldet und an welchen Aktivitäten er beteiligt ist, können Sie die Angriffsfläche begrenzen und Schwachstellen von Anfang an leicht erkennen.

Schlussfolgerung

Die Verwendung verschlüsselter SSH-Tunnel ist eine sichere Methode, um von Remote-Servern aus auf PostgreSQL-Datenbanken zuzugreifen. Der Prozess behält die Verschlüsselung für die Dauer der verbundenen Sitzungen bei. Obwohl automatisierte SSH-Programme für wiederkehrende Aufgaben und andere administrative Systemprozesse nützlich sind, kann das manuelle Öffnen eines SSH-Tunnels von Vorteil sein. In diesem Fall können Sie im Gegensatz zur Verwendung einer automatisierten Version oder eines automatisierten Clients problemlos den gesamten Datenverkehr und die gesamte Kommunikation identifizieren.

Wenn Sie PostgreSQL oder ein anderes SQL-Datenbankverwaltungssystem verwenden, müssen Sie wissen, wie Sie SSH-Tunneling verwenden. Es kann entscheidend für die Überwachung und Verwaltung von Systemprozessen und Datenübertragungen sein.

SSH-Protokolle sorgen für eine hochsichere Verbindung, und das Befolgen zusätzlicher Vorsichtsmaßnahmen trägt dazu bei, die Integrität Ihrer Serververbindungen aufrechtzuerhalten.