Navigation und Service

CERT-Bund Reports:

Offene Elasticsearch-Server

Elasticsearch ist eine Suchmaschine basierend auf Apache Lucene, welche häufig in Verbindung mit Web-Applikationen eingesetzt wird.

Problem

Ist ein Elasticsearch-Server offen aus dem Internet erreichbar und nicht durch eine Authentifizierung geschützt, können Angreifer nach Belieben die mittels Elasticsearch verwalteten Daten auslesen, modifizieren oder löschen. Dies ermöglicht Angreifern ggf. das Ausspähen von sensiblen Informationen. Weiterhin können Angreifer (bis zur Version 1.2.x) beliebigen Programmcode auf dem Server ausführen.

Prüfung

Dieser Abschnitt beschreibt, wie Sie Ihr System auf einen offenen Dienst prüfen können. Es existieren üblicherweise mehrere Wege, dies zu testen. Das hier beschriebene Verfahren ist eines davon. Für alle hier beschriebenen Testverfahren werden Programme verwendet, die in gängigen Linux/Unix-Distributionen enthalten sind. Um zu überprüfen, ob ein Dienst offen aus dem Internet erreichbar ist, sollte die Prüfung nicht auf dem System selbst oder im lokalen Netzwerk erfolgen, sondern von einem anderen System im Internet, zum Beispiel an einem Kabel/DSL-Internetzugang. In allen Beispielen muss 192.168.45.67 durch die IP-Adresse des Systems ersetzt werden, welches geprüft werden soll.

Um zu überprüfen, ob ein Elasticsearch-Server offen aus dem Internet erreichbar ist, kann das Programm 'netcat' wie folgt verwendet werden:

$ printf "GET / HTTP/1.0\r\n\r\n" | netcat 192.168.45.67 9200

Ein offen erreichbarer Elasticsearch-Server liefert Informationen wie die folgenden zurück:

{
"status" : 200,
"name" : "My Database",
"cluster_name" : "My Cluster",
"version" : {
"number" : "1.7.5",
"build_hash" : "00f95f4ffca6de89d68b7ccaf80d148f1f70e4d4",
"build_timestamp" : "2016-02-02T09:55:30Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}

Wenn keine Verbindung zu dem Server hergestellt werden konnte, liefert netcat eine Fehlermeldung zurück:

netcat: connect to 192.168.45.67 port 9200 (tcp) failed: Connection refused

oder

netcat: connect to 192.168.45.67 port 9200 (tcp) failed: Connection timed out

Lösung

  • Stellen Sie Ihren Elasticsearch-Server nicht offen ins Internet!
  • Beschränken Sie in der Konfiguration des Elasticsearch-Servers und/oder durch Blockieren eingehender Verbindungen aus dem Internet auf Port 9200/tcp auf der Firewall den Zugriff auf den Elasticsearch-Server auf vertrauenswürdige Systeme (zum Beispiel den Server der Webanwendung).
  • Beachten Sie die Sicherheitsempfehlungen des Herstellers.
  • Halten Sie Ihre Elasticsearch-Installation auf dem aktuellen Stand. Installieren Sie verfügbare Sicherheitsupdates zeitnah.

Weitere Informationen