Frage:
Ist HTTPS für die Kommunikation zwischen lokalen Netzwerkservern erforderlich?
asinkxcoswt
2020-03-08 17:09:46 UTC
view on stackexchange narkive permalink

Ich erstelle Webanwendungen für das Unternehmen meines Kunden. Auf der Serverseite gibt es zwei Arten der Netzwerkkommunikation von Server zu Server.

  1. Getrennte REST-API-Server, die untereinander Anforderungen stellen.
  2. Kommunikation von Application Load Balancern ( AWS ALB speziell) für ihre automatisch skalierenden EC2-Instanzen.
  3. ol>

    Derzeit verwenden alle diese Kommunikationen das HTTP-Protokoll. Nur die dem Benutzer zugewandten Knoten (wie der Load Balancer oder der Reverse-Proxy des Webservers) stellen HTTPS mit gültigen Zertifikaten zur Verfügung.

    Der Kunde bittet uns, sie alle in HTTPS zu ändern, da er glaubt, dass dies der Fall ist moderne Best Practice, HTTPS immer anstelle von HTTP überall zu verwenden.

    Ich möchte mit dem Kunden streiten, bin aber kein Sicherheitsexperte. Bitte helfen Sie mir, mein Verständnis unten zu überprüfen und mich zu korrigieren, wenn ich falsch liege.


    Meiner Ansicht nach besteht der Zweck des HTTPS-Protokolls darin, ein vertrauenswürdiger Kanal in einer nicht vertrauenswürdigen Umgebung (wie dem Internet) zu sein ). Daher sehe ich keinen Vorteil darin, den bereits vertrauenswürdigen Kanal auf HTTPS zu ändern. Da die Installation von Zertifikaten auf allen Servern die Wartung erschwert, besteht die Möglichkeit, dass der Kunde seine Anwendungsserver eines Tages als defekt ansieht, da auf einigen Servern das Zertifikat abgelaufen ist und niemand weiß.

    Ein anderer Problem: Wenn wir den gesamten Anwendungsserver konfigurieren müssen, z. B. Apache, hinter dem Lastausgleich, um HTTPS bereitzustellen, wie lautet dann der Servername , der in den VirtualHost eingefügt werden soll? Derzeit haben wir kein Problem damit, den Domainnamen wie my-website.example.com für HTTP VirtualHost zu verwenden. Aber wenn es HTTPS sein soll, müssen wir das Zertifikat von my-website.example.com für alle Instanzen hinter dem Load-Balancer installieren? Ich finde es komisch, weil wir dann viele Server haben, die behaupten, my-website.example.com zu sein.

Ein Google wert: Zero-Trust-Netzwerke.Sie haben Recht, dass HTTPS eine sichere Kommunikation in einem unsicheren Kanal ermöglichen soll.Sie gehen davon aus, dass Ihr internes Netzwerk vertrauenswürdig ist.
Ihre Kommentare zu SSL-Zertifikaten sind nur ein Implementierungsdetail und werden hier nicht wirklich thematisiert (obwohl der Rest in Ordnung ist).Ihre Aufgabe als Dienstleister ist es, die Kosten dieser Änderungen zu ermitteln, damit Sie Ihrem Kunden mitteilen können, wie viel es kosten wird, und ihn entscheiden lassen, ob es sich für sein Unternehmen lohnt.Im Moment klingt es nur so, als ob Sie sich nicht die Mühe machen möchten, sich die Mühe zu machen, was nicht wirklich ein vernünftiger Ansatz ist.Wenn diese Änderungen am Ende eines Veröffentlichungsprozesses angefordert würden, für den Sie nicht bezahlt werden, würde ich dies mit Sicherheit ablehnen.
Früher hatte Google keine Verschlüsselung für den Datenverkehr in seinen Rechenzentren - und dann stellte sich heraus, dass die Wahrscheinlichkeit sehr hoch war, dass staatliche Akteure diese Daten lesen, sodass Google überall auf Verschlüsselung umstellte ...
Google * verwendete * HTTPS * intern nicht.Dann ließ Snowden alle wissen, dass die NSA zusätzliches Material an das Google-System angehängt hatte, damit die NSA den gesamten Datenverkehr sehen konnte.Jetzt verwendet Google HTTPS intern.Diese Folie hier: https://www.businessinsider.com/leaked-nsa-slide-of-google-cloud-2013-10?r=DE&IR=T
Neben der Sicherheit gibt es auch Leistungsgründe für die Verwendung von HTTPS.Zum Beispiel die Verwendung von H / 2 (anstelle von HTTP / 1.1), die der AWS ALB standardmäßig unterstützt.
@Matthew iirc Es gibt keinen Grund, warum Sie http2 nicht ohne TLS verwenden können, wenn Sie den Server und den Client steuern.
Wahrscheinlich keine Antwort wert, aber der Servername für den VirtualHost sollte der Name sein, den Sie in den URI eingeben, mit dem Sie eine Verbindung zum Server herstellen - unabhängig davon, ob es sich um eine IP-Adresse oder einen Hostnamen handelt.Wenn Sie Zertifikate mit einer internen Zertifizierungsstelle signieren (was ich sowieso empfehlen würde), können Sie entweder Hostnamen oder IP-Adressen als Betreff-Alt-Namen verwenden, sodass Sie problemlos ein Zertifikat für diesen Namen erhalten können (öffentliche Zertifizierungsstellen sind umständlicher mit Zertifikaten fürIPs, aber Sie werden dieses Problem nicht haben, wenn Sie es intern verwalten).
@user253751 Aber hat es geholfen?
@Matthew Ich habe HTTP / 2 ohne HTTPS ohne Probleme verwendet.Browser-Anbieter haben nur beschlossen, es nicht zu unterstützen, aber es gibt nichts in der Spezifikation, was diese Kombination verbietet.
@Michael Nun, es hat * diesen * Angriffsvektor geschlossen.Jetzt muss die NSA riskantere Dinge tun, wie zusätzliche Chips in ihre Server zu schleichen (Vermutung).
Sechs antworten:
Demento
2020-03-08 18:48:24 UTC
view on stackexchange narkive permalink

Die Antwort auf Ihre Frage lautet "Bedrohungsmodellierung". Die Verwendung kryptografischer Protokolle wie HTTPS ist ein Sicherheitsmechanismus zum Schutz vor bestimmten Bedrohungen. Wenn diese Bedrohungen für Sie relevant sind, müssen sie analysiert werden:

  • Gibt es potenzielle Bedrohungsakteure in Ihrem internen Netzwerk? Aufgrund Ihrer Frage scheinen Sie davon auszugehen, dass die internen Netzwerk kann voll vertrauenswürdig sein. Dies ist häufig ein Missverständnis, da Ihr internes Netzwerk auf verschiedene Weise kompromittiert werden kann (z. B. werden gültige Benutzer mit Zugriff auf dieses Netzwerk bösartig, ein System in diesem Netzwerk wird kompromittiert, eine Fehlkonfiguration öffnet das Netzwerksegment usw.).
Kann sich die Architektur ändern? Es ist wahrscheinlich, dass sich das System im Laufe der Zeit ändert und frühere Sicherheitsannahmen (z. B. wenn mein internes Netzwerk vertrauenswürdig ist) nicht mehr gelten. Wenn dies ein vernünftiges Szenario ist, ist es möglicherweise eine gute Idee, den erforderlichen Sicherheitsmechanismus im Voraus zu erstellen. Dafür gibt es bewährte Sicherheitsmethoden. Bereitstellung von Sicherheit in einem Bereich der Unsicherheit.
  • Gibt es eine behördliche, rechtliche oder Compliance-Anforderung, die erfüllt werden muss? Sie sagten, dass Ihr Kunde HTTPS als den Stand der Dinge betrachtet -art / moderne Best-Practice. Die Quelle dieser freundlichen Formulierung könnte tatsächlich eine extern gesteuerte Anforderung sein, die erfüllt werden muss. Nichteinhaltung ist eine Bedrohung, die auch in einer Bedrohungsanalyse behandelt werden sollte.
  • Dies sind wichtige Themen, die analysiert werden sollten. Wenn ich Systemarchitekturen entwerfe und Zweifel habe, ziehe ich es vor, auf der Seite der Sicherheit zu irren. In diesem Fall verwendet der Best-Practice-Ansatz in der Tat HTTPS für die Kommunikation, unabhängig von den Umständen, solange keine wesentlichen Auswirkungen auf die Anwendung bestehen (z. B. Auswirkungen auf die Leistung).

    Die Schwierigkeit, Serverzertifikate zu verwalten, sollte heutzutage kein Problem mehr sein, da dies gängige Praxis ist. Dies sollte Teil der normalen geplanten Betriebsaktivitäten sein.

    Nach alledem ist natürlich ein zusätzlicher Aufwand erforderlich, um HTTPS anstelle von HTTP zu verwenden, und Sie haben das Recht, dem Kunden diesen zusätzlichen Aufwand in Rechnung zu stellen. Ich schlage vor, dass Sie berechnen, was dies während der Entwicklung und im Laufe der Zeit während des Betriebs kostet, und den Kunden entscheiden lassen, ob die Kosten den Nutzen wert sind.

    "Die Schwierigkeit, Serverzertifikate zu verwalten, sollte heutzutage kein Problem mehr sein, da dies gängige Praxis ist."Sie sollten den Microsoft Azure-Mitarbeitern dies mitteilen.Oder jeder, der erst letzte Woche aufgrund des Problems "Let's Encrypt" Ausfälle hatte, oder ... ich könnte weitermachen.Nein wirklich, die Anzahl der Ausfälle aufgrund von Problemen mit Zertifikaten in selbst den größten Netzwerken zeigt, dass dies nicht so trivial ist, wie die Leute theoretisch gerne denken.Und die Folgen sind schwerwiegend.Man sollte diesen Faktor wirklich nicht unterschätzen.
    @Voo Für die interne Server-zu-Server-Authentifizierung gibt es keinen Grund, eine öffentliche Zertifizierungsstelle wie Let's Encrypt zu verwenden, und es ist wahrscheinlich besser, dies nicht zu tun.Sie können eine intern verwaltete Zertifizierungsstelle für interne Zertifikate verwenden, sodass Sie sich keine Gedanken über eine Verlängerung machen müssen (Sie können den Ablauf auf 100 Jahre oder was auch immer festlegen), den Servern keinen Internetzugang gewähren müssen und es keine Möglichkeit gibt, dass jemand dies kannVerleiten Sie eine öffentliche Zertifizierungsstelle dazu, ein Zertifikat falsch auszustellen, da nur von Ihrer internen Zertifizierungsstelle signierte Zertifikate gültig sein müssen.
    @James Sicher, aber ich könnte auch Probleme mit diesem Ansatz benennen. Erinnern Sie sich, als Chrome beschlossen hat, alternative Betreffnamen für die Zertifikatsvalidierung zu verlangen?Wir hatten alte interne Zertifikate, die diese nicht festlegten.Oder über den Spaß beim Konfigurieren von Knotenanwendungen für die Verwendung Ihrer internen Stammzertifizierungsstelle.Und so weiter.Mein Punkt ist nicht, dass diese Dinge unüberwindbar sind, sondern dass Sie sie nicht unterschätzen sollten.
    @BoogaRoo für die Server-zu-Server-Kommunikation spielt es keine Rolle, ob Apple Ihren Zertifikaten vertraut oder nicht, nur wenn Ihr Server dies tut.Wenn Sie Bibliotheken verwenden, mit denen Sie sie entsprechend konfigurieren können (viele tun dies), können Sie SHA-1, 1024-Bit-RSA, keine Betreff-Alt-Namen, unangemessen lange Ablaufzeiten und alle Arten von Dingen verwenden, die nicht übereinstimmenDie grundlegenden Anforderungen und Browser und öffentlichen Zertifizierungsstellen würden sich verschlechtern.Das heißt nicht, dass Sie bewährte Verfahren grundlos ignorieren sollten, aber je nach Bedrohungsmodell kann Bequemlichkeit ein guter Grund sein.
    @James_pic irgendwie habe ich das als "1-Bit-RSA" falsch verstanden.
    symcbean
    2020-03-08 23:11:47 UTC
    view on stackexchange narkive permalink

    Das Mischen und Anpassen von HTTP und HTTPS ist keine gute Idee - Sie werden ständig mit Konfigurationen jonglieren.

    Normalerweise sollte das Hinzufügen einer Komponente zu einem System nur erfolgen, wenn es einen bestimmten Grund dafür gibt. Nur weil jemand dachte, es sei eine gute Idee, ist dies kein spezifischer Grund.

    Ich sage nicht, dass HTTPS eine schlechte Idee ist - im Gegenteil -, aber Sie müssen viel lernen. Das von Ihnen vorgeschlagene Modell untergräbt die Vertrauensbeziehung, die der Hauptgrund für die Verwendung von TLS ist. Sie scheinen auch nicht darüber nachgedacht zu haben, wie Sie Ihre PKI planen sollen.

    Server, die eines Tages in der Zukunft defekt sind, weil auf einem Server das Zertifikat abgelaufen ist und niemand weiß,

    Wenn Sie den Dienst bereitstellen, sollten Sie die Überwachung konfigurieren für den Dienst, einschließlich Ablauf des Zertifikats.

    Es hört sich so an, als würden Sie nach Gründen suchen, um mit dem Ansatz der Einführung von Zertifikaten zu argumentieren. Wenn Sie hier zwischen den Zeilen lesen, scheinen Ihnen derzeit die Fähigkeiten und die Planung zu fehlen, die Sie zur Implementierung benötigen.

    Ja, es ist viel Arbeit, aber das ist das Geschäftsmodell - Sie bewerten den Arbeitsaufwand, die Fähigkeiten, die Sie erwerben müssen, und die, die Sie kaufen können, und die Sie dem Kunden in Rechnung stellen. (Serge hebt die Kosten für die Zertifikate hervor - dies sind jedoch die geringsten Kosten in dieser gesamten Übung.)

    Die Verwendung von https im internen Netzwerk (oder im Nur-Host-Netzwerk ...) verursacht Kopfschmerzen, da Sie auf Zertifikate achten müssen, die von niemandem gesehen werden, Ihre Systeme jedoch kontinuierlich an nicht benötigten TLS-Handshakes arbeiten müssen.Sie müssen Zertifikate verwalten, die noch niemand gesehen hat.Und Sie werden immer noch viele Kopfschmerzen aufgrund der verschiedenen Zertifikatsmetadaten haben.Während eine korrekt geschriebene Software kein Problem haben sollte, irgendwo ausgeführt zu werden, einschließlich eines http-Servers, der hinter einem https-Proxy ausgeführt wird.
    Sie sollten das Wissen einer Person wirklich nicht anhand der wenigen Informationen beurteilen, die in der Frage angegeben sind ...
    @peterh-ReinstateMonica: Der Infrastrukturaufwand ist selbst bei verteilten Microservices so gering, dass er kaum gemessen werden kann.Die Implementierung im Voraus, wenn Sie sie benötigen, spart massiv Kosten und Aufwand.Wenn das nicht deine Erfahrung ist, dann machst du es falsch.Aber diese bleiben für meinen Hauptpunkt irrelevant - der Kunde will es, der Kunde zahlt dafür, es schadet nicht.
    (Zumindest schadet es nicht, wenn es richtig gemacht wird)
    @symcbean-Statistiken zeigen, dass das Wiederauftreten von Besuchern stark davon abhängt, wie viele Zehntelsekunden eine Seite für sie angezeigt wird.Es überrascht nicht, dass sie nach Rückmeldungen nur sagen, dass die Seite nicht schnell genug ist, wenn sie wirklich langsam ist.Ja, Zehntelsekunden sind wichtig, wenn Sie an Besuchsstatistiken interessiert sind.Beachten Sie, dass ein SSL-Handshake normalerweise keine große Datenübertragung ist, jedoch viele Sperren aufweist: Etwa fünf bis zehn Mal muss eine Seite zur anderen gewartet werden.(Dies kann durch Verbindungspooling und TLS-Sitzungen reduziert werden, eine nette Aufgabe, um sie überall zu konfigurieren.)
    @symcbean Es gibt noch ein weiteres Argument: Durch die Verschlüsselung des internen Datenverkehrs verlieren Sie viel Debuggbarkeit.Wenn Sie die Kommunikation verschlüsselt haben, können Sie nur debuggen, was die Software tatsächlich miteinander spricht, wenn Sie die Software selbst debuggen (wie apache dump_io oder ähnliches).Während Sie den http-Verkehr ohne die Mitarbeit / Änderung der Teilnehmer analysieren können.
    @Persistence Ich hatte nicht die Absicht einer negativen Kommunikation.
    @peterh-ReinstateMonica Mein Kommentar richtete sich an den Antwortenden, nicht an Sie.Da sie ausdrücklich sagen "Ihnen fehlen derzeit die Fähigkeiten", ist dies unbegründet
    Peteris
    2020-03-09 18:35:04 UTC
    view on stackexchange narkive permalink

    Interne Netzwerke sind nicht sicher

    Interne Netzwerke sind im Allgemeinen sicherer als öffentlich zugängliche Systeme, sollten jedoch nicht als vollständig sicher angesehen werden. Ein erheblicher Teil der Angriffe kommt von innen - Spearphishing, Social Engineering und Insider-Angriffe sind beliebte Vektoren, die mit einem Halt in Ihrem Netzwerk beginnen.

    Es gibt also keinen guten Grund für unverschlüsselten geheimen oder privaten Verkehr Informationen auch über Ihre internen Netzwerke. Sie benötigen nicht unbedingt öffentliche Namen oder CA-Hierarchien. Wenn Sie über genau definierte bilaterale Kommunikationskanäle verfügen, ist es möglicherweise einfacher, eine explizite Vertrauensbeziehung zu haben, in der Ihre Load-Balancer so konfiguriert sind, dass sie einem bestimmten selbstsignierten Zertifikat von Ihnen vertrauen Backend-Server und sonst nichts.

    Beachten Sie außerdem, dass Sie Technologien wie zertifikatbasierte VPNs sowohl in internen als auch in nach außen gerichteten Netzwerken verwenden können und die Vorteile gleich sind.Sie können Teile Ihres internen Netzwerks so sperren, dass nur auf interne Systeme zugegriffen werden kann, die über einzigartige Krypto-Anmeldeinformationen verfügen, die nur Ihr Unternehmen ausstellen kann.Das Schöne an VPNs ist, dass sie * alles * sichern ... und dies dennoch * transparent * für die Clients tun, die sie einsetzen.Es fügt eine weitere Ebene der Rechenschaftspflicht hinzu, die einfach und überschaubar ist.
    Serge Ballesta
    2020-03-08 19:05:43 UTC
    view on stackexchange narkive permalink

    Als Fachmann schulden Sie Ihrem Kunden Ratschläge, sollten die Entscheidung jedoch nicht selbst treffen.

    Die Argumente, die Sie Ihrem Kunden vorlegen müssen, sind:

    • was ist der Gewinn bei der Verwendung von HTTPS innerhalb des Servernetzwerks? Wenn dieses Netzwerk von einem anderen System isoliert ist und nur Systemadministratoren darauf zugreifen können, können Sie argumentieren, dass der Gewinn vernachlässigt werden kann, da es nur ein System vor jemandem schützt, der bereits über Administratorrechte verfügt. Wenn andere Mitarbeiter ohne Administratorrechte darauf zugreifen können, ist der Gewinn nicht null, ebenso wenig wie Systeme für andere Kunden.
    • Wie hoch ist das Risiko, dies zu tun? Die Disgression auf Zertifikaten ist hauptsächlich ... eine Disgression. Tatsache ist jedoch, dass HTTPS ein komplexeres Protokoll als HTTP ist und jede zusätzliche Komplexität das Risiko von Implementierungsfehlern erhöht. Wenn der vorherige Schritt zu dem Schluss kam, dass der Gewinn vernachlässigbar ist, reicht dies aus, um den Kunden davon abzubringen.
    • Was wären die zusätzlichen Kosten? Hier müssen direkte und indirekte Kosten berücksichtigt werden. Zu den direkten Kosten können der Preis für zusätzliche Zertifikate gehören, wenn Sie externe Zertifikate verwenden, oder die Zeit für die Erstellung privater Zertifikate, wenn Sie eine private PKI verwenden. Sie würden auch die Zeit für die Konfiguration des Systems enthalten. Und sie sollten die Wartungszeiten als wiederkehrende Kosten enthalten, einschließlich einer programmierten Erneuerung von Zertifikaten - dieser Teil befindet sich in Ihrer Verantwortungsdomäne, aber Sie können Ihrem Kunden die Zeit in Rechnung stellen. Indirekte Kosten sind schwerer zu ermitteln, aber Sie sollten Ihre eigenen Erfahrungen nutzen, um das Fehlerrisiko aufgrund der zusätzlichen Komplexität und ihrer möglichen Folgen zu bewerten. Und IMHO können Sie Ihrem Kunden dies in Rechnung stellen, wenn er darauf besteht, Ihren Ratschlägen nicht zu folgen.

    Wenn Sie jedoch alles gesagt haben, ist der Kunde für die Entscheidung verantwortlich.

    fraxinus
    2020-03-09 23:17:17 UTC
    view on stackexchange narkive permalink

    Verschlüsselung ist billig. Datenlecks oder Datenverlust sind dies nicht.

    Verwenden Sie die Verschlüsselung zwischen Servern (und es ist sogar noch besser, die TLS-Authentifizierung zwischen Servern zu verwenden).

    Und wenn ich billig sage, ist es sogar billig unter Berücksichtigung der Verwaltung der Schlüssel und der Zertifikate. Es kann sinnvoll sein, beiden Servern selbstsignierte und langlebige Zertifikate auszustellen.

    Es gibt einige Ausnahmen von der Regel:

    1. Entweder die Client oder Server sind Legacy-Systeme mit bekannten SSL / TLS-Schwachstellen. Es ist immer besser, den anfälligen Code zu aktualisieren, aber wir alle wissen, dass dies nicht immer möglich ist. Manchmal ist es besser (immer noch nicht gut, aber besser), den anfälligen Code vollständig zu deaktivieren, Klartext auszuführen und die Risiken auf die eine oder andere Weise zu mindern.

    2. Sie tauschen einen Wahnsinnigen aus Datenmenge und / oder benötigen eine wahnsinnig niedrige Latenz. Die Verschlüsselung kann zu einem Engpass und / oder einem Ressourcenfresser werden. Sie können sich für keine Verschlüsselung entscheiden und auch etwas anderes tun, um das Ding zu sichern.

    3. ol>
    Mike Robinson
    2020-03-10 01:59:27 UTC
    view on stackexchange narkive permalink

    "https" sichert nicht nur die Kommunikation über das Netzwerk, sondern überprüft auch das vom Server vorgelegte Zertifikat . Auf diese Weise können Sie feststellen, dass Sie wirklich mit der richtigen Site sprechen. Und dies ist meiner Meinung nach der eigentliche Vorteil von "https".

    "letsencrypt.org", das signierte Zertifikate kostenlos ausstellt, hat auf seiner Website viel Material, in dem diese Vorteile erörtert werden . Sie argumentieren ... zu Recht, ich denke ... dass "alles https sein sollte, ob das Material tatsächlich empfindlich ist oder nicht."

    ( mod_ssl et al ist auch in der Lage, den Zertifikatsbesitz auf der Client -Seite zu erzwingen, obwohl dies selten der Fall ist. Für eine sichere interne Anwendung möchten Sie jedoch möglicherweise so etwas tun Der Server kann dann einschränken, welche Computer überhaupt eine Verbindung herstellen können, und sie durch die Anmeldeinformationen einschränken, über die sie verfügen müssen.)



    Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
    Loading...