Basierend auf einem Beitrag, den ich vor langer Zeit geschrieben habe, als ich mich noch mit dem Bloggen beschäftigen konnte.
Diese Frage wird immer wieder von den Opfern von Hackern gestellt, die in ihren Webserver eindringen. Die Antworten ändern sich sehr selten, aber die Leute stellen die Frage immer wieder. Ich bin mir nicht sicher warum. Vielleicht mögen die Leute die Antworten, die sie auf der Suche nach Hilfe gesehen haben, einfach nicht oder sie können niemanden finden, dem sie vertrauen, um ihnen Ratschläge zu geben. Oder vielleicht lesen die Leute eine Antwort auf diese Frage und konzentrieren sich zu sehr auf die 5%, warum ihr Fall besonders ist und sich von den Antworten unterscheidet, die sie online finden können, und verpassen die 95% der Frage und Antwort, wenn ihr Fall nahe genug gleich ist als die, die sie online lesen.
Das bringt mich zum ersten wichtigen Informationsnugget. Ich weiß wirklich zu schätzen, dass Sie eine besondere einzigartige Schneeflocke sind. Ich schätze, dass auch Ihre Website ein Spiegelbild von Ihnen und Ihrem Unternehmen oder zumindest Ihrer harten Arbeit im Auftrag eines Arbeitgebers ist. Aber für jemanden, der von außen nach innen schaut, sei es eine Person für Computersicherheit, die sich das Problem ansieht, um Ihnen zu helfen, oder sogar der Angreifer selbst, ist es sehr wahrscheinlich, dass Ihr Problem zu mindestens 95% mit jedem anderen Fall identisch ist, den sie haben jemals angeschaut.
Nimm den Angriff nicht persönlich und nimm nicht die Empfehlungen an, die hier folgen oder die du von anderen Leuten persönlich bekommst. Wenn Sie dies lesen, nachdem Sie Opfer eines Website-Hacks geworden sind, tut es mir wirklich leid, und ich hoffe, Sie können hier etwas Hilfreiches finden, aber dies ist nicht die Zeit, um Ihr Ego in die Quere zu bringen, was Sie brauchen machen.
Sie haben gerade herausgefunden, dass Ihre Server gehackt wurden. Was jetzt?
Keine Panik. Handeln Sie auf keinen Fall in Eile und tun Sie auf keinen Fall so, als ob etwas niemals passiert wäre und handeln Sie überhaupt nicht.
Erstens: Verstehe, dass die Katastrophe bereits passiert ist. Dies ist nicht die Zeit für die Ablehnung; Es ist an der Zeit zu akzeptieren, was passiert ist, realistisch zu sein und Schritte zu unternehmen, um die Folgen der Auswirkungen zu bewältigen.
Einige dieser Schritte werden weh tun, und (es sei denn, Ihre Website enthält eine Kopie meiner Daten) es ist mir wirklich egal, ob Sie alle oder einige dieser Schritte ignorieren, aber dies wird die Dinge am Ende verbessern. Das Medikament mag schrecklich schmecken, aber manchmal muss man das übersehen, wenn das Heilmittel wirklich wirken soll.
Verhindern Sie, dass sich das Problem verschlimmert:
- Als erstes sollten Sie die betroffenen Systeme vom Internet trennen. Unabhängig von den anderen Problemen, die Sie haben, kann der Angriff nur fortgesetzt werden, wenn das System mit dem Internet verbunden bleibt. Ich meine das ganz wörtlich; Lassen Sie jemanden den Server physisch besuchen und ziehen Sie die Netzwerkkabel ab, wenn dies erforderlich ist. Trennen Sie jedoch das Opfer von den Muggern, bevor Sie versuchen, etwas anderes zu tun.
- Ändern Sie alle Ihre Kennwörter für alle Konten auf allen Computern, die sich im selben Netzwerk wie die gefährdeten Systeme befinden. Nicht wirklich. Alle Konten. Alle Computer. Ja, Sie haben Recht, das könnte übertrieben sein. Auf der anderen Seite könnte es nicht. Du weißt es nicht so oder so, oder?
- Überprüfen Sie Ihre anderen Systeme. Achten Sie besonders auf andere mit dem Internet verbundene Dienste und auf solche, die finanzielle oder andere wirtschaftlich sensible Daten enthalten.
- Wenn das System personenbezogene Daten von Personen enthält, geben Sie diese sofort vollständig und offen an alle potenziell Betroffenen weiter. Ich weiß, das ist hart. Ich weiß, das wird weh tun. Ich weiß, dass viele Unternehmen solche Probleme unter den Teppich kehren wollen, aber ich fürchte, Sie müssen sich nur darum kümmern.
Zögern Sie immer noch, diesen letzten Schritt zu tun? Ich verstehe, ich tue. Aber sieh es dir so an:
An einigen Stellen besteht möglicherweise die gesetzliche Verpflichtung, die Behörden und / oder die Opfer dieser Art von Datenschutzverletzung zu informieren. Wie verärgert Ihre Kunden auch sein mögen, wenn Sie sie über ein Problem informieren, sie sind viel verärgerter, wenn Sie es ihnen nicht mitteilen, und sie finden es erst heraus, nachdem jemand Waren im Wert von 8.000 USD mit den von ihnen angegebenen Kreditkartendaten belastet hat von Ihrer Website gestohlen.
Erinnerst du dich, was ich vorher gesagt habe? Das Schlimme ist schon passiert . Die Frage ist nur, wie gut Sie damit umgehen.
Verstehe das Problem vollständig:
- Schalten Sie die betroffenen Systeme NICHT wieder online, bis diese Phase vollständig abgeschlossen ist, es sei denn, Sie möchten die Person sein, deren Beitrag der Wendepunkt für mich war, als ich mich entschied, diesen Artikel zu schreiben. Ich verlinke nicht mit dem Beitrag, damit die Leute billig lachen können. Ich verlinke, um Sie vor den Folgen einer Nichteinhaltung dieses ersten Schritts zu warnen.
- Untersuchen Sie die "angegriffenen" Systeme, um zu verstehen, wie die Angriffe Ihre Sicherheit gefährden konnten. Bemühen Sie sich, herauszufinden, wo die Angriffe "herkommen", damit Sie verstehen, welche Probleme Sie haben und beheben müssen, um Ihr System in Zukunft sicher zu machen.
- Untersuchen Sie die "angegriffenen" Systeme erneut, um zu verstehen, wohin die Angriffe geführt haben, damit Sie verstehen, welche Systeme bei dem Angriff kompromittiert wurden. Stellen Sie sicher, dass Sie alle Hinweise befolgen, die darauf hindeuten, dass gefährdete Systeme zum Sprungbrett für weitere Angriffe auf Ihre Systeme werden könnten.
- Stellen Sie sicher, dass die bei allen Angriffen verwendeten "Gateways" vollständig verstanden sind, damit Sie sie ordnungsgemäß schließen können. (Wenn z. B. Ihre Systeme durch einen SQL-Injection-Angriff kompromittiert wurden, müssen Sie nicht nur die fehlerhafte Codezeile schließen, durch die sie eingebrochen sind, sondern Sie möchten auch Ihren gesamten Code überprüfen, um festzustellen, ob derselbe Fehlertyp vorliegt wurde woanders gemacht).
- Verstehen Sie, dass Angriffe aufgrund von mehr als einem Fehler erfolgreich sein können. Oft gelingt es Angriffen nicht, einen einzigen großen Fehler in einem System zu finden, sondern mehrere (manchmal geringfügige und triviale) Probleme miteinander zu verknüpfen, um ein System zu gefährden. Wenn Sie beispielsweise SQL Injection-Angriffe verwenden, um Befehle an einen Datenbankserver zu senden, müssen Sie feststellen, dass die Website / Anwendung, die Sie angreifen, im Kontext eines Administrators ausgeführt wird, und die Rechte dieses Kontos als Sprungbrett für die Beeinträchtigung anderer Teile von verwenden ein System. Oder wie es Hacker gerne nennen: "Ein weiterer Tag im Büro, an dem man die üblichen Fehler ausnutzt".
Machen Sie einen Plan für die Wiederherstellung und bringen Sie Ihre Website wieder online und bleiben Sie dabei:
Niemand möchte länger offline sein als nötig. Das ist eine gegebene. Wenn diese Website ein Mechanismus ist, der Einnahmen generiert, ist der Druck, sie schnell wieder online zu stellen, sehr groß. Auch wenn das Einzige, was auf dem Spiel steht, der Ruf Ihres Unternehmens ist, erzeugt dies immer noch einen großen Druck, die Dinge schnell wieder in Ordnung zu bringen.
Geben Sie jedoch nicht der Versuchung nach, zu schnell wieder online zu gehen. Bewegen Sie sich stattdessen so schnell wie möglich, um zu verstehen, was das Problem verursacht hat, und um es zu lösen, bevor Sie wieder online gehen. Andernfalls werden Sie mit ziemlicher Sicherheit erneut einem Eingriff zum Opfer fallen. Sich gleich danach wieder hacken zu lassen, sieht nach Nachlässigkeit aus "(mit Entschuldigung an Oscar Wilde).
- Ich gehe davon aus, dass Sie alle Probleme, die zu dem erfolgreichen Eindringen geführt haben, verstanden haben, bevor Sie überhaupt mit diesem Abschnitt beginnen. Ich möchte den Fall nicht überbewerten, aber wenn Sie das nicht zuerst getan haben, müssen Sie es wirklich tun. Es tut uns leid.
- Zahlen Sie niemals Erpressungs- / Schutzgelder. Dies ist das Zeichen eines einfachen Zeichens, und Sie möchten nicht, dass dieser Ausdruck Sie jemals beschreibt.
- Versuchen Sie nicht, dieselben Server ohne vollständigen Neuaufbau wieder online zu stellen. Es sollte weitaus schneller gehen, eine neue Box zu erstellen oder "den Server aus dem Orbit zu entfernen und eine Neuinstallation" auf der alten Hardware durchzuführen, als jede einzelne Ecke des alten Systems zu überprüfen, um sicherzustellen, dass es sauber ist, bevor es zurückgesetzt wird wieder online. Wenn Sie damit nicht einverstanden sind, wissen Sie wahrscheinlich nicht, was es wirklich bedeutet, sicherzustellen, dass ein System vollständig bereinigt ist, oder Ihre Website-Bereitstellungsverfahren sind ein unheiliges Durcheinander. Vermutlich verfügen Sie über Sicherungen und Testbereitstellungen Ihrer Site, die Sie nur zum Erstellen der Live-Site verwenden können, und wenn Sie dies nicht tun, ist es nicht Ihr größtes Problem, gehackt zu werden.
- Seien Sie sehr vorsichtig, wenn Sie Daten wiederverwenden, die zum Zeitpunkt des Hacks "live" auf dem System waren. Ich werde nicht sagen, dass Sie es niemals tun werden, weil Sie mich einfach ignorieren werden, aber ehrlich gesagt müssen Sie die Konsequenzen der Aufbewahrung von Daten berücksichtigen, wenn Sie wissen, dass Sie ihre Integrität nicht garantieren können. Idealerweise sollten Sie dies aus einer Sicherung wiederherstellen, die vor dem Eindringen erstellt wurde. Wenn Sie das nicht können oder wollen, sollten Sie mit diesen Daten sehr vorsichtig sein, da sie verunreinigt sind. Sie sollten sich insbesondere der Konsequenzen für andere bewusst sein, wenn diese Daten Kunden oder Website-Besuchern gehören und nicht direkt Ihnen.
- Überwachen Sie die Systeme sorgfältig. Sie sollten sich dazu entschließen, dies in Zukunft als fortlaufenden Prozess durchzuführen (siehe unten), aber Sie bemühen sich besonders, während des Zeitraums unmittelbar nach der Rückkehr Ihrer Website ins Internet wachsam zu sein. Die Eindringlinge werden mit ziemlicher Sicherheit wiederkommen, und wenn Sie sie bemerken, die versuchen, wieder einzudringen, werden Sie mit Sicherheit schnell feststellen können, ob Sie wirklich alle Löcher, die sie zuvor benutzt haben, und alle Löcher, die sie für sich selbst hergestellt haben, geschlossen haben, und Sie könnten sich nützlich machen Informationen, die Sie an Ihre lokale Strafverfolgungsbehörde weitergeben können.
Das Risiko in Zukunft reduzieren.
Das Erste, was Sie verstehen müssen, ist, dass Sicherheit ein Prozess ist, den Sie über den gesamten Lebenszyklus des Entwerfens, Bereitstellens und Wartens eines mit dem Internet verbundenen Systems anwenden müssen, und nicht etwas, das Sie später wie billig über Ihren Code legen können Farbe. Um richtig sicher zu sein, müssen ein Dienst und eine Anwendung von Anfang an unter Berücksichtigung dieses Aspekts als eines der Hauptziele des Projekts konzipiert werden. Mir ist klar, dass das langweilig ist und Sie alles schon einmal gehört haben und dass ich den Druck, Ihren Beta-Web2.0 (Beta) -Dienst in den Beta-Status im Web zu versetzen, einfach nicht erkenne, aber die Tatsache ist, dass dies so bleibt wiederholt werden, weil es wahr war, als es das erste Mal gesagt wurde und es noch keine Lüge geworden ist.
Sie können das Risiko nicht ausschließen. Sie sollten nicht einmal versuchen, das zu tun. Was Sie jedoch tun sollten, ist zu verstehen, welche Sicherheitsrisiken für Sie wichtig sind und wie Sie sowohl die Auswirkungen des Risikos als auch die Wahrscheinlichkeit, dass das Risiko eintritt , verwalten und reduzieren können.
Welche Maßnahmen können Sie ergreifen, um die Wahrscheinlichkeit eines erfolgreichen Angriffs zu verringern?
Zum Beispiel:
- War der Fehler, der es Leuten ermöglichte, in Ihre Site einzudringen, ein bekannter Fehler im Herstellercode, für den ein Patch verfügbar war? Wenn ja, müssen Sie Ihren Ansatz zum Patchen von Anwendungen auf Ihren mit dem Internet verbundenen Servern überdenken?
- War der Fehler, der es Leuten ermöglichte, in Ihre Site einzudringen, ein unbekannter Fehler im Herstellercode, für den kein Patch verfügbar war? Ich befürworte auf keinen Fall einen Lieferantenwechsel, wenn Sie so etwas befürchten, weil alle ihre Probleme haben und Ihnen in höchstens einem Jahr die Plattformen ausgehen, wenn Sie diesen Ansatz wählen. Wenn ein System Sie jedoch ständig im Stich lässt, sollten Sie entweder auf ein robusteres System migrieren oder zumindest Ihr System neu planen, damit anfällige Komponenten in Watte eingewickelt und so weit wie möglich von feindlichen Augen entfernt bleiben.
- War der Fehler ein von Ihnen entwickelter Fehler im Code (oder ein für Sie arbeitender Auftragnehmer)? Wenn ja, müssen Sie Ihren Ansatz zur Genehmigung von Code für die Bereitstellung auf Ihrer Live-Site überdenken? Könnte der Fehler durch ein verbessertes Testsystem oder durch Änderungen an Ihrem Codierungsstandard behoben worden sein (z. B. ist die Technologie kein Allheilmittel, aber Sie können die Wahrscheinlichkeit eines erfolgreichen SQL-Injection-Angriffs durch Verwendung gut dokumentierter Codierungstechniken verringern ).
- War der Fehler auf ein Problem mit der Bereitstellung des Servers oder der Anwendungssoftware zurückzuführen? Wenn ja, verwenden Sie automatisierte Verfahren, um Server zu erstellen und bereitzustellen, wo dies möglich ist? Dies ist eine große Hilfe bei der Aufrechterhaltung eines konsistenten "Grundzustands" auf allen Servern, bei der Minimierung des Aufwands an benutzerdefinierter Arbeit, die für jeden einzelnen Server ausgeführt werden muss, und somit hoffentlich bei der Minimierung der Möglichkeit, dass ein Fehler gemacht wird. Gleiches gilt für die Code-Bereitstellung. Wenn Sie etwas "Besonderes" für die Bereitstellung der neuesten Version Ihrer Web-App benötigen, versuchen Sie, diese zu automatisieren und sicherzustellen, dass sie immer auf konsistente Weise durchgeführt wird.
- Könnte das Eindringen früher mit einer besseren Überwachung Ihrer Systeme aufgefangen worden sein? Natürlich ist eine 24-Stunden-Überwachung oder ein Bereitschaftssystem für Ihre Mitarbeiter möglicherweise nicht kosteneffektiv, aber es gibt Unternehmen, die Ihre Web-Services für Sie überwachen und Sie im Falle eines Problems benachrichtigen können. Sie könnten sich entscheiden, dass Sie sich das nicht leisten können oder es nicht brauchen, und das ist in Ordnung. Berücksichtigen Sie es einfach.
- Verwenden Sie Werkzeuge wie Tripwire und Nessus, wo dies angebracht ist - aber verwenden Sie sie nicht einfach blind, weil ich es gesagt habe. Nehmen Sie sich die Zeit, um zu lernen, wie Sie einige gute Sicherheitstools verwenden, die für Ihre Umgebung geeignet sind, halten Sie diese Tools auf dem neuesten Stand und verwenden Sie sie regelmäßig.
- Ziehen Sie in Betracht, Sicherheitsexperten einzustellen, um die Sicherheit Ihrer Website regelmäßig zu überprüfen. Auch hier könnten Sie sich entscheiden, dass Sie sich das nicht leisten können oder es nicht brauchen, und das ist in Ordnung ... ziehen Sie es einfach in Betracht.
Welche Maßnahmen können Sie ergreifen, um die Folgen eines erfolgreichen Angriffs zu verringern?
Wenn Sie der Meinung sind, dass das "Risiko" einer Überflutung in der unteren Etage Ihres Hauses hoch ist, aber nicht hoch genug, um einen Umzug zu rechtfertigen, sollten Sie zumindest die unersetzlichen Familienerbstücke nach oben bringen. Richtig?
- Können Sie die Anzahl der Dienste reduzieren, die direkt dem Internet ausgesetzt sind? Können Sie eine Lücke zwischen Ihren internen Diensten und Ihren internetfähigen Diensten aufrechterhalten? Dies stellt sicher, dass selbst wenn Ihre externen Systeme gefährdet sind, die Chancen, dies als Sprungbrett für Angriffe auf Ihre internen Systeme zu verwenden, begrenzt sind.
- Speichern Sie Informationen, die Sie nicht speichern müssen? Speichern Sie solche Informationen "online", wenn sie woanders archiviert werden könnten? Es gibt zwei Punkte zu diesem Teil; Das offensichtliche ist, dass die Leute keine Informationen von Ihnen stehlen können, die Sie nicht haben, und der zweite Punkt ist, dass je weniger Sie speichern, desto weniger Sie warten und programmieren müssen, und daher gibt es weniger Chancen, dass Fehler ins Spiel kommen Ihr Code oder Systemdesign.
- Verwenden Sie für Ihre Web-App die Prinzipien des geringsten Zugriffs? Wenn Benutzer nur aus einer Datenbank lesen müssen, stellen Sie sicher, dass das Konto, mit dem die Web-App diesen Dienst ausführt, nur über Lesezugriff verfügt, keinen Schreibzugriff zulässt und erst recht keinen Zugriff auf Systemebene.
- Wenn Sie mit etwas nicht sehr erfahren sind und es für Ihr Unternehmen nicht von zentraler Bedeutung ist, sollten Sie es auslagern. Mit anderen Worten, wenn Sie eine kleine Website betreiben, auf der über das Schreiben von Desktopanwendungscode gesprochen wird, und beschließen, kleine Desktopanwendungen von der Website aus zu verkaufen, sollten Sie Ihr Kreditkartenbestellsystem an jemanden wie Paypal auslagern.
- Wenn möglich, machen Sie das Üben der Wiederherstellung von gefährdeten Systemen zu einem Teil Ihres Disaster Recovery-Plans. Dies ist wohl nur ein weiteres "Katastrophenszenario", dem Sie begegnen könnten, einfach eines mit einer Reihe von Problemen und Problemen, die sich von dem üblichen "Serverraum in Flammen" unterscheiden. (bearbeiten, per XTZ)
... Und schlussendlich
Ich habe wahrscheinlich jede Menge Dinge ausgelassen, die andere für wichtig halten, aber die obigen Schritte sollten Ihnen zumindest dabei helfen, Dinge zu sortieren, wenn Sie das Pech haben, Hackern zum Opfer zu fallen.
Vor allem: Keine Panik. Denk nach bevor du handelst. Handle fest, sobald du eine Entscheidung getroffen hast, und hinterlasse unten einen Kommentar, wenn du meiner Liste der Schritte etwas hinzuzufügen hast.