Woher weiß ich, ob mein Linux-Server gehackt wurde?
36
Was sind die Anzeichen dafür, dass ein Linux-Server gehackt wurde? Gibt es Tools, mit denen ein Prüfungsbericht nach einem festgelegten Zeitplan erstellt und per E-Mail versendet werden kann?
Wenn der Staat unbekannt ist, gibt es wirklich keinen Weg. Aus diesem Grund ist es so wichtig, vertrauenswürdige Installationsquellen zu verwenden und Tools wie Tripwire einzurichten, bevor Sie sie anderen als sich selbst aussetzen.
Du meinst "geknackt". Beim Hacken haben wir in erster Linie Linux bekommen.
Gbarry
Ein Freund von mir, dessen Server bei uns gehostet wurde, bat mich einmal, seinen Server anzusehen, da er etwas Seltsames zu sein schien. Sobald ich die Protokolle sah, wusste ich, dass etwas los war. Sie haben versucht, ihre Spuren zu verwischen, und ich glaube, sie haben ein Root-Kit installiert, aber ein bisschen durcheinander gebracht. Um es kurz zu machen: Wir mussten den gesamten Server von Grund auf neu erstellen. Es hat die ganze Nacht gedauert und dann haben wir einige Sicherheitsüberprüfungs-Tools konfiguriert.
Matt
@Matt Willst du uns sagen, welche Tools? Immer noch dasselbe heute?
Rodrigo
Antworten:
34
Halten Sie eine unberührte Kopie von kritischen Systemdateien (wie ls, ps, netstat md5sum) irgendwo, mit einem md5sum von ihnen, und vergleichen sie mit den Live - Versionen regelmäßig. Rootkits ändern diese Dateien ausnahmslos. Verwenden Sie diese Kopien, wenn Sie vermuten, dass die Originale manipuliert wurden.
aide oder tripwire teilen Ihnen alle Dateien mit, die geändert wurden - vorausgesetzt, ihre Datenbanken wurden nicht manipuliert.
Konfigurieren Sie syslog so, dass Ihre Protokolldateien an einen Remote-Protokollserver gesendet werden, auf dem sie nicht von einem Eindringling manipuliert werden können. Beobachten Sie diese Remote-Protokolldateien auf verdächtige Aktivitäten
Lesen Sie Ihre Protokolle regelmäßig - verwenden Sie Logwatch oder Logcheck , um die kritischen Informationen zu synthetisieren.
Kennen Sie Ihre Server . Wissen, welche Arten von Aktivitäten und Protokollen normal sind.
md5 wurde stark geschwächt, wenn es nicht rausgeworfen wird. Möglicherweise möchten Sie zu sha512 wechseln.
Broam
12
Das tust du nicht.
Ich weiß, ich weiß - aber es ist wirklich die paranoide, traurige Wahrheit;) Es gibt natürlich viele Hinweise, aber wenn das System speziell ausgerichtet wäre, könnte es unmöglich sein, es zu sagen. Es ist gut zu verstehen, dass nichts jemals absolut sicher ist. Aber wir müssen sicherer arbeiten, deshalb werde ich stattdessen auf alle anderen Antworten verweisen;)
Wenn Ihr System kompromittiert wurde, kann keinem Ihrer Systemwerkzeuge vertraut werden, um die Wahrheit zu enthüllen.
Sie gehen davon aus, dass Ihr Angreifer über einige Fähigkeiten verfügt, in irgendeiner Weise heimlich sein möchte und nicht nur daran interessiert ist, Spam auszusenden und Ihre OC3 einem Botnetz hinzuzufügen. Heutzutage stellen Sie in der Regel fest, dass auf Ihrem Server riesige Mengen an Spam-E-Mails eingehen, in der Regel auf einem überlasteten System, das nicht überlastet sein sollte. Die meisten "Hacker" sind heutzutage von Geld motiviert.
Ernie
2
Die fortschrittlichsten Angriffswerkzeuge erfordern heutzutage keine Fertigkeiten mehr und sind leicht verfügbar. Einige sind standardmäßig und aufgrund ihres Designs extrem unauffällig. Botnets / Zombies können eine lange Zeit im Leerlauf sein, bevor sie für Schaden verwendet werden, aber Fehler in den Angriffstools können unerwünschte Abstürze und seltsames Verhalten usw. verursachen.
Oskar Duveborn
11
Tripwire ist ein häufig verwendetes Tool - es benachrichtigt Sie, wenn sich Systemdateien geändert haben, obwohl Sie es natürlich vorher installieren müssen. Andernfalls sind Elemente wie neue Benutzerkonten, die Sie nicht kennen, seltsame Prozesse und Dateien, die Sie nicht erkennen, oder eine erhöhte Bandbreitennutzung ohne ersichtlichen Grund die üblichen Anzeichen.
Andere Überwachungssysteme wie Zabbix können so konfiguriert werden, dass Sie benachrichtigt werden, wenn Dateien wie / etc / passwd geändert werden.
Einige Dinge, die mich in der Vergangenheit gewarnt haben:
Hohe Last auf einem System, das im Leerlauf sein sollte
Seltsame Fehler, z. von Standard-Dienstprogrammen wie ls(dies kann mit defekten Root-Kits passieren)
Versteckte Verzeichnisse in /oder /var/(die meisten Script-Kiddies sind zu dumm oder zu faul, um ihre Spuren zu verwischen)
netstat Zeigt offene Ports an, die nicht vorhanden sein sollten
Daemons in der Prozessliste, für die Sie normalerweise verschiedene Varianten verwenden (z. B. bind, aber Sie verwenden immer djbdns)
Außerdem habe ich festgestellt, dass es ein zuverlässiges Zeichen dafür gibt, dass eine Box kompromittiert ist: Wenn Sie ein schlechtes Gefühl in Bezug auf die Sorgfalt (mit Updates usw.) des Administrators haben, von dem Sie ein System geerbt haben, behalten Sie es im Auge!
Es gibt eine Methode, gehackte Server zu überprüfen kill:
Wenn Sie "kill -0 $ PID" ausführen, senden Sie im Wesentlichen ein NOP-Signal, um die Kennung $ PID zu verarbeiten. Wenn der Prozess ausgeführt wird, wird der Befehl kill normal beendet. (FWIW, da Sie ein NOP-Kill-Signal übergeben, passiert mit dem Prozess nichts). Wenn ein Prozess nicht ausgeführt wird, schlägt der Befehl kill fehl (Beendigungsstatus kleiner als Null).
Wenn Ihr Server gehackt wird / ein Rootkit installiert ist, weist es den Kernel zunächst an, die betroffenen Prozesse vor den Prozesstabellen zu verbergen prozesse. Und das bedeutet das
a) Diese Prüfung ist keine umfangreiche Prüfung, da die gut codierten / intelligenten Rootkits sicherstellen, dass der Kernel mit einer "Prozess existiert nicht" -Antwort antwortet, wodurch diese Prüfung überflüssig wird. b) Wenn auf einem gehackten Server ein "fehlerhafter" Prozess ausgeführt wird, wird die PID normalerweise nicht unter / proc angezeigt.
Also , wenn Sie sich hier bis jetzt sind, dann ist das Verfahren zu töten -0 jeden verfügbaren Prozess im System (alles von 1 -> / proc / sys / kernel / pid_max) und sehen , ob es Prozessen, die ausgeführt werden, aber nicht gemeldet in / proc.
Wenn einige Prozesse ausgeführt werden, aber nicht in / proc gemeldet werden, haben Sie wahrscheinlich ein Problem, wie Sie es sehen.
Hier ist ein Bash-Skript, das all das implementiert - https://gist.github.com/1032229 . Speichern Sie das in einer Datei und führen Sie es aus. Wenn Sie einen Prozess finden, der in proc nicht gemeldet wird, sollten Sie einen Anhaltspunkt haben, um sich zu vertiefen.
Das ist wirklich nützlich für meinen Heimserver, wo ich nicht die Zeit habe, das System wie ein produktives Arbeitssystem zu warten. Wie auch immer, könnte ich das in einem professionellen Umfeld verwenden und mir "relativ" sicher sein, was die Ergebnisse angeht? Und damit die Antwort 3 Jahre alt ist: Ist dies heute noch eine gültige Methode, um 2014 auf häufige Infektionen zu prüfen?
Hub
7
Ich werde die hier gegebenen Antworten unterstützen und eine meiner eigenen hinzufügen.
find /etc /var -mtime -2
Auf diese Weise können Sie schnell feststellen, ob sich eine Ihrer Hauptserverdateien in den letzten 2 Tagen geändert hat.
SNORT® ist ein Open-Source-System zur Verhinderung und Erkennung von Netzwerkeinbrüchen, das eine regelgesteuerte Sprache verwendet und die Vorteile signatur-, protokoll- und anomaliebasierter Prüfmethoden kombiniert. Mit Millionen von Downloads ist Snort die weltweit am weitesten verbreitete Intrusion Detection- und Prevention-Technologie und hat sich zum De-facto-Standard für die Branche entwickelt.
Snort liest den Netzwerkverkehr und kann nach Dingen wie "Drive-by-Pen-Tests" suchen, bei denen nur ein vollständiger Metasploit-Scan für Ihre Server ausgeführt wird. Nach meiner Meinung ist es gut, solche Dinge zu wissen.
Verwenden Sie die Protokolle ...
Abhängig von Ihrer Verwendung können Sie es so einrichten, dass Sie wissen, wann sich ein Benutzer anmeldet oder wann sich ein Benutzer von einer ungeraden IP-Adresse anmeldet, wann sich der Root anmeldet oder wann immer jemand versucht, sich anzumelden. Ich habe tatsächlich den Server E-Mail mir jede Protokollmeldung höher als Debug. Ja sogar Beachten. Natürlich filtere ich einige von ihnen, aber wenn ich jeden Morgen 10 E-Mails mit Dingen erhalte, möchte ich das Problem beheben, damit es nicht mehr passiert.
Überwachen Sie Ihre Konfiguration - Ich behalte tatsächlich meine gesamte / etc in Subversion, damit ich Revisionen verfolgen kann.
Führen Sie Scans durch. Tools wie Lynis und Rootkit Hunter können Sie vor möglichen Sicherheitslücken in Ihren Anwendungen warnen . Es gibt Programme, die einen Hash oder Hash-Baum aller Ihrer Bins verwalten und Sie auf Änderungen hinweisen können.
Überwachen Sie Ihren Server - Wie Sie bereits erwähnt haben - Diagramme können Ihnen einen Hinweis geben, wenn etwas ungewöhnlich ist. Ich benutze Cacti , um CPU, Netzwerkverkehr, Speicherplatz, Temperaturen usw. im Auge zu behalten. Wenn etwas seltsam aussieht , ist es seltsam und Sie sollten herausfinden, warum es seltsam ist.
Überprüfen Sie Ihren Bash-Verlauf. Wenn er leer ist und Sie ihn nicht entfernt oder geleert haben, besteht die Möglichkeit, dass jemand Ihren Server kompromittiert hat.
Zuletzt prüfen. Entweder sehen Sie unbekannte IPs oder es sieht sehr leer aus.
Wie in der akzeptierten Antwort angegeben, werden Systemdateien häufig geändert. Überprüfen Sie das Änderungsdatum. Sie manipulieren jedoch häufig das geänderte Datum.
Sie installieren häufig eine andere Version von ssh, die auf einem zufälligen Port ausgeführt wird. Dies ist oft an einigen wirklich seltsamen Orten verborgen. Beachten Sie, dass es normalerweise in etwas anderes als ssh umbenannt wird. Überprüfen Sie daher netstat (funktioniert möglicherweise nicht, da es häufig ersetzt wird) und verwenden Sie iptables, um unbekannte Ports zu blockieren.
In jedem Fall ist dies eine Situation, in der Vorbeugen besser ist als Heilen. Wenn Sie kompromittiert wurden, ist es am besten, einfach zu formatieren und neu zu starten. Es ist fast unmöglich zu bestätigen, dass Sie den Hack erfolgreich bereinigt haben.
Beachten Sie die folgenden Punkte, um eine Gefährdung Ihres Servers zu vermeiden.
Ändern Sie den SSH-Port
Verhindert, dass sich root anmelden kann
Nur bestimmte Benutzer zulassen
Kennwortanmeldung verhindern
Verwenden Sie SSH-Schlüssel, vorzugsweise passwortgeschützte Schlüssel
Wo möglich alle IPs auf die schwarze Liste setzen und die erforderlichen IPs auf die weiße Liste setzen.
Installieren und konfigurieren Sie fail2ban
Verwenden Sie Tripwire, um Einbrüche zu erkennen
Überwachen Sie die Anzahl der mit Nagios oder zabbix angemeldeten Benutzer. Auch wenn Sie jedes Mal benachrichtigt werden, wenn Sie sich anmelden, werden Sie zumindest wissen, wann ein anderer Spieler spielt.
Wenn möglich, lasse deinen Server auf einem VPN und erlaube nur ssh via VPN IP. Sichern Sie Ihren VPN.
Es lohnt sich zu beachten, dass sie, sobald sie sich auf einem Server befinden, Ihren Bash-Verlauf durchsuchen und nach anderen Servern suchen, mit denen Sie über ssh von diesem Server aus verbunden sind. Sie werden dann versuchen, eine Verbindung zu diesen Servern herzustellen. Wenn Sie also aufgrund eines schlechten Passworts brutal gezwungen werden, ist es sehr wahrscheinlich, dass sie eine Verbindung mit dem anderen Server herstellen und diese auch gefährden können.
Es ist eine hässliche Welt da draußen, ich wiederhole, Prävention ist besser als Heilung.
Sie sollten GuardRail ausprobieren. Es kann Ihren Server täglich scannen und Ihnen auf schöne visuelle Weise mitteilen, was sich geändert hat. Es erfordert keinen Agenten und kann über SSH eine Verbindung herstellen, sodass Sie Ihren Computer und Ihre Ressourcen nicht mit einem Agenten auslasten müssen.
Das Beste ist, dass es für bis zu 5 Server kostenlos ist.
Ist dies ein Cloud-Dienst, der sich mit Root-Rechten bei Ihrem Computer anmeldet? Was passiert, wenn der Dienst beeinträchtigt ist?
Hub
Sie müssen ihm keine Wurzel geben. Sie können stattdessen auch einen Agenten verwenden. Dies bedeutet, dass Ihr Computer Abfragen durchführt, anstatt SSH anzurufen. Kennwörter für Dinge wie DB werden immer auf Ihrem Computer gespeichert, nicht auch in der Cloud.
Antworten:
quelle
Das tust du nicht.
Ich weiß, ich weiß - aber es ist wirklich die paranoide, traurige Wahrheit;) Es gibt natürlich viele Hinweise, aber wenn das System speziell ausgerichtet wäre, könnte es unmöglich sein, es zu sagen. Es ist gut zu verstehen, dass nichts jemals absolut sicher ist. Aber wir müssen sicherer arbeiten, deshalb werde ich stattdessen auf alle anderen Antworten verweisen;)
Wenn Ihr System kompromittiert wurde, kann keinem Ihrer Systemwerkzeuge vertraut werden, um die Wahrheit zu enthüllen.
quelle
Tripwire ist ein häufig verwendetes Tool - es benachrichtigt Sie, wenn sich Systemdateien geändert haben, obwohl Sie es natürlich vorher installieren müssen. Andernfalls sind Elemente wie neue Benutzerkonten, die Sie nicht kennen, seltsame Prozesse und Dateien, die Sie nicht erkennen, oder eine erhöhte Bandbreitennutzung ohne ersichtlichen Grund die üblichen Anzeichen.
Andere Überwachungssysteme wie Zabbix können so konfiguriert werden, dass Sie benachrichtigt werden, wenn Dateien wie / etc / passwd geändert werden.
quelle
Einige Dinge, die mich in der Vergangenheit gewarnt haben:
ls
(dies kann mit defekten Root-Kits passieren)/
oder/var/
(die meisten Script-Kiddies sind zu dumm oder zu faul, um ihre Spuren zu verwischen)netstat
Zeigt offene Ports an, die nicht vorhanden sein solltenbind
, aber Sie verwenden immerdjbdns
)Außerdem habe ich festgestellt, dass es ein zuverlässiges Zeichen dafür gibt, dass eine Box kompromittiert ist: Wenn Sie ein schlechtes Gefühl in Bezug auf die Sorgfalt (mit Updates usw.) des Administrators haben, von dem Sie ein System geerbt haben, behalten Sie es im Auge!
quelle
Es gibt eine Methode, gehackte Server zu überprüfen
kill
:Wenn Sie "kill -0 $ PID" ausführen, senden Sie im Wesentlichen ein NOP-Signal, um die Kennung $ PID zu verarbeiten. Wenn der Prozess ausgeführt wird, wird der Befehl kill normal beendet. (FWIW, da Sie ein NOP-Kill-Signal übergeben, passiert mit dem Prozess nichts). Wenn ein Prozess nicht ausgeführt wird, schlägt der Befehl kill fehl (Beendigungsstatus kleiner als Null).
Wenn Ihr Server gehackt wird / ein Rootkit installiert ist, weist es den Kernel zunächst an, die betroffenen Prozesse vor den Prozesstabellen zu verbergen prozesse. Und das bedeutet das
a) Diese Prüfung ist keine umfangreiche Prüfung, da die gut codierten / intelligenten Rootkits sicherstellen, dass der Kernel mit einer "Prozess existiert nicht" -Antwort antwortet, wodurch diese Prüfung überflüssig wird. b) Wenn auf einem gehackten Server ein "fehlerhafter" Prozess ausgeführt wird, wird die PID normalerweise nicht unter / proc angezeigt.
Also , wenn Sie sich hier bis jetzt sind, dann ist das Verfahren zu töten -0 jeden verfügbaren Prozess im System (alles von 1 -> / proc / sys / kernel / pid_max) und sehen , ob es Prozessen, die ausgeführt werden, aber nicht gemeldet in / proc.
Wenn einige Prozesse ausgeführt werden, aber nicht in / proc gemeldet werden, haben Sie wahrscheinlich ein Problem, wie Sie es sehen.
Hier ist ein Bash-Skript, das all das implementiert - https://gist.github.com/1032229 . Speichern Sie das in einer Datei und führen Sie es aus. Wenn Sie einen Prozess finden, der in proc nicht gemeldet wird, sollten Sie einen Anhaltspunkt haben, um sich zu vertiefen.
HTH.
quelle
Ich werde die hier gegebenen Antworten unterstützen und eine meiner eigenen hinzufügen.
Auf diese Weise können Sie schnell feststellen, ob sich eine Ihrer Hauptserverdateien in den letzten 2 Tagen geändert hat.
Dies stammt aus einem Artikel zur Hack-Erkennung. Ermittelt, ob Ihr Server gehackt wurde.
quelle
Von Wie kann ich unerwünschte Einbrüche auf meinen Servern erkennen?
Verwenden Sie ein IDS
Snort liest den Netzwerkverkehr und kann nach Dingen wie "Drive-by-Pen-Tests" suchen, bei denen nur ein vollständiger Metasploit-Scan für Ihre Server ausgeführt wird. Nach meiner Meinung ist es gut, solche Dinge zu wissen.
Verwenden Sie die Protokolle ...
Abhängig von Ihrer Verwendung können Sie es so einrichten, dass Sie wissen, wann sich ein Benutzer anmeldet oder wann sich ein Benutzer von einer ungeraden IP-Adresse anmeldet, wann sich der Root anmeldet oder wann immer jemand versucht, sich anzumelden. Ich habe tatsächlich den Server E-Mail mir jede Protokollmeldung höher als Debug. Ja sogar Beachten. Natürlich filtere ich einige von ihnen, aber wenn ich jeden Morgen 10 E-Mails mit Dingen erhalte, möchte ich das Problem beheben, damit es nicht mehr passiert.
Überwachen Sie Ihre Konfiguration - Ich behalte tatsächlich meine gesamte / etc in Subversion, damit ich Revisionen verfolgen kann.
Führen Sie Scans durch. Tools wie Lynis und Rootkit Hunter können Sie vor möglichen Sicherheitslücken in Ihren Anwendungen warnen . Es gibt Programme, die einen Hash oder Hash-Baum aller Ihrer Bins verwalten und Sie auf Änderungen hinweisen können.
Überwachen Sie Ihren Server - Wie Sie bereits erwähnt haben - Diagramme können Ihnen einen Hinweis geben, wenn etwas ungewöhnlich ist. Ich benutze Cacti , um CPU, Netzwerkverkehr, Speicherplatz, Temperaturen usw. im Auge zu behalten. Wenn etwas seltsam aussieht , ist es seltsam und Sie sollten herausfinden, warum es seltsam ist.
quelle
Ich möchte nur hinzufügen:
Überprüfen Sie Ihren Bash-Verlauf. Wenn er leer ist und Sie ihn nicht entfernt oder geleert haben, besteht die Möglichkeit, dass jemand Ihren Server kompromittiert hat.
Zuletzt prüfen. Entweder sehen Sie unbekannte IPs oder es sieht sehr leer aus.
Wie in der akzeptierten Antwort angegeben, werden Systemdateien häufig geändert. Überprüfen Sie das Änderungsdatum. Sie manipulieren jedoch häufig das geänderte Datum.
Sie installieren häufig eine andere Version von ssh, die auf einem zufälligen Port ausgeführt wird. Dies ist oft an einigen wirklich seltsamen Orten verborgen. Beachten Sie, dass es normalerweise in etwas anderes als ssh umbenannt wird. Überprüfen Sie daher netstat (funktioniert möglicherweise nicht, da es häufig ersetzt wird) und verwenden Sie iptables, um unbekannte Ports zu blockieren.
In jedem Fall ist dies eine Situation, in der Vorbeugen besser ist als Heilen. Wenn Sie kompromittiert wurden, ist es am besten, einfach zu formatieren und neu zu starten. Es ist fast unmöglich zu bestätigen, dass Sie den Hack erfolgreich bereinigt haben.
Beachten Sie die folgenden Punkte, um eine Gefährdung Ihres Servers zu vermeiden.
Es lohnt sich zu beachten, dass sie, sobald sie sich auf einem Server befinden, Ihren Bash-Verlauf durchsuchen und nach anderen Servern suchen, mit denen Sie über ssh von diesem Server aus verbunden sind. Sie werden dann versuchen, eine Verbindung zu diesen Servern herzustellen. Wenn Sie also aufgrund eines schlechten Passworts brutal gezwungen werden, ist es sehr wahrscheinlich, dass sie eine Verbindung mit dem anderen Server herstellen und diese auch gefährden können.
Es ist eine hässliche Welt da draußen, ich wiederhole, Prävention ist besser als Heilung.
quelle
Nachdem ich mich ein bisschen umgesehen habe, gibt es auch das, was ich oben aufgelistet habe: http://www.chkrootkit.org/ und http://www.rootkit.nl/projects/rootkit_hunter.html
quelle
Sie sollten GuardRail ausprobieren. Es kann Ihren Server täglich scannen und Ihnen auf schöne visuelle Weise mitteilen, was sich geändert hat. Es erfordert keinen Agenten und kann über SSH eine Verbindung herstellen, sodass Sie Ihren Computer und Ihre Ressourcen nicht mit einem Agenten auslasten müssen.
Das Beste ist, dass es für bis zu 5 Server kostenlos ist.
Schau es dir hier an:
https://www.scriptrock.com/
quelle