Wie man einen Bastion Server mit Warpgate auf Debian einrichtet

Ein Bastion Server ist ein Computer/Maschine/Server, der speziell dafür entwickelt und konfiguriert wurde, Angriffe auf Computernetzwerke abzuwehren. Die Funktionsweise des Bastion Servers ist vergleichbar mit einem Proxy oder Load Balancer für Anwendungen. Er ermöglicht dir den Zugriff auf Computer oder Server, die sich in DMZ-Netzwerken befinden.

Warpgate ist eine moderne Lösung, die als Bastion Server verwendet werden kann. Sie ist in Rust geschrieben und bietet ein webbasiertes Administrations-Dashboard. Du kannst es auf einem bestimmten Knoten installieren und dann ganz einfach Zielknoten oder Server hinzufügen, die sich in deiner privaten Infrastruktur befinden. Warpgate kann derzeit als Bastion Server für SSH, MySQL/MariaDB und HTTP verwendet werden.

In diesem Tutorial wirst du einen Bastion Server für SSH- und MySQL/MariaDB-Verbindungen auf einem Debian 11 Server mit Warpgate einrichten. Du installierst und konfigurierst Warpgate auf dem Debian-Server und fügst dann den SSH-Zielserver und den MySQL-Server zu Warpgate hinzu. Zum Schluss stellst du sicher, dass der Warpgate-Bastion-Server funktioniert, indem du dich mit dem SSH-Zielserver und dem MySQL-Server verbindest.

Voraussetzungen

Du brauchst die folgenden Voraussetzungen, um dieses Tutorial durchzuführen:

  • Einen Linux-Server mit Debian 11 – In diesem Beispiel wird ein Server mit dem Hostnamen„warpgate-debian“ und der IP-Adresse„192.168.5.10“ verwendet.
  • Ein Nicht-Root-Benutzer mit sudo/root-Administrator-Rechten.

Warpgate-Binärdatei herunterladen

In diesem Abschnitt lädst du die Warpgate-Binärdatei manuell von GitHub herunter und verschiebst sie dann in das Systemverzeichnis „bin“. Eine andere Möglichkeit, Warpgate zu installieren, ist das Kompilieren aus dem Quellcode oder die Verwendung der Warpgate-Docker-Version.

Führe zunächst den folgenden wget-Befehl aus, um die Warpgate-Binärdatei herunterzuladen. Auf der offiziellen GitHub-Downloadseite findest du die neueste Version von Warpgate.

wget -q https://github.com/warp-tech/warpgate/releases/download/v0.7.0/warpgate-v0.7.0-x86_64-linux

Nach dem Download verschiebst du die Warpgate-Binärdatei nach „/usr/local/bin/warpgate„. Mache sie dann mit dem Befehl „chmod +x“ ausführbar.

mv warpgate-v0.7.0-x86_64-linux /usr/local/bin/warpgate
sudo chmod +x /usr/local/bin/warpgate

Warpgate herunterladen

Als Nächstes führst du den folgenden Befehl aus, um die Binärdatei„warpgate“ auf deinem System zu finden.

which warpgate

Überprüfe nun die Warpgate-Version und liste die verfügbaren Parameter des Befehls „warpgate“ auf.

warpgate version
warpgate --help

Du solltest eine Ausgabe wie diese erhalten.

Warpgate Hilfe

Warpgate als Bastion Server konfigurieren

Nachdem du die Warpgate-Binärdatei heruntergeladen hast, musst du nun deine Warpgate-Installation einrichten und konfigurieren. Das kannst du interaktiv über den Befehl„warpgate“ tun.

Führe den folgenden Befehl aus, um Warpgate als Bastion Server zu konfigurieren.

warpgate setup

Nachdem der Befehl ausgeführt wurde, wirst du nach den folgenden Konfigurationen gefragt:

  • Wo willst du die Daten von Warpgate speichern? Belasse es bei der Voreinstellung im Verzeichnis „/var/lib/warpgate“.
  • Der Endpunkt des Warpgate-Webadministrations-Dashboards? Belasse es bei der Vorgabe, Warpgate auf deiner internen/öffentlichen IP-Adresse mit Port 8888 laufen zu lassen.
  • Akzeptiere SSH-Verbindungen? Gib ja ein, um Warpgate als SSH-Bastion-Server zu aktivieren.
  • Der Endpunkt des SSH-Bastionservers? Belasse es bei der Standardeinstellung, um den SSH-Bastion-Server auf der internen/öffentlichen IP-Adresse mit Port 2222 laufen zu lassen.
  • Akzeptiere MySQL-Verbindungen? Gib ja ein, um Warpgate als MySQL-Bastion-Server zu aktivieren.
  • Der Endpunkt des MySQL-Bastion-Servers? Belasse es bei der Voreinstellung mit Port 33306.
  • Benutzersitzungen aufzeichnen? Gib ja ein, um es zu aktivieren.
  • Richte ein Passwort für den Standardbenutzer admin ein. Gib das Passwort für deine Warpgate-Installation ein.

Warpgate einrichten

Sobald der Einrichtungsprozess abgeschlossen ist, solltest du eine Ausgabe wie diese erhalten. Du siehst auch die Warpgate-Konfigurationsdatei „/etc/warpgate.yaml“ und das Datenverzeichnis „/var/lib/warpgate“, die während des Prozesses erstellt wurden.

Einrichtung beendet

Führe nun den folgenden Befehl aus, um den Inhalt der Datei „/etc/warpgate.yaml“ und die Liste der verfügbaren Dateien und Verzeichnisse in „/var/lib/warpgate“ anzuzeigen .

cat /etc/warpgate.yaml
ls /var/lib/warpgate

Nachfolgend siehst du die Ausgabe, die auf deinem Terminal ausgegeben wird.

warpgate Konfigurationsdateien und Verzeichnisse

Führe nun den folgenden Befehl aus, um Warpgate zu starten. Du wirst die Ausgabe„Warpgate läuft jetzt“ sehen und die TCP-Ports für SSH-, MySQL- und HTTP-Verbindungen öffnen.

warpgate --config /etc/warpgate.yaml run

Warpgate laufen lassen

Öffne deinen Webbrowser und rufe die IP-Adresse von Warpgate mit Port 8888 (d.h.: https://192.168.5.10:8888/) auf. Wenn du erfolgreich bist, solltest du die Login-Seite von Warpgate erhalten.

Zugang zum Warpgate

Gehe zurück zu deinem Terminal und drücke Strg+c, um den Warpgate-Prozess zu beenden.

Warpgate als Systemd-Dienst starten

In diesem Abschnitt wirst du Warpgate so einrichten und konfigurieren, dass es mit Systemd läuft. Dadurch kannst du Warpgate im Hintergrund laufen lassen und es ist einfacher, es mit dem systemctl-Befehlsdienst zu verwalten.

Erstelle eine neue systemd-Unit-Datei „/etc/systemd/system/warpgate.service“ mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/systemd/system/warpgate.service

Füge die folgenden systemd-Unit-Konfigurationen in die Datei ein.

[Unit]
Description=Warpgate
After=network.target
StartLimitIntervalSec=0
[Service]
Type=notify
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/warpgate --config /etc/warpgate.yaml run

[Install]
WantedBy=multi-user.target

Speichere die Datei und beende den Editor, wenn du fertig bist.

Führe den folgenden Befehl aus, um den systemd Manager neu zu laden und die Änderungen zu übernehmen.

sudo systemctl daemon-reload

Starte und aktiviere dann den Warpgate-Dienst mit dem folgenden systemctl-Befehl.

sudo systemctl start warpgate
sudo systemctl enable warpgate

wearpgate systemd

Überprüfe anschließend den Status des Warpgate-Dienstes, um sicherzustellen, dass der Dienst läuft.

sudo systemctl status warpgate

Die folgende Ausgabe bestätigt, dass der Warpgate-Dienst läuft.

Warpgate Dienststatus

Wenn du die Liste der offenen Ports auf deinem Server überprüfst, siehst du mehrere Ports 2222, 8888 und 33306 im LISTEN-Status. Führe den folgenden ss-Befehl aus.

ss -tulpn

Ausgabe:

offene Ports prüfen

UFW einrichten

In diesem Abschnitt wirst du UFW auf deinem Debian-Server installieren, ausführen und aktivieren. Außerdem öffnest du die Ports, die von Warpgate verwendet werden.

Installiere UFW, indem du den folgenden apt-Befehl ausführst.

sudo apt install ufw

Wenn du dazu aufgefordert wirst, gib zur Bestätigung y ein und drücke ENTER.

ufw installieren

Sobald UFW installiert ist, führe den folgenden Befehl aus, um den OpenSSH-Dienst und die Warpgate-Ports 2222, 8888 und 33306 zu öffnen.

sudo ufw allow OpenSSH
sudo ufw allow 8888/tcp
sudo ufw allow 2222/tcp
sudo ufw allow 33306/tcp

Starte und aktiviere dann UFW mit dem folgenden Befehl. Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.

sudo ufw enable

Nachdem der folgende Befehl ausgeführt wurde, sollte die UFW laufen und aktiviert sein, d.h. die UFW wird beim Systemstart automatisch ausgeführt.

ufw-Einrichtung

Gib nun den folgenden Befehl ein, um den UFW-Status zu überprüfen. Du solltest sehen, dass die UFW den „Status: Aktiv‘ mit dem OpenSSH-Dienst, den Ports 2222, 8888 und 33306 hinzugefügt.

sudo ufw status

Ausgabe:

ufw verifizieren

Anmeldung bei Warpgate

Wenn Warpgate als systemd-Dienst läuft und die UFW aktiv ist, kannst du jetzt auf die Warpgate-Installation zugreifen.

Öffne deinen Webbrowser und rufe die IP-Adresse des Servers gefolgt von Port 8888 (d.h.: https://192.168.5.20:8888/) auf.

Gib den Standardbenutzer„admin“ und das Passwort ein, das du eingerichtet hast. Klicke dann auf Anmelden, um fortzufahren.

Warpgate Anmeldung als Admin

Wenn du als„admin“ eingeloggt bist, klicke auf das Menü„Warpgate verwalten„.

Warpgate verwalten

Du solltest jetzt das Warpgate-Benutzer-Dashboard sehen.

warpgate Dashboard

Jetzt hast du die Installation von Warpgate als SSH- und MySQL-Bastion-Server auf dem Debian-Server abgeschlossen. Jetzt kannst du deinen Server und den MySQL-Server zu Warpgate hinzufügen.

Hinzufügen des SSH-Zielservers

In diesem Abschnitt fügst du den Linux-Server mit der IP-Adresse 192.168.5.25 und dem Hostnamen„node1“ zum Warpgate-Bastion-Server hinzu. Dazu musst du den öffentlichen SSH-Schlüssel von Warpgate zu deinem Zielserver hinzufügen.

Klicke im Warpgate-Dashboard auf das SSH-Menü und du siehst den öffentlichen und den privaten Warpgate-SSH-Schlüssel, mit denen du dich auf dem Zielserver anmelden kannst.

Kopiere den öffentlichen SSH-Schlüssel auf deinen Zettel.

ssh-schlüssel auflisten

Logge dich nun auf dem Zielserver ein, erstelle ein neues Verzeichnis„~/.ssh“ und erstelle dann die Datei„authorized_keys“ mit dem folgenden nano-Editor-Befehl.

mkdir -p ~/.ssh/
nano ~/.ssh/authorized_keys

Füge den öffentlichen SSH-Schlüssel von Warpgate in diese Datei ein.

SSH-Schlüssel zum Knoten hinzufügen

Als Nächstes gehst du zum Warpgate-Dashboard und klickst auf das Menü “ Konfiguration“ und dann auf„Ziel hinzufügen„.

Zielserver hinzufügen

Gib den Hostnamen des Zielservers ein, wähle als Typ SSH und klicke dann auf Ziel erstellen.

Ziel erstellen

Ändere die IP-Adresse des Zielservers und den Benutzer, mit dem du dich auf dem Server anmelden willst. Für die Authentifizierung wählst du„Warpgates private Schlüssel„. Dann musst du die Rolle „warpgate:admin“ im Abschnitt„Zugriff für Rollen zulassen“ aktivieren.

Wenn du fertig bist, klicke auf„Konfigurationen aktualisieren„.

details ziel ssh

Damit wird der Zielserver„node1“ zu Warpgate hinzugefügt. Du kannst dich jetzt über den Warpgate Bastion Server mit’node1‚ verbinden.

Führe den folgenden ssh-Befehl aus, um dich über den Warpgate-Bastion-Server mit’node1‚ zu verbinden. In diesem Befehl wird das Format „role: server-name“ mit der Bastion-Server-IP-Adresse 192.168.5.10 und Port 2222 verwendet.

ssh 'admin:node1@192.168.5.10' -p 2222

Bestätige mit Ja und füge den SSH-Fingerabdruck des Ziels hinzu. Wenn du nach dem Passwort gefragt wirst, gibst du das Passwort des Bastion-Benutzers„admin“ ein.

Wenn die Verbindung erfolgreich ist, solltest du eine Ausgabe wie„Warpgate connected“ erhalten. Und du bist auf dem Zielserver„node1“ angemeldet.

Gib folgenden Befehl ein, um den aktuellen Server zu überprüfen, auf dem du angemeldet bist. Du wirst sehen, dass du dich über den Warpgate SSH-Bastionserver auf dem Server„node1“ angemeldet hast.

id
hostname

Ausgabe:

Verbindung zum Zielserver über Warpgate bastion Server

Wenn du auf dem Warpgate Webadministrations-Dashboard nachschaust, solltest du den Fingerabdruck deines SSH-Zielservers sehen.

bekannte Hosts auflisten

Hinzufügen eines MySQL/MariaDB-Zielservers

In diesem Abschnitt fügst du einen MariaDB-Server zum Warpgate-Bastion-Server hinzu. Zuvor richtest du den MariaDB-Server so ein, dass er unter einer privaten/internen IP-Adresse läuft, und legst einen neuen MariaDB-Benutzer für Fernverbindungen an.

Melde dich beim MariaDB-Server an und öffne die Konfigurationsdatei „/etc/mysql/mariadb.conf.d/50-server.cnf“ mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Entferne die Auskommentierung des Parameters„bind-address“ und ändere den Wert in deine interne IP-Adresse. In diesem Beispiel wird der MariaDB-Server unter der privaten IP-Adresse„192.168.5.25“ ausgeführt.

bind-address            = 192.168.5.25

Speichere die Datei und bearbeite sie dann im Editor.

Gib den folgenden Befehl ein, um den MariaDB-Dienst neu zu starten und die Änderungen zu übernehmen. Nach dem Neustart sollte MariaDB unter der IP-Adresse „192.168.5.25“ statt unter der Standardadresse localhost laufen.

sudo systemctl restart mariadb

Als Nächstes meldest du dich in der MariaDB-Shell als Root-Benutzer an, um einen neuen Benutzer einzurichten und zu erstellen.

sudo mariadb -u root -p

Gib die folgenden Abfragen ein, um einen neuen MariaDB-Benutzer „appuser“ zu erstellen und ihm den Zugriff auf alle Datenbanken auf dem MariaDB-Server zu ermöglichen. Achte außerdem darauf, das Passwort in der folgenden Abfrage zu ändern.

CREATE USER 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';
FLUSH PRIVILEGES;
EXIT;

Als Nächstes richtest du das MariaDB-Client-Paket auf dem Rechner ein, der für die Verbindung mit dem MariaDB-Server verwendet werden soll.

Mariadb-Server erstellen

Installiere das Paket„mariadb-client“ mit dem folgenden Befehl. Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.

sudo apt install mariadb-client

mariadb client installieren

Wechsle nun zum Warpgate-Server, ändere das Arbeitsverzeichnis in„/var/lib/warpgate“ und kopiere die Warpgate-TLS-Zertifikate auf deinen MariaDB-Client-Rechner.

cd /var/lib/warpgate/
sudo scp tls.certificate.pem tls.key.pem root@192.168.5.15:/etc/mysql/

tls-Zertifikate auf den Mariadb-Client kopieren

Gehe nun zurück auf den Client-Rechner und öffne die MariaDB-Client-Konfiguration „/etc/mysql/mariadb.conf.d/50-client.cnf“ mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/mysql/mariadb.conf.d/50-client.cnf

Füge die folgenden Konfigurationen zum Abschnitt ‚[client]‚ hinzu, um eine sichere Client-Verbindung zu ermöglichen.

[client]
....
ssl-cert=/etc/mysql/tls.certificate.pem
ssl-key=/etc/mysql/tls.key.pem

Speichere die Datei und bearbeite den Editor, wenn du fertig bist.

Klicke auf dem Warpgate-Dashboard auf das Menü „Config“ und dann auf„Ziel hinzufügen„.

Ziel Warpgate hinzufügen

Gib den Namen des MariaDB-Servers ein, wähle als Typ„MySQL“ und klicke dann auf “ Ziel erstellen„.

Ziel-Mysql-Server hinzufügen

Ändere die Angaben zu Host, Benutzer und Passwort mit deinen MariaDB-Benutzerdaten. Achte darauf, die Option„Zertifikat überprüfen“ zu deaktivieren, wenn du Standard-TLS-Zertifikate verwendest, und aktiviere die Rolle„warpgate:admin“ im Abschnitt„Zugriff für Rollen zulassen„.

Klicke auf„Konfiguration aktualisieren„, wenn du fertig bist.

Zielserver einrichten

Nachdem der MariaDB-Server zu Warpgate hinzugefügt wurde, kannst du nun über den Warpgate MySQL Bastion Server auf den MariaDB-Server zugreifen.

Gib auf dem MariaDB-Client-Rechner den folgenden Befehl ein, um dich mit dem MariaDB-Server zu verbinden. Wenn du dazu aufgefordert wirst, gibst du das Passwort des Warpgate-Admin-Benutzers ein.

mysql -u 'admin#mysql1' --host '192.168.5.10' --port 33306 --ssl -p

Wenn die Verbindung hergestellt ist, solltest du die MariaDB-Shell-Eingabeaufforderung wie„MySQL [(dbname)]>“ sehen. Gib die folgenden Abfragen ein, um sicherzustellen, dass der Benutzer, den du verwendest, auf dem MariaDB-Server verfügbar ist.

SELECT host, user, plugin, authentication_string from mysql.user;
SHOW GRANTS FOR appuser@'%';

Ausgabe:

mit dem MySQL-Server über den Warpgate Bastion Server verbinden

Damit hast du dich jetzt über den Warpgate MySQL/MariaDB Bastion Server mit dem MariaDB Server verbunden.

Fazit

In diesem Tutorial hast du den Warpgate Bastion Server auf Debian 11 installiert und konfiguriert. Du hast Warpgate so konfiguriert, dass es mit systemd und der UFW-Firewall läuft. Außerdem hast du Warpgate als SSH- und MySQL/MariaDB-Bastion-Server konfiguriert, den SSH-Zielserver hinzugefügt und auch den MySQL/MariaDB-Zielserver hinzugefügt.

Damit kannst du jetzt neue Benutzer und Rollen einrichten und neue Verbindungen zu deinem Warpgate Bastion Server hinzufügen. Und du kannst Benutzerverbindungen und Zugriffe über einen einzigen zentralen Bastion Server zentralisieren. Weitere Informationen zu Warpgate findest du in der offiziellen Warpgate-Dokumentation.

Das könnte dich auch interessieren …