Best practices für die Aufbewahrung der web-server-Daten geschützt
Können sagen, ich führe ein medizinische Einrichtung und wollen eine website, wo meine Benutzer/Patienten können lookup-Ihre privaten Aufzeichnungen. Was wäre die beste Lösung gegen die meisten-gemeinsame Angriffe?
Selbst wenn ich einen privaten server gekauft irgendwo, und verlassen sich auf Ihr monitoring-services gibt es eine gute chance, jemand findet eine Sicherheitslücke und stehlen meine Daten. Ende des mein Geschäft.
Was sind die besten Methoden für eine solche Architektur?
- diese übermäßig Breite. niemand kann erklären, alle web-Sicherheit, um Sie in eine Antwort. es gibt mehrere Ebenen, die in einer sicheren Webseite / Datenbank / etc.
- Ich Frage mich, warum diese nicht geschlossen wurde und überlebt hat, "zu breit" - flags.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst müssen Sie identifizieren die Angriffe, die Sie wollen, um zu versuchen und schützen gegen, und dann Adresse jedes von Ihnen einzeln. Da Sie erwähnen, "die meisten-gemeinsame Angriffe", wir werden dort beginnen, hier ist eine kurze Liste für einen gemeinsamen dreistufigen service (client-web-datastore):
Einmal ein Leck oder eine Verletzung passiert, dies sind einige der Fragen, die machen es einfacher für den Angreifer, und so sollten Sie auch behandelt werden:
Jetzt betrachten wir Allgemeine Schutzmaßnahmen:
1-3 (Eingaben, SQL-Injection, XSS) viel mit schlechten Eingaben. Also alle Eingänge von einem client werden desinfiziert, und (Angriff-fokussiert) die Prüfung muss durchgeführt werden, um sicherzustellen, der code funktioniert einwandfrei.
4 (Raten) Automatisierte tools verwendet werden, um zu versuchen und erraten, Benutzer Passwort, oder wenn Sie den Daten, die bereits, versuchen Sie, Sie zu zwingen, die Schlüssel oder hash. Schadensbegrenzende Maßnahmen umfassen die richtige Auswahl des Algorithmus für die Verschlüsselung oder hash. Die Erhöhung der bit-Größe des Schlüssels. Für die Durchsetzung von Richtlinien auf Passwort/Schlüssel Komplexität. Mit Salze. Die Begrenzung der Anzahl der versuche pro Sekunde. etc.
5 (Leckagen) Wenn die Daten verschlüsselt sind vor Ort, und die admins/Mitarbeiter/Hausmeister nicht die Tasten um die Daten zu entschlüsseln, dann lecken die Informationen nur von begrenztem Wert (vor allem, wenn #4 ist korrekt gehandhabt wird). Sie können auch Beschränkungen auf, wer und wie die Daten zugegriffen werden kann (die NSA gerade gelernt, eine wertvolle Lektion, die hier und erlassen Richtlinien, um sicherzustellen, dass zwei Menschen müssen anwesend sein, um Zugriff auf private Daten). Richtigen Journal und Protokollierung von Zugriffsversuchen ist auch wichtig.
6 (Social Engineering) Angreifer werden versuchen, rufen Sie Ihre support-desk, die Identität eines Clients anzunehmen und entweder Anfrage, die Zugang zu vertraulichen Informationen haben oder die support-desk-Daten ändern (Passwort, persönliche Daten, etc). Sie werden oft miteinander verkettet mehrere support-Anrufe, bis die haben Sie alle Informationen, die benötigt werden, um die Kontrolle über ein Konto. Unterstützung geschult werden, und beschränkt in dem, was Informationen, die Sie geben werden, als auch, was Daten, die Sie Bearbeiten können.
7 (Man-in-the-middle) Dies ist, wo ein Angreifer versuchen wird, injizieren sich in den Fluss der Kommunikation, am häufigsten durch die Verwendung von rootkits laufen auf der client-Maschinen oder gefälschten access-points (WLAN zum Beispiel). Draht - /Protokoll-basierte Verschlüsselung (z.B. SSL) offensichtlich ist die erste Ebene des Schutzes. Aber Varianten (wie z.B. man-in-the-browser) nicht entschärft werden, denn Sie werden sehen, die Daten nach dem SSL-Pakete entschlüsselt wurden. Im Allgemeinen, clients können nicht vertraut werden, da die Plattformen selbst sind unsicher. Werden die Nutzer mit dedizierten/isoliert Maschinen ist eine gute Praxis. Begrenzen Sie die Menge der Zeit, die Schlüssel und entschlüsselt die Daten werden im Speicher gespeichert, oder anderen zugänglichen stellen.
8-9 (CSRF und Wiedergabe) Ähnlich wie man-in-the-middle, diese Angriffe versuchen zu duplizieren (z.B. "aufnehmen") werden die Anmeldeinformationen eines Benutzers, und/oder Transaktionen und wiederverwenden. Die Authentifizierung auf dem client Herkunft, die Begrenzung des Fensters, wenn die Anmeldeinformationen gültig sind, erfordern die Validierung der Transaktion (über einen separaten Kanal wie E-Mail, Telefon, SMS, etc) alle helfen, diese zu reduzieren-Attacken.
Korrekte Verschlüsselung - /hashing - /Salzen ist wahrscheinlich die erste Sache, die Firmen versauen. Vorausgesetzt, alle anderen Verteidigung fallen (und wie Sie sagte, Sie vermutlich wird), ist dies Ihre Letzte Hoffnung. Hier investieren und sicherzustellen, dass diese ordnungsgemäß erfolgt ist. Sicherzustellen, dass die einzelnen Benutzer Datensätze sind verschlüsselt mit unterschiedlichen Schlüsseln (nicht ein master-Schlüssel). Nachdem der client die Verschlüsselung/Entschlüsselung können Sie lösen eine Menge von Fragen der Sicherheit wie der server weiß nie, den Schlüssel (also niemand klauen kann). Auf der anderen Seite, wenn der Kunde verliert den Schlüssel, dann verlieren Sie Ihre Daten als gut. Also ein trade-off vorgenommen werden müssen, die es gibt.
Investieren Sie in die Prüfung/Angriff auf Ihre Lösung. Der Ingenieur implementiert, dass eine website/Datenbank ist oft nicht ausgestattet ist, denken Sie an all die möglichen Angriffsszenarien.
Ihre Frage ist Was sind die besten Methoden für eine solche Architektur?
Ich mag diesen Artikel von Microsoft
Security Best Practices to Protect Internet Facing Web Servers
, hat der 11 Revisionen. Zugegeben, einige der es ist Microsoft-Plattform-spezifische, viele der Konzepte, die Sie anwenden können, um eine Plattform-unabhängige Lösung.Referenz: http://social.technet.microsoft.com/wiki/contents/articles/13974.security-best-practices-to-protect-internet-facing-web-servers.aspx
Während josh poley's und Bala Subramanyam's sind gute Antworten, ich möchte hinzufügen, dass, , wenn der zentrale Wert Ihres Unternehmens, ist die Sicherheit sollten Sie:
Hacker und Entwickler wird Ihr wichtigstes gut, und Sie sollten wissen, dass. In der Tat können wir eine Liste der gemeinsamen Sicherheits-Praktiken, die hier, aber die Anwendung unserer Vorschläge, die Sie nicht machen Sie Ihr system wirklich sicher ist, einfach nur witzig zu hacken.
Wenn Sicherheitsfragen, große Talente, Leidenschaft und Kompetenz sind Ihr einziger Schutz.
Dies ist, was ich denke:
Alle Datensätze Speicher in meinem computer zu Hause (offline) verschlüsselt, mit meinem persönlichen Schlüssel. In diesen computer gibt es die Patientenakten und einem privaten und einem öffentlichen Schlüssel für jeden Benutzer. Diese computer-uploads, neue Daten, so wie Sie ist, encrypter auf den webserver.
Den webserver enthält nur verschlüsselte Daten.
Ich liefere die öffentlichen Schlüssel der Benutzer. Sei es per E-Mail geschickt, von irgendwo sonst, oder auch per snail-mail.
Webserver entschlüsselt die Daten bei jedem request. Weil die Nutzer Passwort ist der öffentliche Schlüssel, Beschreibung auf den server kann nur geschehen, solange es eine aktive Sitzung.
Weil es asymmetrische Schlüssel im Spiel, ich kann sogar neue verschlüsselte Daten auf dem webserver (user input) und später Holen Sie es an meinem offline-Rechner.
Nachteil: Anfordern eines neuen Passwortes erfordert die offline-computer zum hochladen von re-verschlüsselten Daten, und senden Sie ein neues Passwort irgendwie.
Kopf: Macht der webserver-Sicherheit betrifft weniger relevant.
Ist das die beste Lösung?
Ok werde ich versuchen nur zu bauen ein wenig auf, was Sie bereits vorgeschlagen. Erstens möchten Sie vielleicht, um die Forschung der Technologien, die hinter mega website, es nutzt das vermutlich genau das, was Sie interessiert. On-the-fly JS-basierende Verschlüsselung jedoch noch einige Schwächen. Dass gesagt wird es nicht leicht sein würde, zu implementieren on-the-fly Entschlüsselung der Datensätze, die mit js und html, nicht unmöglich, obwohl. Also ja, ich würde sagen, Sie sind in der Regel das denken in die richtige Richtung.
Egal, Sie hätte zu betrachten, der alle gängigen Angriffstechniken und Gegenmaßnahmen (website-Angriffen, server-Attacken, etc.), aber dieses Thema ist viel zu breit abgedeckt werden, voll und ganz in einer einzigen Antwort. Und unnötig zu sagen, die sind schon sehr gut abgedeckt, in anderen Antworten.
Als für die 'Architektur', wenn Sie wirklich paranoid ist, könnte man auch die Datenbank auf einem separaten server läuft die Datenbank auf einer obskuren port und erlaubt nur eingehende verbindungen vom webserver aus.