Einrichtung eines sicheren HashiCorp Vault Servers auf Ubuntu 24.04
Moderne Softwarelösungen arbeiten mit einer Vielzahl sensibler Zugangsdaten wie API-Schlüsseln, Datenbankpasswörtern, TLS-Zertifikaten und Verschlüsselungskeys. Werden diese Informationen fest im Code hinterlegt, unverschlüsselt gespeichert oder unsicher verteilt, entstehen erhebliche Sicherheitsrisiken. HashiCorp Vault löst dieses Problem, indem es eine zentrale und sichere Plattform zur Verwaltung vertraulicher Daten bereitstellt. Vault bietet eine sichere Geheimnisverwaltung, dynamische Zugangsdaten, Verschlüsselung als Service sowie fein abgestufte Zugriffskontrollen.
Diese Anleitung zeigt, wie Sie einen produktionsreifen Vault-Server unter Ubuntu 24.04 einrichten. Sie behandelt die Installation von Vault aus dem offiziellen HashiCorp-Repository, die Erstellung von TLS-Zertifikaten mit Let’s Encrypt, die sichere Konfiguration, das Initialisieren mit Unseal-Schlüsseln sowie den Zugriff über die Kommandozeile und die Weboberfläche.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind:
- Zugriff auf einen Ubuntu-24.04-Server mit einem Nicht-Root-Benutzer, der über Sudo-Rechte verfügt.
- Ein A-Record in Ihrer Domain, der auf die öffentliche IP-Adresse Ihres Servers verweist.
Installation von Vault über das HashiCorp-Repository
In diesem Abschnitt fügen Sie das offizielle APT-Repository von HashiCorp zu Ihrem Ubuntu-System hinzu und installieren Vault. Dadurch erhalten Sie verifizierte und aktuelle Versionen direkt vom Hersteller.
Paketliste aktualisieren
$ sudo apt update
Benötigte Abhängigkeiten installieren
$ sudo apt install gnupg curl lsb-release -y
HashiCorp-GPG-Schlüssel hinzufügen
Der GPG-Schlüssel dient dazu, sicherzustellen, dass die Pakete tatsächlich von HashiCorp stammen und nicht manipuliert wurden.
$ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
HashiCorp-Repository hinzufügen
Fügen Sie das HashiCorp-Repository zu den Paketquellen hinzu, um Zugriff auf die neuesten Versionen zu erhalten.
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
Paketindex erneut aktualisieren
$ sudo apt update
Vault installieren
$ sudo apt install vault -y
Installation überprüfen
$ vault --version
Beispielausgabe:
Vault v1.20.4 (55bd8f18c6c84aa89fdede4850a622c57f03bd7e), built 2025-09-23T13:22:38Z
Shell-Autovervollständigung aktivieren
Diese Funktion verbessert die Nutzung der Kommandozeile beim Arbeiten mit Vault.
$ vault -autocomplete-install
$ exec $SHELL
Firewall-Zugriff konfigurieren
Damit der Vault-Dienst erreichbar ist, muss die Firewall so eingerichtet werden, dass HTTPS-Verbindungen zugelassen werden. Die folgenden Schritte ermöglichen den sicheren Zugriff auf die Vault-Weboberfläche und die CLI.
HTTPS-Zugriff erlauben
Die Weboberfläche und die API von Vault verwenden Port 8200. Öffnen Sie diesen Port in der Firewall.
$ sudo ufw allow 8200/tcp
Port 80 vorübergehend öffnen
Port 80 wird von Certbot benötigt, um beim Ausstellen von TLS-Zertifikaten den Besitz der Domain zu bestätigen. Aktivieren Sie ihn daher vorübergehend.
$ sudo ufw allow 80/tcp
Firewall neu laden
Wenden Sie die Änderungen an, indem Sie UFW neu laden.
$ sudo ufw reload
TLS-Zertifikate mit Let’s Encrypt erstellen
Im nächsten Schritt erstellen Sie kostenlose TLS-Zertifikate mit Certbot und Let’s Encrypt. Diese Zertifikate verschlüsseln die Kommunikation zwischen Clients und dem Vault-Server.
Certbot installieren
$ sudo apt install certbot -y
TLS-Zertifikat anfordern
Ersetzen Sie vault.example.com durch Ihre eigene Domain und your-email@example.com durch Ihre gültige E-Mail-Adresse.
$ sudo certbot certonly --standalone -d vault.example.com --non-interactive --agree-tos --email your-email@example.com
Port-80-Regel entfernen
Nachdem das Zertifikat erstellt wurde, schließen Sie Port 80 wieder, um die Sicherheit zu erhöhen.
$ sudo ufw delete allow 80/tcp
Firewall erneut neu laden
$ sudo ufw reload
Verzeichnis für Vault-Zertifikate erstellen
Speichern Sie alle Zertifikatsdateien in einem separaten TLS-Verzeichnis für Vault.
$ sudo mkdir -p /opt/vault/tls
Zertifikate kopieren
Ersetzen Sie vault.example.com durch Ihre Domain, wenn Sie die Zertifikate kopieren.
$ sudo cp /etc/letsencrypt/live/vault.example.com/fullchain.pem /opt/vault/tls/cert.pem
$ sudo cp /etc/letsencrypt/live/vault.example.com/privkey.pem /opt/vault/tls/key.pem
Besitzrechte und Berechtigungen setzen
Beschränken Sie den Zugriff auf die Zertifikate auf den Vault-Benutzer und sichern Sie die privaten Schlüssel.
$ sudo chown -R vault:vault /opt/vault/tls
$ sudo chmod 600 /opt/vault/tls/cert.pem /opt/vault/tls/key.pem
Automatisches Erneuerungsskript erstellen
Dieses Skript sorgt dafür, dass Vault automatisch neu geladen wird, wenn Certbot die Zertifikate erneuert.
$ sudo tee /etc/letsencrypt/renewal-hooks/deploy/vault.sh > /dev/null << 'EOF'
#!/bin/bash
cp /etc/letsencrypt/live/vault.example.com/fullchain.pem /opt/vault/tls/cert.pem
cp /etc/letsencrypt/live/vault.example.com/privkey.pem /opt/vault/tls/key.pem
chown -R vault:vault /opt/vault/tls
chmod 600 /opt/vault/tls/*
systemctl reload vault
EOF
Skript ausführbar machen
$ sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/vault.sh
Vault für den Produktivbetrieb konfigurieren
In diesem Abschnitt wird erläutert, wie Sie eine produktionsreife Konfigurationsdatei für Vault erstellen. Diese Datei definiert Speicher-Backend, Netzwerk-Listener und Sicherheitsoptionen, damit Vault stabil und sicher läuft.
Standardkonfiguration sichern
Bevor Sie Änderungen vornehmen, sichern Sie die bestehende Vault-Konfigurationsdatei.
$ sudo cp /etc/vault.d/vault.hcl /etc/vault.d/vault.hcl.backup
Produktionskonfiguration erstellen
Bearbeiten Sie die Konfiguration, um sichere Listener-Einstellungen und Speicheroptionen festzulegen. Ersetzen Sie vault.example.com durch Ihre eigene Domain.
$ sudo tee /etc/vault.d/vault.hcl > /dev/null << 'EOF'
# Vault Produktionskonfiguration
# Weboberfläche aktivieren
ui = true
# Speichersperre deaktivieren (auf false setzen, wenn wenig RAM vorhanden ist)
disable_mlock = true
# Speicher-Backend – lokales Dateisystem
storage "file" {
path = "/opt/vault/data"
}
# HTTPS Listener
listener "tcp" {
address = "0.0.0.0:8200"
tls_cert_file = "/opt/vault/tls/cert.pem"
tls_key_file = "/opt/vault/tls/key.pem"
# Minimale TLS-Version erzwingen
tls_min_version = "tls12"
# Sichere Cipher Suites definieren
tls_cipher_suites = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
# Keine Client-Zertifikate erforderlich
tls_require_and_verify_client_cert = "false"
tls_disable_client_certs = "true"
}
# Netzwerkadressen für API und Cluster festlegen
api_addr = "https://vault.example.com:8200"
cluster_addr = "https://vault.example.com:8201"
EOF
Vault-Dienst aktivieren
Aktivieren Sie den Vault-Dienst, damit er automatisch beim Systemstart ausgeführt wird.
$ sudo systemctl enable vault
Vault-Dienst neu starten
Starten Sie den Dienst neu, um die neue Konfiguration zu übernehmen.
$ sudo systemctl restart vault
Dienststatus prüfen
Überprüfen Sie, ob Vault korrekt läuft und aktiv ist.
$ sudo systemctl status vault
Beispielausgabe:
● vault.service - HashiCorp Vault - Ein Tool zur Verwaltung von Secrets
Loaded: loaded (/usr/lib/systemd/system/vault.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-10-02 22:15:08 UTC; 3s ago
Vault-Umgebung konfigurieren
Nachdem Vault installiert und gestartet wurde, konfigurieren Sie Umgebungsvariablen, damit die CLI mit dem Server kommunizieren kann.
Vault-Adresse festlegen
Ersetzen Sie vault.example.com durch Ihre Domain, um die Serveradresse zu definieren.
$ echo 'export VAULT_ADDR="https://vault.example.com:8200"' >> ~/.bashrc
Shell-Konfiguration neu laden
Damit die Änderung wirksam wird, laden Sie die Shell-Konfiguration neu.
$ source ~/.bashrc
Umgebungsvariable überprüfen
Überprüfen Sie, ob die Variable korrekt gesetzt wurde.
$ echo $VAULT_ADDR
Beispielausgabe:
https://vault.example.com:8200
Verbindung zu Vault testen
Prüfen Sie, ob die CLI eine erfolgreiche Verbindung zum Vault-Server herstellen kann.
$ vault status
Beispielausgabe:
Key Value
--- -----
Seal Type shamir
Initialized false
Sealed true
Vault initialisieren und entsiegeln
Nach dem Start befindet sich Vault im versiegelten Zustand. In diesem Modus weiß Vault zwar, wo die Daten gespeichert sind, kann sie jedoch erst nach Eingabe der Unseal-Schlüssel entschlüsseln. In diesem Abschnitt lernen Sie, wie Sie Vault initialisieren, die erforderlichen Schlüssel erzeugen und es anschließend entsiegeln, um den Betrieb zu starten.
Funktionsweise des Entsiegelungsprozesses
Bei der Initialisierung erstellt Vault mehrere wichtige Schlüsselkomponenten:
- Master-Key: Wird verwendet, um alle Secrets zu verschlüsseln.
- Unseal-Keys: Mehrere Teile des Master-Keys, die mithilfe des Shamir-Algorithmus aufgeteilt werden.
- Root-Token: Der erste Administrationszugang zu Vault.
Standardmäßig werden fünf Unseal-Schlüssel generiert, von denen drei benötigt werden, um Vault zu entsiegeln. Dadurch wird verhindert, dass eine einzelne Person vollen Zugriff auf alle Daten erhält.
Vault initialisieren
Starten Sie die Initialisierung mit der Standardkonfiguration.
$ vault operator init
Beispielausgabe:
Unseal Key 1: nk+b+gZRPzUcTx5yDaY7Rxv26m/JqPuuhlYKVLxqvcLV
Unseal Key 2: kXi4dk1pDpTj0efjPekMMEnqMFIGVbbIECyAbYXu4XIi
Unseal Key 3: jPyTlTCeKAMHu16+EYHc6FcmqW+hQ8B9ZN02vQ8VnOmd
Unseal Key 4: 5rvMMnEvcIQdcAtKd+UxQX7FqsDbMEtuHqRijFlyjR9l
Unseal Key 5: igcpq67F04IhxzAFQ/i+VbC5+vPSRNY5Zsg/xHu+qgID
Initial Root Token: hvs.4H1RRGrHO8cbu2QumVuXUfOV
Wichtig: Bewahren Sie diese Schlüssel an sicheren, voneinander getrennten Orten auf. Sie werden nach der Initialisierung nicht erneut angezeigt.
Vault entsiegeln
Vault muss mit drei der fünf Unseal-Schlüssel entsiegelt werden. Jeder Schlüssel wird einzeln eingegeben.
Beginnen Sie mit dem ersten Schlüssel:
$ vault operator unseal
Nach Eingabe des ersten Schlüssels sehen Sie den Fortschritt:
Unseal Progress 1/3
Fahren Sie mit dem zweiten Schlüssel fort:
$ vault operator unseal
Beispielausgabe:
Unseal Progress 2/3
Geben Sie den dritten Schlüssel ein, um den Entsiegelungsprozess abzuschließen:
$ vault operator unseal
Wenn alle drei Schlüssel akzeptiert wurden, erscheint die Bestätigung, dass Vault entsiegelt ist:
Sealed false
Hinweis: Falls der Entsiegelungsprozess fehlschlägt, prüfen Sie, ob Sie drei unterschiedliche Schlüssel verwendet haben und nicht denselben mehrfach eingegeben haben.
Mit dem Root-Token anmelden
Nachdem Vault entsiegelt wurde, melden Sie sich mit dem bei der Initialisierung erzeugten Root-Token an.
$ vault login
Geben Sie bei der Abfrage das Initial Root Token ein, um Administratorzugriff zu erhalten.
Zugriff auf die Vault-Weboberfläche
Vault verfügt zusätzlich über eine grafische Weboberfläche, die eine benutzerfreundliche Verwaltung von Secrets und Konfigurationen ermöglicht. Neben der Kommandozeile können Sie hier Systemstatus, Zugriffe und Secret Engines bequem verwalten.
Vault-Dashboard öffnen
Öffnen Sie Ihren Webbrowser und rufen Sie Ihre Vault-Domain auf:
https://vault.example.com:8200
Nach dem Laden der Seite erscheint der Anmeldebildschirm. Wählen Sie dort Token als Authentifizierungsmethode und geben Sie Ihr Root-Token ein. Klicken Sie anschließend auf Sign In.
Nach erfolgreicher Anmeldung wird das Dashboard angezeigt, das Informationen über den Status Ihres Vault-Servers sowie aktive Secret Engines enthält.
Überblick über die Weboberfläche
- Das linke Navigationsmenü bietet schnellen Zugriff auf Secrets, Policies und Systemeinstellungen.
- Im Hauptbereich sehen Sie den aktuellen Serverstatus, den Versiegelungszustand sowie Audit-Protokolle.
- Sie können Benutzer verwalten, Secret Engines wie
kvaktivieren und Zugriffskontrolllisten (ACLs) konfigurieren.
Fazit
Sie haben nun eine produktionsreife Installation von HashiCorp Vault auf Ubuntu 24.04 erfolgreich eingerichtet. Das Setup umfasst TLS-Verschlüsselung mit Let’s Encrypt, automatische Zertifikatserneuerung sowie Zugriff über Kommandozeile und Webinterface.
Ihr Vault-Server ist jetzt bereit, sensible Daten wie API-Schlüssel, Zugangsdaten und Verschlüsselungsmaterial sicher zu speichern und zu verwalten. Weitere Informationen zu erweiterten Funktionen – etwa dynamische Secrets, Audit-Logs oder Cluster-Replikation – finden Sie in der offiziellen Vault-Dokumentation.


