> For the complete documentation index, see [llms.txt](https://docs.enginsight.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enginsight.com/docs/knowledge-base/air-gapped-systeme/wie-aktualisiere-ich-enginsight-in-einem-air-gapped-system.md).

# 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**.

{% hint style="info" %}
Dieser Prozess kann je nach Geschwindigkeit deiner Internetverbindung eine Weile dauern.
{% endhint %}
{% 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 folgenden Befehlen 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, lauten die Befehle 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 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 3](#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 %}

***
