Mein Linux-Server wurde gehackt. Wie finde ich heraus, wie und wann es gemacht wurde?

11

Ich habe einen Heimserver, auf dem eine Desktop-Ubuntu-Distribution ausgeführt wird. Ich habe das in meiner Crontab gefunden

* * * * * /home/username/ /.access.log/y2kupdate >/dev/null 2>&1

und als ich in dieses Verzeichnis schaute (das Leerzeichen nach Benutzername / ist ein Verzeichnisname), fand ich viele Skripte, die offensichtlich etwas tun, was sie nicht tun sollten.

Bevor ich diesen Computer lösche und Dinge neu installiere, möchte ich herausfinden, was die Sicherheitsverletzung verursacht hat und wann sie durchgeführt wurde. Also öffne ich nicht wieder das gleiche Loch.

In welche Protokolldateien soll ich schauen? Die einzigen Server, von denen ich weiß, dass sie auf dem Computer ausgeführt werden, sind sshd und lighttpd.

Was soll ich tun, um festzustellen, ob solche Dinge erneut auftreten?

Jonatan Kallus
quelle
@Person, der für den Wechsel zu SU gestimmt hat: Wie bezieht sich die Viren- / Hacking-Forensik Ihrer Meinung nach mehr auf Super User als auf Serverfehler?
Chris S
3
Ich bin froh zu hören, dass geplant ist, den Computer zu löschen und Dinge neu zu installieren. Das ist absolut das Richtige, egal was Sie finden, denn es besteht immer eine gute Chance, dass es etwas Schlimmeres gibt, das Sie nicht gefunden haben.
Mattdm
Yep sollte wirklich abstimmen, um zu IT Security ( security.stackexchange.com ) zu wechseln , nicht zu SU oder Serverfault!
Rory Alsop

Antworten:

4

Stellen Sie zunächst sicher, dass der Computer von allen Netzwerken getrennt ist.
Stellen Sie zweitens sicher, dass Sie alle wichtigen Daten von den Laufwerken erhalten, bevor Sie das gehackte Betriebssystem erneut starten.

Beginnen Sie mit dem Auschecken der Zeitstempel auf den betreffenden Dateien. Oft sind sie genau.
Vergleichen Sie diese mit dem httpd-Protokoll und dem Auth-Protokoll, wenn sie nicht gelöscht wurden. Wenn einer der anderen abgewischt wurde, können Sie wetten, dass dies das Mittel zur Eingabe war. Wenn sie noch in Kontakt sind, können Sie möglicherweise weitere Informationen darüber abrufen, wie sie aus dem Protokoll eingegangen sind.

Wenn sie alle abgewischt sind, bist du ziemlich durchgeknallt. Es würde wahrscheinlich mehr Zeit brauchen, um herauszufinden, was passiert ist, als es wert ist.

Sie haben erwähnt, dass diese beiden Dienste ausgeführt werden. Gab es eine gute Firewall, die den Zugriff auf alles andere verhindert? Haben Sie SSH auf Port 22 zugelassen? Ist Ihr Login einigermaßen leicht zu erraten? Haben Sie Passwort-Logins zugelassen? Hatten Sie irgendeine Art von Real Rate Limit für Passwort-Logins? Hatten Sie zusätzliche Software mit lighttpd installiert? Perl; php; cgi; ein CMS oder ähnliches? Haben Sie eine aktualisierte Version der gesamten Software ausgeführt? Abonnieren Sie Sicherheitsbenachrichtigungen für die gesamte von Ihnen ausgeführte Software und bewerten Sie alle Benachrichtigungen sorgfältig, um festzustellen, ob sie für Software gelten, die Sie ausführen / der Öffentlichkeit zugänglich machen?

Chris S.
quelle
Die Installation war eine Standard-Ubuntu Desktop Edition 10.x, aus Sicherheitsgründen wurde nichts Besonderes unternommen. Ich nahm an, dass es standardmäßig eine ausreichend gute Firewall gab. Ist das nicht richtig? Ich habe die Passwortanmeldung an Port 22 zugelassen, aber das Passwort bestand aus einer zufälligen 8-stelligen Zeichenfolge. Sollte gut genug sein?
Jonatan Kallus
Ich glaube, die Standard-Firewall ist "Wide Open - No Firewall". Wenn Sie es nicht sorgfältig konfiguriert haben, tut es nichts.
Chris S
Die Frage ist, welche Dienste Sie mehr ausgeführt haben als welche Firewall. Sofern die Firewall nicht so eingerichtet ist, dass bestimmte IP-Adressen für den Zugriff konfiguriert werden, besteht die beste Firewall darin, überhaupt keine unnötigen Dienste auszuführen. Und wie war Ihr Netzwerk eingerichtet? Offen für das Internet? In einem privaten Netzwerk? Hatten Sie zu dem Zeitpunkt, als Ihr internes Netzwerk ins Internet ging, keine Firewall oder befand sich Ihr Server in einer DMZ?
Bart Silverstrim
Der Server war direkt mit dem Internet verbunden. Ich habe es auch als Router benutzt. Wenn die Standard-Firewall weit geöffnet ist, habe ich
wahrscheinlich
4

Dies ist eine Art Thema für sich; Sie können Google für Linux Forensics für weitere Informationen googeln. Grundsätzlich müssten Sie zuerst ein Image Ihrer Laufwerke für die Offline-Analyse erstellen, dann den Computer löschen und von Clean Slate installieren.

Und erinnere dich an alle Nebenkosten. Jeder, der den Computer benutzt, könnte seine Passwörter manipuliert haben. Ändern Sie Kennwörter, lassen Sie sie offline usw., bis Sie sie in einem "Reinraum" (isolierte VM) erhalten.

Ansonsten werden viele Protokolle überprüft (die gefälscht werden können) und Ihre Anwendungen überprüft (PHP-Skripte? Datenbanken? Für die neuesten Korrekturen aktualisiert? Andere Benutzer geben Passwörter heraus?).

Es gibt buchstäblich keine einfache Möglichkeit, Ihre Frage zu beantworten, da Sie forensische Arbeiten am Server durchführen und nach Löchern suchen müssen. Sie könnten einige automatisierte Tools verwenden, aber denken Sie daran, wenn der Angreifer über Root-Rechte verfügt, können Sie den System-Binärdateien nicht mehr vertrauen und Sie können den Protokollen nicht vertrauen.

Abhängig davon, wie sicher Sie es für zukünftige Angriffe machen möchten, können Sie Ihre Protokolle zunächst auf ein System umleiten, das nur zum Speichern von Systemprotokollen verwendet wird. Kein anderer Zugriff, um den Angriffsfußabdruck zu verringern.

Sie würden auch Prüfsummensoftware auf Ihrem System wie Tripwire ausführen, um die Integrität Ihrer Dateien zu überprüfen.

Halten Sie sich natürlich über Updates auf dem Laufenden und führen Sie eine Scan-Software aus, die nach Rootkits sucht.

Auch hier ist Sicherheit kein Wurf. Es kann auch eine Spezialität für sich sein. Die mehrschichtige Sicherheit kann so streng sein wie das Suchen nach Hosts / IPs, die nicht zu Ihrem Netzwerk gehören, das Verschlüsseln des gesamten Zugriffs auf das System, das tägliche Protokollieren von Änderungsprotokollen auf Ihrem System und das Einrichten eines Honeypots in Ihrem Netzwerk an Suchen Sie nach seltsamen Aktivitäten (warum versucht mein Server, eine Verbindung zu Port 25 des Honeypot-Computers herzustellen?)

In erster Linie, wenn Sie nach Aktivität suchen möchten, holen Sie sich das Disk-Image und installieren Sie die Serversoftware neu. Von Grund auf neu. Den Binärdateien des Servers kann nicht mehr vertraut werden.

BEARBEITEN - einige andere Dinge, die mir seit der Ausführung von SSH einfallen - Installieren Sie Denyhosts. Es kann so konfiguriert werden, dass automatisierte Angriffe auf Ihr System auf SSHD nach X Versuchen gesperrt werden. Es kann auch so konfiguriert werden, dass es von anderen Denyhost-Servern in einer "Cloud" aktualisiert wird, um gesperrte IP-Adressen freizugeben und so automatisierte Angriffe zu minimieren. Sie können auch den Port verschieben, den es abhört. Viele Leute weisen darauf hin, dass es nur Sicherheit durch Dunkelheit ist, aber angesichts der Anzahl der gescannten Bots werden zufällige Einbruchsversuche erheblich reduziert.

Bart Silverstrim
quelle
Vielen Dank! Sie haben wirklich jeweils die Hälfte der Frage beantwortet. Ich wünschte, ich könnte beide als akzeptierte Antwort markieren.
Jonatan Kallus