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
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 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.
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.
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.
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
Ö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.
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
Ü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.
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:
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.
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.
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:
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.
Wenn du als„admin“ eingeloggt bist, klicke auf das Menü„Warpgate verwalten„.
Du solltest jetzt das Warpgate-Benutzer-Dashboard sehen.
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.
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.
Als Nächstes gehst du zum Warpgate-Dashboard und klickst auf das Menü “ Konfiguration“ und dann auf„Ziel hinzufügen„.
Gib den Hostnamen des Zielservers ein, wähle als Typ SSH und klicke dann auf 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„.
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:
Wenn du auf dem Warpgate Webadministrations-Dashboard nachschaust, solltest du den Fingerabdruck deines SSH-Zielservers sehen.
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.
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
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/
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„.
Gib den Namen des MariaDB-Servers ein, wähle als Typ„MySQL“ und klicke dann auf “ Ziel erstellen„.
Ä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.
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:
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.