it-swarm.com.de

Ich habe nur 4 Stunden im Monat Zeit, um eine Cloud-basierte Anwendung auf Sicherheit zu überprüfen. Wie nutze ich meine Zeit?

Ich wurde beauftragt, eine in Azure bereitgestellte Anwendung zu betreuen. Ich habe 4 Stunden im Monat zugewiesen.

Ich habe im Wesentlichen einen halben Arbeitstag, um diese Anwendung zu sichern/sicher zu halten. Was ist eine effiziente Nutzung meiner Zeit?

Soll ich mich konzentrieren auf:

  • Stellen Sie sicher, dass alle Komponenten auf dem neuesten Stand sind?
  • Überprüfen Sie alle Protokolle, um sicherzustellen, dass nichts zwielichtig aussieht?
  • Versuchen Sie, die Anwendung selbst zu "hacken"?
  • Aus Sicherheitsgründen das System detailliert dokumentieren?
  • Aktuelle Schwachstellen in dieser/verwandten Technologie untersuchen?
  • Sicherstellen, dass Backups usw. ordnungsgemäß funktionieren?
  • Disaster Recovery Zeug?
  • Richtlinien zum Thema "gehackt werden" erstellen?
  • Den Quellcode mit einem Tool prüfen, um nach schlechten Mustern zu suchen?

Oder eine Kombination/etwas anderes?

Ich suche nach erfahrungsbasierten Antworten, vorzugsweise von jemandem, der diese Art der Sicherheitswartung durchführt. Wenn es irgendeine Art von Best Practice/Richtlinie gibt, die auch wirklich helfen würde.

Der Technologie-Stack lautet:

  • SQL Server-Datenbank (Azure SQL)
  • C # Web API
  • Eckiges Frontend

Es gibt mehrere zusätzliche Komponenten, aber ich suche nicht wirklich nach technikspezifischen Antworten, sondern nach einer Strategie, wie ich das angehen soll.

44
user230910

Beginnen Sie mit den Best Practices für die Azure-Top-Sicherheit, damit Sie die Sicherheit Ihrer Azure-Lösung Schritt für Schritt aufrechterhalten und verbessern können:

  1. stimmen Sie zu und aktualisieren Sie Ihr Azure-Abonnement auf Azure Security Center Standard. Auf diese Weise können Sie Sicherheitslücken finden und beheben, Zugriffs- und Anwendungskontrollen anwenden, um böswillige Aktivitäten zu blockieren, Bedrohungen mithilfe von Analysen zu erkennen und umgehend auf Angriffe zu reagieren.
  2. speichern Sie Ihre Schlüssel, Datenbankanmeldeinformationen, API-Schlüssel und Zertifikate in Azure Key Vault. Stellen Sie außerdem sicher, dass Schlüssel und Geheimnisse in der Lösung nicht im Quellcode der Anwendung gespeichert sind.
  3. installieren Sie eine Webanwendungs-Firewall (WAF), die eine Funktion von Application Gateway ist und Ihre Webanwendung vor häufigen Exploits und Schwachstellen schützt.
  4. erzwingen Sie eine Multi-Faktor-Überprüfung für Ihre Administratorkonten.
  5. verschlüsseln Sie Ihre virtuellen Festplattendateien;
  6. verbinden Sie virtuelle Azure-Maschinen und Appliances mit anderen Netzwerkgeräten, indem Sie sie in virtuellen Azure-Netzwerken platzieren.
  7. minderung und Schutz vor DDoS mit DDoS Protection Standard, der zusätzliche Minderungsfunktionen bietet;

Wenn Sie mit dem 1-7 fertig sind, konzentrieren Sie sich auf:

  1. verwalten Ihrer VM-Updates, da Azure Windows-Updates nicht automatisch pusht
  2. sicherstellen, dass Prozesse für wichtige Cloud-Vorgänge wie Patch-Management, Backup, Incident-Management, Änderungsmanagement, Notfallbenutzerzugriff und privilegierter Zugriff eingerichtet werden;
  3. aktivieren Sie die Kennwortverwaltung und verwenden Sie geeignete Sicherheitsrichtlinien, um Missbrauch zu verhindern.
  4. überprüfen Sie Ihr Security Center-Dashboard, um einen Überblick über den Sicherheitsstatus aller Ihrer Azure-Ressourcen zu erhalten. Bei Bedarf können Sie dann die Empfehlungen umsetzen.

Lesen Sie die Microsoft-Dokumentation zu Best Practices für die Azure-Sicherheit .

Dokumentation:

Microsoft Azure Security Fundamentals

Microsoft Azure-Sicherheitsdokumentation

27
Refineo

Wie in den Kommentaren erwähnt, stimme auch ich zu, dass 4 Stunden pro Monat viel zu niedrig sind. Verstehen Sie und was noch wichtiger ist, machen Sie Ihren Stakeholdern klar, dass sie mit 4 Stunden nicht viel erwarten sollten. Wenn man bedenkt, dass sie dir 4 Stunden gegeben haben, sieht es nicht so aus, als ob sie es ernst meinen, diese Anwendung zu sichern.

Basierend auf den Kommentaren, Antworten und meinen eigenen Gedanken werde ich versuchen, etwas zusammenzustellen. So sollten Ihre Optionen meiner Meinung nach in der richtigen Reihenfolge aussehen.

  1. Bitten Sie um mehr Zeit. Machen Sie sie verständlich, wenn sie eine Anwendung in nur 4 Stunden sichern möchten, ist dies praktisch nutzlos.
  2. Stellen Sie eine Agentur ein und verbringen Sie Ihre 4 Stunden damit, ihren Umfang zu definieren, ihre Aktionen zu priorisieren und ihre Ergebnisse zu überprüfen. (@ Nelson)
  3. Wenn Sie dies nicht tun können, würde ich empfehlen, die niedrig hängenden Früchte zu sichern, damit Sie in 4 Stunden mehr Boden abdecken. Folgendes halte ich für wichtig
    • Stellen Sie die Aktualisierung Ihrer externen Dienste ein. (~ 1 Stunde, um die wichtigen Anwendungen für das Update zu finden und einzustellen). Schließen Sie unnötige Ports/Dienste, die Sie nicht nützlich finden.
    • MFA einrichten (~ 10 Minuten) - Da Sie nicht viel Zeit haben, richten Sie Dinge ein, die schnell sind, schützen Sie Sie vor häufigen Angriffen und alarmieren Sie Sie.
    • Überprüfen Sie Ihre Geheimnisse - Stellen Sie sicher, dass sie sicher gespeichert sind, und führen Sie Scanner für Ihren Code aus, um fest codierte Geheimnisse zu finden. (~ 1h)
    • Notfallwiederherstellung - Ich würde empfehlen, einen Teil Ihrer kostbaren 4 Stunden für die Einrichtung von Schutzmaßnahmen aufzuwenden, wenn etwas schief geht, weil dies der Fall ist. Erstellen Sie Backups (2, falls möglich) in verschiedenen Zonen. Ich gehe davon aus, dass die Plattform Ihnen dabei helfen wird, aber es wird noch einige Zeit dauern. Während dieser Zeit können Sie auch einen groben Disaster Recovery-Plan erstellen. (~ 1,5 h)
    • Dokumentieren Sie schließlich mit der verbleibenden Zeit, die Sie noch haben. Dokumentieren Sie, was Sie getan haben, was Sie nicht getan haben und was die nächsten Schritte sein sollten, wenn jemand das nächste Mal 4 Stunden Zeit hat, um die Anwendung weiter zu sichern. (~ übrig geblieben)

Der DoS-Schutz ist gut und erforderlich, aber ich konnte einfach keinen Weg finden, ihn in den oben genannten Plan einzufügen, und ich konnte auch nichts dafür austauschen. Vielleicht sollte das in Ihren nächsten Schritten dokumentiert werden.

Insgesamt ist es eine weit hergeholte Anfrage, etwas in 4 Stunden zu sichern. Aber wenn ich damit beauftragt wäre, würde ich es mit den obigen Schritten tun. Ich bin mir nicht sicher, ob in diesen 4 Stunden Untersuchungen möglich sind, ob das System bereits gehackt ist. Wenn Sie 4 Stunden Zeit zum Sichern haben, können Sie entweder die Anwendung gegen potenzielle Bedrohungen absichern oder nach Angreifern in Ihrem System suchen (benötigt einen anderen Plan). Diese erste Wahl liegt bei Ihnen.

46
Izy-

Dies ist eine sehr außerhalb des linken Feldes liegende Antwort (auch bekannt als wenig mit der tatsächlichen Sicherheit zu tun). Sie können meinen Rat also ignorieren. Diese Frage selbst ist ziemlich meinungsbasiert, daher dachte ich, ich würde eine völlig andere "Art" von Antwort versuchen.

Sie wurden mit der Anwendungssicherheit beauftragt. Das ist eine gute Sache!

Leider hat Ihr Arbeitgeber sehr unrealistische Erwartungen an das, was zur Sicherung eines Antrags erforderlich ist. 4 Stunden sind nicht annähernd genug Zeit, um diesen Job gut zu machen. Dies ist immer noch besser als die meisten Unternehmen (die genau 0 Stunden pro Monat dedizierte Sicherheitszeit zuweisen). Die Realität ist jedoch, dass 4 Stunden eine Kleinigkeit sind. Das machen Sie also:

  1. Laufen Sie mit all den Vorschlägen, die die Leute hier machen
  2. Verbringen Sie viel mehr als 4 Stunden im Monat
  3. Um zu vermeiden, dass Ihr Arbeitgeber unglücklich wird oder Anweisungen direkt missachtet, erledigen Sie die zusätzliche Arbeit in Ihrer Freizeit. Planen Sie, in den nächsten Monaten regelmäßig einen guten Teil der zusätzlichen Stunden zu arbeiten.
  4. In dieser Zeit lernen Sie Dinge wie das Überprüfen von Code auf Sicherheitslücken, das Installieren und Verwenden von SEIM-Systemen, das Installieren und Verwenden von Protokollierungssystemen (häufig wird ELK-Stack verwendet), Intrusion Detection-Systeme, automatisches Scannen von Anwendungen und vieles mehr! (Die vollständige Liste ist wahrscheinlich zu lang. Lernen Sie alles in ein paar Monaten Arbeit in Ihrer Freizeit, aber geben Sie Ihr Bestes!)
  5. Ihr Unternehmen wird am Ende die Vorteile Ihrer freien Arbeit nutzen, was ein bisschen traurig ist, aber ...
  6. Sie sind auf dem besten Weg, sich im Rahmen Ihrer offiziellen Aufgaben zum Sicherheitsexperten auszubilden (wenn Sie eine Berufsbezeichnung wünschen, sind Sie auf dem Weg zum Application Security Engineer), um eine tatsächliche Webanwendung in der Produktion zu sichern verwenden!
  7. Bewerben Sie sich für Ihren nächsten Job als Application Security Engineer. Sie werden wahrscheinlich einen besseren Job finden, der mehr Spaß macht, und Sie werden wahrscheinlich auch besser bezahlt!

Natürlich kann ich keine Garantie dafür geben, wie sich die Dinge entwickeln würden, aber effektiv haben Sie die Erlaubnis erhalten, sich für einen Karrierewechsel auszubilden. Eine Gelegenheit, in Ihre Zukunft zu investieren! Sicherheitsexperten sind noch gefragter als Ingenieure. Ich persönlich würde das also nehmen und damit anfangen. Besonders wenn es zu meinen Gunsten klappen würde, würde ich meinem derzeitigen Arbeitgeber nicht einmal die freie Arbeit gönnen, die ich ihnen aufgrund ihrer Kurzsichtigkeit geben würde.

8
Conor Mancone

Ich würde vorschlagen

  1. Beginnen Sie mit einer Risikobewertung
  2. Stellen Sie die hier angegebenen Listen (sowohl von Ihnen selbst als auch in den Antworten) zu umsetzbaren Elementen zusammen
  3. Gehen Sie mit dem Ergebnis zu Ihren Vorgesetzten zurück und fordern Sie entweder mehr Zeit oder eine Priorisierung durch diese an.
6
Bergi

Ich gehe davon aus, dass die Anwendung extrem klein ist. Sie schreiben Skripte für die Protokolle, um nach fehl am Platz befindlichen Dingen zu suchen (idealerweise wird dies nicht während der 4-stündigen Arbeitszeit durchgeführt). Für eine größere Anwendung sollte bereits eine Notfallwiederherstellung vorhanden sein (überprüfen) wenn der Antrag einen solchen Aufwand erfordert.).

  1. Die Dokumentation ist von entscheidender Bedeutung, da Sie wissen sollten, was verwendet wird und wer sie verwendet und wie oft sie verwendet wird. Dies hilft bei der Entwicklung des Skripts.

  2. Skripte werden benötigt, um die Protokolle eines Monats zu komprimieren. Wählen Sie sie daher sorgfältig aus.

  3. Überprüfen Sie die Sicherungen.

  4. Überprüfen Sie immer die verwendeten Technologien und ob POC oder Exploits vorhanden sind. Springen Sie nicht hinein und versuchen Sie selbst einen Exploit, Sie haben nur 4 Stunden Zeit.

  5. Fordern Sie zusätzliche Unterstützung an, wenn die Anwendung von entscheidender Bedeutung ist.

Im Idealfall sollten nur die Dokumentation und die Skripterstellung einige Zeit in Anspruch nehmen. Die Pause sollte ziemlich einfach sein. Dies ist nicht das Beste, um den Wert des Projekts zu bestimmen und zu entscheiden, ob 4 Stunden ausreichen.

Wenn Sie Ihr Ziel verstehen, können Sie es besser schützen.

Ich bin sicher, es gibt eine bessere Antwort, hoffentlich werden sie sie liefern.

3
S S

OP, es sieht so aus, als wären Sie hauptsächlich Entwickler und schauen sich Ihre Beiträge an. Was kann ein Entwickler tun, um die Sicherheit zu erhöhen?

Im ersten Monat:

  • 2 Stunden: Versuchen Sie, eine Version mit einigen externen Abhängigkeiten/Komponenten/Bibliotheken zu versehen, und versuchen Sie, die App neu zu erstellen. Dokumentieren Sie die Inkompatibilitäten, wenn Sie fehlschlagen.
  • 2 Stunden: Tun Sie alles, was Sie brauchen, um Ihre eigenen Änderungen durch CI/CD, durch Testen, durch den Zweig master und in die Produktion zu übertragen. Versuchen Sie, andere Entwicklungen zu huckepack zu nehmen, wenn es welche gibt, aber achten Sie in diesem Fall besonders darauf, Spuren zu hinterlassen, die Sie tatsächlich nützlich gemacht haben (z. B. einige PRs verfassen).

Wiederholen Sie diesen Vorgang jeden Monat, aber passen Sie die Trennlinie zwischen den beiden an. (Es besteht die Möglichkeit, dass die endgültige Aufteilung eher 10 Minuten gegenüber 3 Stunden 50 Minuten beträgt.)

Auf diese Weise beheben Sie den schlimmsten Vektor - dass eine der beliebtesten Komponenten/Bibliotheken eine Monate alte veröffentlichte Sicherheitsanfälligkeit (CVE) aufweist. Schwärme von Bots scannen das gesamte Internet, um jede anfällige Bereitstellung zu überprüfen. Wenn Sie nur die Komponenten von Drittanbietern aktualisieren, selbst wenn Sie nur (informierte?) Vermutungen anstellen, besteht eine gute Chance, dass Sie niemals Opfer werden und niemals brauchen, um mit den wirklich unangenehmen Situationen umzugehen Situationen.

Das ist für Entwickler ziemlich trivial, aber in den meisten Unternehmen vermeiden Entwickler eine solche uninteressante Wartung. Dies wird zu einem großen Problem für die typischen Sicherheitsabteilungen (da sie Anwendungen nicht neu kompilieren). Die großen Anstrengungen, "Protokolle zu analysieren" oder "WAFs zu implementieren" oder "Schwachstellen-Scans durchzuführen", dienen hauptsächlich dazu, diese Lücke aus allen verbleibenden möglichen Blickwinkeln zu schließen.


Aus Ihrer Frage geht hervor, dass Sie sich fragen, wie Sie Ihr Lernen konzentrieren sollen . Ich möchte diese Annahme hier und jetzt in Frage stellen. Wer Ihnen 4 Stunden pro Monat zugeteilt hat, hat bereits seine eigene Bewerbung davon abgeschnitten, von Ihrer Selbstbildung zu profitieren. Unverantwortlich von ihnen! Um etwas zu lernen, das diesem Projekt gewidmet ist, implementieren Sie es, lernen Sie dann Ihre Fehler kennen und wiederholen Sie ... Dies kann nicht jeden Monat in 4-Stunden-Abschnitten durchgeführt werden. Repariere das nicht, denn es war nicht deine Entscheidung! Machen Sie in der Zeit dieses Projekts Dinge, die Sie bereits gut kennen.

Das ist ein Anfang. Was Sie in Ihrer Freizeit lernen und umsetzen möchten, ist Ihre Präferenz und Ihr eigenes Geschäft. Ich denke, es ist zu weit gefasst für diese Site (da Sie möglicherweise entscheiden, dass Sie nicht an Sicherheit interessiert sind, was völlig in Ordnung ist), aber andere haben Ihnen trotzdem jede Menge Hinweise gegeben. Suchen Sie auch bei anderen Projekten nach nützlichen Dingen. Einige der ersteren oder letzteren passen in diese 4 Stunden und tragen dazu bei, den Stand des Projekts zu verbessern.

3
kubanczyk

Wie andere bereits erwähnt haben, sind 4 Stunden viel zu wenig Aufwand, aber ich werde einige Empfehlungen geben, falls Sie sie nützlich finden.

  • Führen Sie einen Schwachstellenscanner wie Qualys oder ähnliches aus. Dadurch werden eine Reihe nützlicher App-Schwachstellen wie XSS, SQL Injection, CSRF und ähnliches behoben.
  • Führen Sie ein Codeüberprüfungstool aus, um offensichtliche Fehler zu identifizieren (dh Benutzereingaben nicht ordnungsgemäß zu umgehen, bevor Sie sie an die Datenbank senden).
  • Installieren Sie eine gute interne (Host-basierte) und externe (Edge- oder Cloud-basierte) WAF, die vor OWASP-Bedrohungen und mehr schützt. Mehrere Cloud-basierte WAFs schützen auch vor DDoS und einigen Brute-Force-Angriffen.
  • Isolieren Sie Ihre Infrastruktur vertrauenswürdig in VLAN-Zonen und stellen Sie einen minimalen Datenfluss zwischen ihnen sicher (z. B. Edge, Präsentation, Geschäftslogik, Daten).
  • Jemand anderes hat es bereits erwähnt, ist aber sehr wichtig: Stellen Sie sicher, dass Sie privilegierte Anmeldeinformationen (API-Schlüssel, Datenbank-Creds usw.) getrennt vom Quellcode speichern.
  • Härten Sie die gesamte Infrastruktur.
  • Es kann einige Zeit dauern, aber ich würde empfehlen, dass Sie eine Heatmap oder eine Balanced Scorecard mit Sicherheitsrisiken erstellen und sicherstellen, dass diese für Ihre älteren Stakeholder sichtbar sind. Gute Sicherheitspraktiken können das Risiko verringern, aber keine ist eine Silberkugel für sich.
3
ChrisFNZ

Von einem Systemadministrator, der solche Dinge tun musste, würde ich empfehlen, nur ein dev VM, das Sie mit prod austauschen können) zu erstellen.

  1. Sichern Sie Ihren Server.
  2. Trennen Sie Ihre Datenbanken auf ihre eigenen Server. Stellen Sie sicher, dass sie nur mit EINER IP-Adresse kommunizieren können, dem Produktionsserver/-dienst, der sie benötigt. (Einmalige Änderung, sehr wichtig.)
  3. Klonen Sie den Hauptserver und geben Sie dem neuen eine andere IP-Adresse.
  4. Nehmen Sie alle erforderlichen Änderungen, Aktualisierungen, Überprüfungen und Überprüfungen vor.
  5. Wenn das 4-Stunden-Fenster verfügbar ist, schalten Sie die Dienste auf der Hauptleitung aus.
  6. Datenbanken sichern. KRITISCHER SCHRITT.
  7. Übertragen Sie alle lokalen Änderungen von main auf geklont.
  8. Stellen Sie sicher, dass alles gut aussieht und ordnungsgemäß funktioniert.
  9. Tauschen Sie die IP-Adressen gegen main und geklont aus.
  10. Geklont ist jetzt main.
  11. Machen Sie eine weitere Sicherung von allem. (Ja, mach noch einen.)
  12. Rufen Sie die Dienste auf main auf.
  13. Lassen Sie das andere System als Backup in Ruhe, falls etwas passiert.
1
Blerg

Sie erwähnen die Risiken nicht: Speichert es persönliche Daten usw. Wenn es sich jedoch um eine komplexe Anwendung handelt, ist ein Fuzz-Test ein recht zeiteffizienter Ansatz: Extrahieren Sie einige gültige Anforderungen aus den Protokollen und mutieren Sie sie mit der Art von Metazeichen, die sich in einem Injektionsangriff befinden könnten, und melden jedes Mal eine Sicherheitsanfälligkeit, wenn Sie einen Fehler 500 erhalten.

Leider lautet die übliche Antwort "Das ist nicht ausnutzbar", insbesondere in einer sicherheitsnaiven Umgebung, wie Sie es zu sein scheinen. Und das Verwandeln einer Sicherheitsanfälligkeit in einen Exploit dauert mehr als Ihre geplanten vier Stunden.

Alternative Antwort: Nehmen Sie sich Zeit, um Ihren Lebenslauf zu polieren, da dieser Arbeitgeber jederzeit sein Geschäft aufgeben könnte.

0
chrishmorris