Was ist der beste (oder beste) Weg, um eine ASP.NET-Anwendung zu überwachen, um sicherzustellen, dass sie sicher ist und um Eindringlinge schnell zu erkennen? Wie können wir sicher wissen , dass unsere Anwendung im Moment völlig kompromisslos ist?
Wir starten gerade eine ASP.NET 4-Webanwendung mit den auf SQL Server gespeicherten Daten. Der Webserver wird in IIS auf einer Windows Server 2008-Instanz ausgeführt, und der Datenbankserver wird auf SQL Server 2008 auf einer separaten Windows 2008-Instanz ausgeführt.
Wir haben die Sicherheitsempfehlungen von Microsoft überprüft und meine Anwendung ist sehr sicher. Wir haben "Defense in Depth" implementiert und eine Reihe von Angriffsvektoren berücksichtigt.
Wir fühlen uns also "zuversichtlich", haben aber noch keine wirkliche Einsicht in die Sicherheit unseres Systems. Wie können wir sofort wissen, ob jemand eingedrungen ist? Wie können wir wissen, ob ein Paket auf einem unserer Server hinterlegt wurde? Wie können wir wissen, ob ein Datenleck vorliegt?
Was sind einige Konzepte, Tools, Best Practices, etc?
Vielen Dank im Voraus, Brian
Zusätzliche Gedanken 22.04.11
Chris, danke für die sehr hilfreiche persönliche Beobachtungen und Tipps unten.
Was ist ein guter, umfassender Ansatz zur Überwachung der aktuellen Anwendungsaktivität für die Sicherheit? Abgesehen von der ständigen Wachsamkeit bei der Anwendung von Best Practices, Patches usw. möchte ich genau wissen, was gerade in meinem System vor sich geht. Ich möchte in der Lage sein, seine Aktivitäten so zu beobachten und zu analysieren, dass mir klar wird, welcher Verkehr verdächtig ist und welcher nicht. Schließlich möchte ich, dass diese Informationen absolut genau und leicht verdaulich sind.
Wie kommen wir dem nahe? Wäre es nicht eine gute Lösung, zusätzlich zu den Paketen auf dem Draht Logins, Datenbankaktivitäten, ASP.NET-Aktivitäten usw. zu überwachen? Was sind einige Beispiele dafür, wie man eine starke Sicherheitslage einnimmt?
Brian
Ich habe es noch nicht ausprobiert, aber Lenny Zeltser hat mich zu OSSEC gelenkt, einem hostbasierten Einbruchmeldesystem, das kontinuierlich überwacht Der gesamte Server erkennt verdächtige Aktivitäten. Das sieht genau so aus, wie ich es will!
Ich werde weitere Informationen hinzufügen, sobald ich die Chance habe, es vollständig zu testen.
OSSEC kann bei Ссылка
gefunden werdenIch kann einiges sagen - aber ich freue mich, mehr Ideen zu hören.
Wie können wir sofort wissen, ob jemand eingedrungen ist?
Das ist nicht so einfach und meiner Meinung nach ist es eine Idee, einige Fallen ** in Ihrem Backoffice zu machen, zusammen mit Monitor für doppelte Logins von verschiedenen ips .
Eine Trap kann sein, was Sie sich vorstellen können, zum Beispiel eine nicht reelle Seite, die "create new administrator" oder "administrator password" im Backoffice sagt und da kann jeder reinkommen und versuchen einen neuen Administrator zu machen ist sicher ein Penetrator - natürlich muss diese Falle nur bei dir bekannt sein, sonst hat das keine Bedeutung.
Um mehr Sicherheit zu gewährleisten, müssen alle Administratoren Änderungen an einem zweiten Passwort vornehmen. Wenn jemand versucht, eine echte Änderung am Administratorkonto vorzunehmen oder einen neuen Administrator hinzuzufügen und dieses zweite Passwort nicht erfolgreich ist, muss dies als a gelten Penetrator.
Möglichkeit, eine ASP.NET-Anwendung zu überwachen
Ich denke, dass jedes Tool, das die Seiten für einige Textänderungen überwacht, dabei helfen kann. Zum Beispiel kann dieser Netzwerkmonitor für bestimmte Texte auf Ihrer Seite überwachen und Sie benachrichtigen oder einige Aktionen ausführen, wenn dieser Text nicht gefunden wird. das bedeutet, dass jemand die Seite ändert.
Sie können also einen speziellen Hiden-Text hinzufügen, und wenn Sie nicht gefunden haben, können Sie sicher sein, dass jemand den Kern Ihrer Seite ändert und wahrscheinlich Änderungsdateien ist.
Wie können wir wissen, ob ein Paket irgendeiner Art auf einem unserer Server hinterlegt wurde?
Dies kann eine aspx-Seite sein, die auf Ihrem Server geladen ist und sich wie ein Dateibrowser verhält. Aus diesem Grund schlage ich vor, den Verzeichnissen, die zum Hochladen von Daten verwendet wurden, web.config-Dateien hinzuzufügen, und in dieser web.config-Datei lassen Sie nichts laufen.
%Vor%Der Begriff, nach dem Sie suchen, ist Intrusion Detection System (IDS). Es gibt einen verwandten Begriff namens Intrusion Prevention System (IPS).
IDS überwacht den Datenverkehr, der auf IP-Ebene in Ihre Server gelangt, und sendet Warnungen basierend auf einer ausgefeilten Analyse des Datenverkehrs.
IPS sind die nächste Generation von IDS, die tatsächlich versuchen, bestimmte Aktivitäten zu blockieren.
Es gibt viele kommerzielle und Open-Source-Systeme, einschließlich Snort , SourceFire , Endace und andere .
Kurz gesagt, sollten Sie sich überlegen, eines dieser Systeme zu Ihrem Mix hinzuzufügen, um eine Echtzeitüberwachung zu ermöglichen und potenziell gefährliche Aktivitäten zu blockieren.
Ich wollte hier ein bisschen mehr Informationen hinzufügen, da der Kommentarbereich nur ein bisschen klein ist.
Die wichtigste Sache, die Sie verstehen müssen, sind die Arten von Angriffen, die Sie sehen werden. Diese reichen von relativ einfachen automatisierten Skripten bis hin zu hochentwickelten zielgerichteten Angriffen. Sie treffen auch alles, was sie von der Website selbst sehen können, zu IIS, .Net, Mailserver, SQL (falls verfügbar), bis hinunter zu Ihrer Firewall und anderen exponierten Maschinen / Diensten. Ein ganzheitlicher Ansatz ist die einzige Möglichkeit, wirklich zu beobachten, was vor sich geht.
Im Allgemeinen wird eine neue Website / Firma mit den automatisierten Skripts innerhalb weniger Minuten (ich würde sagen höchstens 30) live gehen. Welches ist der Hauptgrund, warum Neuinstallationen von MS Windows das Netzwerk während der Installation stark blockiert halten. Verdammt, ich habe Maschinen gesehen, die innerhalb von 30 Sekunden nach dem ersten Einschalten genagelt wurden.
Der Ansatz, den Hacker / Würmer verfolgen, besteht darin, ständig große Bereiche von IP-Adressen zu scannen, gefolgt von maschinellen Fingerabdrücken für diejenigen, die darauf reagieren. Basierend auf dem Profil senden sie bestimmte Arten von Angriffen auf Ihre Art und Weise. In einigen Fällen wird der Profiling-Schritt übersprungen und sie greifen bestimmte Ports unabhängig von der Antwort an. Port 1443 (SQL) ist üblich.
Obwohl es sich um die am weitesten verbreitete Form des Angriffs handelt, sind die automatisierten bei weitem am einfachsten zu handhaben. Das Herunterfahren nicht verwendeter Ports, das Ausschalten von ICMP (Ping Response) und das Vorhandensein einer anständigen Firewall werden die meisten Scanner fernhalten.
Stellen Sie bei Skripten sicher, dass Sie keine häufig installierten Pakete wie PhpMyAdmin, die Web-Admin-Tools von IIS oder Remote Desktop außerhalb Ihrer Firewall veröffentlichen. Befreie auch alle Accounts mit den Namen "admin", "administrator", "guest", "sa", "dbo" usw. Stelle sicher, dass deine Passwörter NICHT Sameones heißen dürfen und definitiv NICHT die Standard-Accounts sind mit einem Produkt geliefert.
Achten Sie darauf, dass Ihr Datenbankserver NICHT direkt außerhalb der Firewall erreichbar ist. Wenn Sie aus irgendeinem Grund einen direkten Zugriff haben müssen, ändern Sie zumindest den Port #, der auf die Verschlüsselung reagiert und diese durchsetzt.
Sobald all dies ordnungsgemäß durchgeführt und gesichert wurde, sollten die einzigen Dienste, die verfügbar sind, die Web-Ports sein (Port 80/443). Die Elemente, die weiterhin ausgenutzt werden können, sind Fehler in IIS, .Net oder Ihrer Webanwendung.
Für IIS und .net MÜSSEN Sie die Windows-Updates von MS installieren, sobald sie veröffentlicht wurden. MS war extrem gut daran, Qualitätsupdates für Windows, IIS und .Net zu pushen. Darüber hinaus besteht eine große Mehrheit der Updates darin, dass Sicherheitslücken bereits in der freien Natur ausgenutzt werden. Unsere Server wurden so eingestellt, dass sie Updates automatisch installieren, sobald sie verfügbar sind, und wir haben nie darauf gebrannt (zumindest zurückgeholt, als Server 2003 veröffentlicht wurde).
Außerdem müssen Sie immer auf dem neuesten Stand der Firewall bleiben. Es war noch nicht so lange her, dass eine der Firewalls von Cisco einen Fehler hatte, der sie überfordern konnte. Leider ließ es den gesamten Verkehr passieren, als dies passierte. Obwohl es ziemlich schnell behoben wurde, wurden die Leute noch über ein Jahr später gehämmert, weil Admins nicht mit den IOS-Patches mithalten konnten. Das gleiche Problem mit Windows-Updates. Viele Leute wurden gehackt, nur weil sie keine Updates installiert haben, die das verhindert hätten.
Die gezielteren Angriffe sind etwas schwieriger zu handhaben. Eine ziemlich große Anzahl von Hackern geht nach benutzerdefinierten Webanwendungen vor. Dinge wie Post, um uns zu kontaktieren und Anmeldeformulare.Die Posts enthalten möglicherweise JavaScript, das nach der Anzeige durch einen Administrator dazu führen kann, dass Anmeldeinformationen übertragen werden, oder dass auf den Computern der Empfänger Keylogger oder Trojaner installiert werden.
Das Problem hier ist, dass Sie kompromittiert werden könnten, ohne es überhaupt zu wissen. Zu den Schutzmaßnahmen gehört, dass HTML und JavaScript nicht über Ihre Website gesendet werden können. Sie haben stabile (und ständig aktualisierte) Spam- und Viren-Checks auf dem Mail-Server usw. Im Grunde genommen müssen Sie jeden möglichen Weg untersuchen, wie eine externe Entität Ihnen etwas schicken und etwas dagegen tun könnte. Viele Fortune 500-Unternehmen werden immer wieder mit solchen Dingen konfrontiert ... Google eingeschlossen.
Ich hoffe, das obige hilft jemandem. Wenn ja, und es führt zu einer sichereren Umgebung, dann werde ich ein fröhlicher Typ sein. Leider überwachen die meisten Unternehmen den Datenverkehr nicht, so dass sie keine Ahnung haben, wie viel Zeit ihre Maschinen damit verbringen, diesen Müll abzuwehren.
Tags und Links sql-server asp.net iis security monitoring