Oh SkandalMongoDB installiert sich per Default ohne Passwort und ist mit der Standardeinstellung via Internet erreichbar. Wen wundert das noch? Längst hat Usability in der Entwicklung tausend mal mehr Gewicht als Security. In Zeiten wo Kinder in der Grundschule programmieren lernen sollten, ist weniger Platz für Sicherheit.

Portscan für Kiddies: Kinderleicht eine IP-Range abgrasen

Angry IP Scanner anstatt nmap, der Portscan für Kiddies. Kinderleicht eine IP-Range abgrasen.

Elasticsearch, eine auf Apache Lucene basierte Volltextsuche wie Twitter sie verwendet, ist genauso „Welt offen“ und im Gegensatz zum direkten Konkurrenten Solr auch noch hip.

Ein IP range scan auf Port 9200 genügt, um auf die vollständig ungeschützten RESTful APIs tausender Elasticsearch Umgebungen zuzugreifen. Als Superadmin sozusagen, denn einen Schutz gibt es nicht. Wer nach der Installation von Elasticsearch nicht selbst mit einer Firewall Port 9200 von außen blockiert, der muss damit Leben dass er über die offene RestAPI „gehackt“ wird. Das geht ganz einfach mit cURL oder noch einfacher mit dem beliebten elasticsearch-head:

elasticsearch-head gibts auf GitHub und ist nur eines der vielen Client-Programme für die restAPI

elasticsearch-head gibts auf GitHub und ist nur eines der vielen Client-Programme für die restAPI

Elasticsearch mag zwar weniger oft als MongoDB mit sensiblen befüllt sein, aber für Datenverfälschung mit wenigen Handgriffen lohnt es sich für Angreifer natürlich. So könnten als Beispiel die Suchresultate in einem Xenforo-Forum verfälscht und mit eigenen Werbedaten vollgepumpt werden. Ein sich lohnender und kinderleichter „Hack“.

Also das mindeste was man tun sollte, ist den IPv4 Zugang mit iptables blockieren:

/sbin/iptables -A INPUT -d 99.129.129.99 -p tcp --destination-port 9200 -j DROP
/sbin/iptables -A INPUT -d 99.129.129.99 -p tcp --destination-port 9300 -j DROP

Damit ist die Restful API aus dem Internet her gesperrt (99.129.129.99 natürlich ersetzen, -D (delete) anstatt -A (add) um wieder zu entfernen) Die Cluster Nodes selbst sprechen mit Ports 9300-9400 untereinander, auch dieser Port sind offen aber per se nicht zwingend unsicher. In einer produktiven Umgebung sollen auch diese Ports geschützt werden.

Übrigens haben die Entwickler kürzlich Elasticsearch Shield veröffentlicht, eine Lösung für rollenbasierte Suchanfragen mit z.B. LDAP, oder auch verschlüsseltem Zugriff auf die indexierten Daten. Der Haken: Das gibt es für den produktiven Einsatz nur gegen Geld. Viel Geld.

Es grenzt beinahe an Dummheit, dass Entwickler solcher Programme keine deutlichen Warnungen aussprechen. Beispielsweise ein unübersehbarer Warnhinweis während der Installation wäre doch ein erster Ansatz.


Schroeffu

Der Autor ist Schweizer, verheiratet, seit November 2015 zu seiner liebevollen Frau nach Braunschweig, Deutschland, ausgewandert. Als Vater von inzwischen zwei Kindern kommt das Bloggen hoffentlich nicht zu kurz.

1 Kommentar

Hagen · 7. November 2015 um 09:53

Für Elasticsearch scheint das inzwischen nicht mehr so zu sein

Schreibe einen Kommentar zu Hagen Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.