# Wie aktualisiere ich Enginsight in einem Air-Gapped-System?

Ein Air-Gapped-System (von engl. air gap, „Luftspalt“) ist ein Gerät oder Netzwerk, das physisch und logisch vollständig von anderen Geräten und Netzwerken sowie dem Internet abgeschottet ist.&#x20;

Eine Datenübertragung kann damit prinzipiell nur über zweierlei Wege stattfinden:&#x20;

* manuell über entsprechende transportable Speichermedien. &#x20;
* über die Vorschaltung einer sog. demilitarisierten Zone (DMZ), die eine abgesicherte Verbindung zum Internet oder zu anderen Netzwerken hat. Die Kommunikation zwischen dem Air-Gapped-System und dem DMZ-Server erfolgt ausschließlich ausgehend vom Air-Gapped-System.&#x20;

Für die Aktualisierung der Enginsight Plattform und ihrer Komponenten bedeutet dies, dass der direkte Zugriff durch das Air-Gapped-System auf das Update-Repository von Enginsight über das Internet (<https://get.enginsight.com>) nicht möglich ist.&#x20;

<p align="center">--------------------</p>

Enginsight stellt für diesen Fall zwei zusätzliche, alternative Update-Pfade zur Verfügung. Diese müssen beide durchgeführt werden, um die komplette Enginsight Instanz zu aktualisieren:

* [Alternativer Update-Pfad für Air-Gapped-Systeme: Teil 1](#alternativer-update-pfad-fur-air-gapped-systeme-teil-1): Hiermit werden die Docker-Container, die auf dem Enginsight Applikationsserver laufen, aktualisiert.
* [Alternativer Update-Pfad für Air-Gapped-Systeme: Teil 2](#alternativer-update-pfad-fur-air-gapped-systeme-teil-2): Hiermit werden *unter anderem* die Enginsight Komponenten Pulsar, Observer, Hacktor, Watchdog und Loggernaut, das Enginsight SIEM, die CVE-Datenbank sowie die YARA-Regeln zur Erkennung von APTs (Advanced Persistent Threats) aktualisiert.

{% hint style="danger" %}
**Bitte beachte**: Für die Durchführung der Updates wird eine Maschine mit Internetverbindung und installierter Docker Engine benötigt. Wir empfehlen hierfür einen DMZ-Server zu nutzen.
{% endhint %}

***

## Alternativer Update-Pfad für Air-Gapped-Systeme: Teil 1&#x20;

Nimm folgende Schritte vor, um die Docker-Container, die auf dem Enginsight Applikationsserver laufen, zu aktualisieren:

{% stepper %}
{% step %}

### Benötigtes Update-Skript auf den DMZ-Server herunterladen

Lade das Update-Skript für die Docker-Container mit folgendem Befehl herunter:

```
curl -fsSLO https://get.enginsight.com/airgap/airgap.sh
chmod +x airgap.sh
```

{% endstep %}

{% step %}

### Bei der Enginsight Docker Registry auf dem DMZ-Server anmelden

1. Melde dich mit folgendem Befehl in der Docker Registry an:

```
sudo docker login registry.enginsight.com
```

2. Du wirst nun aufgefordert, Benutzername (`Username`) und Passwort (`Password`) für die Docker Registry einzugeben.

{% hint style="warning" %}
**Bitte beachte**: Die Zugangsdaten für die Enginsight Docker Registry erhältst du von uns. Nimm dazu Kontakt mit uns auf unter *<insidesales@enginsight.com>*.
{% endhint %}

Wenn die Anmeldung erfolgreich war, wird dir die Meldung `Login Succeeded` angezeigt.
{% endstep %}

{% step %}

### Update-Skript auf dem DMZ-Server ausführen

Führe nun das Update-Skript mit folgendem Befehl auf dem DMZ-Server aus:

```
sudo ./airgap.sh export
```

Das Update-Skript:

* lädt das komplette Enginsight Enterprise-Repository von GitHub herunter.
* extrahiert die aktuelle Datei **docker-compose.yml** und liest die Versionen der Docker-Container aus.
* erstellt die Datei **airgap.versions**.
* zieht alle Enginsight Docker-Images und Dependencies (z.B. MongoDB, Redis).
* verpackt alles in einem einzigen Datei-Archiv, **enginsight.airgap**.

Dieser Prozess kann je nach Geschwindigkeit deiner Internetverbindung eine Weile dauern.
{% endstep %}

{% step %}

### Update-Skript und erstelltes Dateiarchiv auf dem Air-Gapped-System einspielen

Nun musst du sowohl das in [Schritt 1](#benotigtes-update-skript-auf-den-dmz-server-herunterladen) heruntergeladene Update-Skript, **airgap.sh**, als auch das in [Schritt 3](#update-skript-auf-dem-dmz-server-ausfuhren) erstellte Dateiarchiv, **enginsight.airgap**, auf deinem Air-Gapped-System einspielen.

Kopiere dazu die Dateien manuell mithilfe eines transportablen Speichermediums auf dein Air-Gapped-System oder nutze einen anderen Übertragungsweg deiner Wahl.

{% hint style="warning" %}
**Bitte beachte**: Wir empfehlen, diesen Schritt mindestens einmal im Monat durchzuführen.
{% endhint %}
{% endstep %}

{% step %}

### Update-Skript auf dem Air-Gapped-System ausführen

Führe nun mit folgendem Befehl das Update-Skript auf deinem Air-Gapped-System aus:

```
chmod +x airgap.sh
sudo ./airgap.sh import enginsight.airgap
```

Das Update-Skript:

* lädt alle Enginsight Docker-Images und Dependencies.
* aktualisiert alle Versionen der Docker-Images in der Datei **docker-compose.yml**.
* kopiert die Datei **airgap.versions** und das Dateiarchiv **enginsight.airgap** in das Standard-Verzeichnis **/opt/enginsight/enterprise/**.

{% hint style="warning" %}
**Bitte beachte**: Deine Enginsight Konfigurationsdateien unter **./conf/** werden durch das Update-Skript nicht beeinflusst.
{% endhint %}
{% endstep %}

{% step %}

### Optional: Dateien in alternativem Verzeichnis abspeichern

Wenn du die Datei **airgap.versions** und das Dateiarchiv **enginsight.airgap** in einem anderen Verzeichnis als **/opt/enginsight/enterprise/** abspeichern möchtest, lautet der Befehl zum Ausführen des Update-Skripts wie folgt:

<pre><code>chmod +x airgap.sh
<strong>sudo ./airgap.sh import -d &#x3C;AlternativerVerzeichnispfad> enginsight.airgap
</strong></code></pre>

{% hint style="info" %}
Vergiss dabei nicht, `<AlternativerVerzeichnispfad>` entsprechend zu ersetzen.
{% endhint %}
{% endstep %}

{% step %}

### Docker-Container auf dem Air-Gapped-System neu starten

Starte nun mit folgendem Befehl die Docker-Container auf deinem Air-Gapped-System neu, um die Änderungen zu übernehmen:

```
cd /opt/enginsight/enterprise
sudo docker compose down
sudo docker compose up -d
```

{% hint style="warning" %}
**Bitte beachte**: Wenn du in [Schritt 6](#optional-dateien-in-alternativem-verzeichnis-abspeichern) ein anderes Verzeichnis als das Standard-Verzeichnis **/opt/enginsight/enterprise/** angegeben hast, musst du den Verzeichnispfad entsprechend anpassen.
{% endhint %}
{% endstep %}
{% endstepper %}

***

## Alternativer Update-Pfad für Air-Gapped-Systeme: Teil 2

Mit Teil 2 des Updates werden *unter anderem* die Enginsight Komponenten Pulsar, Observer, Hacktor, Watchdog und Loggernaut, das Enginsight SIEM, die CVE-Datenbank sowie die YARA-Regeln zur Erkennung von APTs aktualisiert.

{% hint style="danger" %}
**Bitte beachte**: Wir empfehlen dringend, diesen Update-Pfad mindestens einmal täglich durchzuführen, um die CVE-Datenbank und APT-Erkennungsregeln tagesaktuell zu halten.
{% endhint %}

Nimm folgende Schritte vor:

{% stepper %}
{% step %}

### Benötigte Dateiarchive auf den DMZ-Server herunterladen

Für Teil 2 des Updates stehen **drei Dateiarchive** zur Verfügung, die aus Sicherheitsgründen **auf verschiedenen Servern** liegen:&#x20;

* Vollständiger Speicherabzug auf dem Content Delivery Network (CDN) von AWS: <https://dls.enginsight.com/airgap.tar.gz>

{% hint style="warning" %}
Dieses Dateiarchiv ist für die Aktualisierung obligatorisch.&#x20;
{% endhint %}

* Speicherabzug der Prüfwerte (Hashes) im regulären Update-Repository von Enginsight: <https://get.enginsight.com/airgap.tar.gz.sha1> <https://get.enginsight.com/airgap.tar.gz.sha256>

{% hint style="info" %}
&#x20; Diese Dateiarchive sind optional.
{% endhint %}

Lade das oder die Dateiarchive, die du benötigst, auf deinen DMZ-Server über die angegebenen URLs herunter.
{% endstep %}

{% step %}

### Dateiarchive auf dem Air-Gapped-System einspielen

1. Kopiere das oder die heruntergeladenen Dateiarchive manuell mithilfe eines transportablen Speichermediums auf dein Air-Gapped-System oder nutze einen anderen Übertragungsweg deiner Wahl.

{% hint style="warning" %}
**Bitte beachte**: Um die CVE-Datenbank und die APT-Erkennungsregeln tagesaktuell zu halten, empfehlen wir dringend, diesen Schritt z.B. per Skript zu automatisieren.
{% endhint %}

2. Speichere das oder die Dateiarchive in einem Verzeichnis deiner Wahl ab. Der Pfad zu dem Verzeichnis, in dem die Dateiarchive gespeichert werden, wird zur Anpassung der Enginsight Konfigurationsdatei in [Schritt 4.3](#enginsight-konfigurationsdatei-auf-dem-air-gapped-system-anpassen) benötigt.
   {% endstep %}

{% step %}

### Dateiarchiv auf dem Air-Gapped-System entpacken

Entpacke das Dateiarchiv **airgap.tar.gz** mit folgendem Befehl:

```
tar -xzf airgap.tar.gz
```

{% endstep %}

{% step %}

### Enginsight Konfigurationsdatei auf dem Air-Gapped-System anpassen

Passe nun die Konfigurationsdatei `config.json` deiner Enginsight Installation auf dem Air-Gapped-System an.

{% hint style="warning" %}
**Bitte beachte**: Die folgenden Schritte müssen *auf dem Enginsight Applikationsserver* durchgeführt werden.&#x20;
{% endhint %}

1. Logge dich auf dem Enginsight Applikationsserver ein.&#x20;
2. Öffne mit folgendem Befehl die Enginsight Konfigurationsdatei:

```
sudo nano /opt/enginsight/enterprise/conf/services/config.json 
```

3. Füge der Konfigurationsdatei auf Root-Ebene das Attribut `"updateRepositoryUrl"` hinzu und ergänze als Wert `<URLUpdateVerzeichnis>` die URL, die auf das Verzeichnis zeigt, in dem die entpackten Dateien aus [Schritt 2](#dateiarchive-auf-dem-air-gapped-system-einspielen) liegen.

{% hint style="danger" %}
**Bitte beachte**: Die Angabe des Verzeichnispfades muss hier **inklusive https\:// oder http\://** erfolgen. Es reicht **nicht**, nur die Domain anzugeben.&#x20;
{% endhint %}

<pre><code><strong>"updateRepositoryUrl": "&#x3C;URLUpdateVerzeichnis>", 
</strong>"api": { 
      ... 
       },
</code></pre>

4. Speichere die Änderungen in der Konfigurationsdatei (Strg+o) und bestätige den Speicherprozess. Schließe die Datei (Strg+x).

{% hint style="info" %}
Enginsight greift nun auf das angegebene Verzeichnis zu statt auf das standardmäßige Update-Repository (<https://get.enginsight.com>).
{% endhint %}

4. Navigiere nun mit folgendem Befehl zum Enginsight Installationsverzeichnis:&#x20;

```
cd /opt/enginsight/enterprise  
```

6. Führe das Enginsight Setup-Skript für den Applikationsserver mit folgendem Befehl erneut aus und bestätige alle Abfragen, damit die Änderungen wirksam werden:

```
sudo ./setup.sh
```

{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.enginsight.com/docs/knowledge-base/air-gapped-systeme/wie-aktualisiere-ich-enginsight-in-einem-air-gapped-system.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
