[LINUX] Fand die Ursache für die mysteriöse Kommunikation des Minecraft-Servers (Spigot)

Es ist fast drei Jahre her, seit ich angefangen habe, Spigot [^ 1] zu verwenden, aber ich habe es immer noch nicht verstanden. [^ 1]: Einer der MOD-Server von Minecraft. URL: https://www.spigotmc.org/

Was ist passiert

Als ich die Kommunikation des Servers untersuchte, auf dem Spigot ausgeführt wird, um die Sicherheit usw. zu erhöhen, wurde eine seltsame Verbindung gefunden ...

>> netstat -ntu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
~Unterlassung~
tcp6       0      1 xx.xx.xx.xx:35260    198.27.66.94:80         ESTABLISHED

Irgendwie mit 198.27.66.94: 80 kommunizieren ...

Als ich den Prozess über den Port mit lsof überprüfte, war es definitiv Spigot.

Wer ist "198.27.66.94"?

Vorerst locken

>> curl 198.27.66.94:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on Debian!</title>
~Unterlassung~
</html>

Es sieht aus wie die Standardseite für Nginx. Keine Information.

IP Reverse Pull

>> nslookup 198.27.66.94
Server:         xx.xx.xx.xx
Address:        xx.xx.xx.xx

Non-authoritative answer:
94.66.27.198.in-addr.arpa       name = ns511765.ip-198-27-66.net.

Hmmm. Es scheint, dass es nicht eingestellt wurde.

Als Schuldiger auf das Plug-In treten, Umweg machen

Greifen Sie das Einsteckglas ohne Verwendung

>> unzip -c '*.jar' | grep '198\.27\.66\.94'

28 archives were successfully processed.
>> unzip -c '*.jar' | grep 'ns511765\.ip\-198\-27\-66\.net'

28 archives were successfully processed.

Ich weiß nichts

Tatsächlich ist Spigot selbst der Schuldige

Als letzten Ausweg habe ich versucht, den Verbrecher zu identifizieren, indem ich das Plug-In schrittweise entfernt habe. Ich habe jedoch festgestellt, dass die Kommunikation auch dann stattfand, wenn überhaupt kein Plug-In installiert war.

tcpdump (Ich hätte es zuerst tun sollen.)

>> tcpdump dst host 198.27.66.94 -A
~Unterlassung~
User-Agent: Java/1.8.0_191
Host: mcstats.org
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 261

Der Hostname des Verbindungsziels ist bekannt.

>> nslookup mcstats.org
Server:         xx.xx.xx.xx
Address:        xx.xx.xx.xx

Non-authoritative answer:
Name:   mcstats.org
Address: 198.27.66.94

So wurde ungefähr die Hälfte der Identität von "198.27.66.94" gefunden.

Identifizieren des relevanten Teils des Codes

Wenn Sie wissen, dass der Spigot-Server selbst der Schuldige und der Hostname ist, identifizieren Sie den relevanten Teil des Codes.

Grep die von BuildTools generierte Zwischendatei

>> grep -r 'mcstats.org' .
./Spigot/CraftBukkit-Patches/0015-Metrics.patch:+    private static final String BASE_URL = "http://mcstats.org";
./Spigot/CraftBukkit-Patches/0015-Metrics.patch:+            configuration.options().header("http://mcstats.org").copyDefaults(true);
./Spigot/Spigot-Server/src/main/java/org/spigotmc/Metrics.java:    private static final String BASE_URL = "http://mcstats.org";
./Spigot/Spigot-Server/src/main/java/org/spigotmc/Metrics.java:            configuration.options().header("http://mcstats.org").copyDefaults(true);
Binary file ./Spigot/Spigot-Server/target/classes/org/spigotmc/Metrics.class matches

Es scheint eine Beschreibung zu geben, die sich auf "Spigot / Spigot-Server / src / main / java / org / spigotmc / Metrics.java" bezieht.

Den Inhalt des Patches können Sie hier im entsprechenden Teil überprüfen. https://hub.spigotmc.org/stash/projects/SPIGOT/repos/spigot/browse/CraftBukkit-Patches/0015-Metrics.patch?at=refs%2Fheads%2Fversion%2F1.12.2

Die Version des diesmal verwendeten Spigot-Servers ist übrigens 1.12.2, aber wenn er auf 1.13 aktualisiert wird, wird der Hostname von "mcstats.org" in "mcstats.spigotmc.org" (und von http in https) geändert. Es scheint, dass es geworden ist. Sie können das Commit hier sehen. https://hub.spigotmc.org/stash/projects/SPIGOT/repos/spigot/commits/ed1cec9ae9ee07f1b51bdda14dfe14b40e92c9ed#CraftBukkit-Patches/0014-Metrics.patch

Was dieser Code tut

Es scheint, dass es zur Übermittlung statistischer Informationen verwendet wird. Derzeit scheint es nicht als Dienst zu funktionieren.

Überreste der Vergangenheit und Vorbereitungen für die Zukunft

Wie Sie dem Inhalt des Patches entnehmen können, werden Statistiken wie Informationen zum Server-Betriebssystem, die Spigot-Version und die Anzahl der Player an den oben gezeigten Host gesendet.

In der Vergangenheit hat mcstats.org anscheinend einen Dienst betrieben, der Informationen auf dem Minecraft-Server sammelt und auf einer GUI anzeigt. BStats (https://bstats.org/) ist jetzt ein alternativer Dienst. https://www.spigotmc.org/threads/mcstats-down.193444/

Bei der Aktualisierung auf 1.13 wurde der Hostname von "mcstats.org" in "mcstats.spigotmc.org" geändert, da geplant ist, ihn in Zukunft zu verwenden. https://hub.spigotmc.org/jira/browse/SPIGOT-4203

Optischer Ausgang

Dies ist eine Funktion, die derzeit nicht verwendet wird. Sie möchten daher unnötige Kommunikation vermeiden. Sie können diese Funktion deaktivieren, indem Sie die Option "Plugins / PluginMetrics / config.yml" auf "true" setzen.

plugins/PluginMetrics/config.yml


# http://mcstats.org
# opt-out: false
opt-out: true
guid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
debug: false

Zusammenfassung

Es war eine Geschichte, dass Sie so viel wissen sollten, wenn Sie den Spigot-Server fast drei Jahre lang berührt hatten. (Andererseits frage ich mich, ob es viele Leute gibt, die das nicht wissen ...)

Es ist erfrischend, die Ursache zu verstehen. Ich habe das Gefühl, dass ich heute gut schlafen kann.

Recommended Posts

Fand die Ursache für die mysteriöse Kommunikation des Minecraft-Servers (Spigot)
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Die Geschichte des Starts eines Minecraft-Servers von Discord
Ich habe es herausgefunden, indem ich die Bewertungen der Website für Jobwechsel analysiert habe! ??
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Die Geschichte des erneuten Bereitstellens des Anwendungsservers
Ich habe den Inhalt des Docker-Volumes überprüft
Ich habe die Optionen von copyMakeBorder von OpenCV überprüft
Die Ordnerstruktur von Flask ist zusammengefasst
Was ist die Ursache für den folgenden Fehler?
Die Python-Projektvorlage, an die ich denke.
Ändern Sie den Ziel-Batfish-Server von Pybatfish