Ich suche nach Möglichkeiten (und deren Vor- und Nachteilen), den Netzwerkverkehr der Komponenten einer zeitkritischen Anwendung in einem Rechenzentrum zu schützen. Ziel ist es, den Schaden zu minimieren, den ein Angreifer anrichten kann, wenn es ihm gelingt, eine VM zu kompromittieren. Es soll unmöglich sein, den Verkehr zwischen anderen (nicht kompromittierten) VMs zu lesen. Dies könnte durch Verschlüsselung oder durch Beschränkung des Netzwerkzugriffs erreicht werden.
Wir haben eine VMware-Umgebung, mehrere ESXi-Hosts und eine Fortigate-Firewall. Teile des internen Datenverkehrs sind noch nicht verschlüsselt, da die Anwendung mehrere Verbindungen nacheinander öffnet. Und für den gesamten Prozess gibt es eine Latenzgrenze.
Aufgrund der Latenzgrenze ist die (triviale) Verwendung von TLS für jede Verbindung keine Option. Vielleicht ließe sich dies mit Proxys auf allen Systemen erreichen, die die TLS-Verbindungen unabhängig von der Anwendungsaktivität offen halten.
Ich schätze, die Verwendung eines VPN zwischen allen beteiligten Systemen (etwa 50) wäre ein Albtraum für die Verwaltung. Wir verwenden Keepalived, was eine VPN-Lösung wahrscheinlich noch schlimmer macht.
Ich denke auch darüber nach, permanente ARP-Einträge als Schutz gegen ARP-Spoofing zu verwenden. VMware verhindert MAC-Spoofing. Dies würde keine Latenz hinzufügen und sollte die Notwendigkeit einer Verschlüsselung vermeiden. Funktioniert aber nicht gut mit der Fortigate und auch nicht mit virtuellen IPs.
Mich interessieren Meinungen zu den genannten Ansätzen und weiteren Ansätzen, die ich noch nicht kenne.
Was machen andere Organisationen mit Microservices und Zeitbeschränkungen? Ich verlange keine Aussage darüber, was die beste Lösung ist. Ich würde gerne wissen, was sich als (nicht) umsetzbar erwiesen hat.
Antwort1
Es klingt, als ob Sie im Rahmen einer Zero-Trust-Architektur nach dem suchen, was heutzutage als „Mikrosegmentierung“ bezeichnet wird.
Mit der herkömmlichen Segmentierung (Firewalls und vLANs) begrenzen Sie grundsätzlich die Kommunikation zwischen Subnetzen – Sie verhindern, dass jemand mit einem Subnetz kommuniziert, das die vorgegebenen Kriterien nicht erfüllt. Bei der Mikrosegmentierung begrenzen und/oder überprüfen Sie den Datenverkehr zwischen Anwendungen/Diensten, die sich im selben Subnetz befinden. Dies lässt sich am einfachsten auf Hypervisorebene erreichen, da der Hypervisor den gesamten Datenverkehr von/zu seinen Gästen nativ sehen kann.
Und Zero-Trust bezieht sich auf das alte Sicherheitssprichwort „Vertraue niemandem“, nicht einmal deinen eigenen Systemen. Du bietest das absolute Mindestmaß an Vertrauen an, im Grunde das operative Äquivalent von „Need-to-know“ für Informationen. App-Server können nur als Antworten auf TLS-Anfragen mit der Außenwelt kommunizieren, nichts anderes ist erlaubt – usw. Du beschränkst das Vertrauen auf explizite Anforderungen für den Betrieb und lässt nichts anderes zu.
Sie könnten beispielsweise Mikrosegmentierung verwenden, um zu sagen, dass Front-End-App-Server-A mit Mid-Tier-Logic-Server-A kommunizieren kann, der wiederum mit Datenbank-Server-A kommunizieren kann. Aber der Front-End-Server kann nicht direkt mit dem DB-Server kommunizieren. Und Front-End-A kann nicht mit Front-End-B kommunizieren, obwohl sie sich im selben Subnetz befinden.
VMware hat in letzter Zeit viel Aufhebens um die Verwendung von Mikrosegmentierung auf seiner Plattform gemacht. Klingt, als ob Sie es sich einmal ansehen sollten:https://www.vmware.com/solutions/micro-segmentation.html
Dadurch werden die Zeitbeschränkungen für die Sitzungserstellung für die Verschlüsselung umgangen. Außerdem leistet es das, was Verschlüsselung nicht kann. (VPNs oder SSL/TLS schützen Daten während der Übertragung, begrenzen jedoch nicht den Schaden, den ein Angreifer anrichten kann, sobald er sich innerhalb des „gesicherten“ Netzwerks befindet. Segmentierung mit begrenztem Vertrauen begrenzt die möglichen nächsten Schritte der Angreifer – im Grunde müssen sie jedes Mal, wenn sie versuchen, zu einem neuen Vektor zu wechseln, eine neue Firewall überwinden.) Und das alles geschieht auf Hypervisor-/Netzwerkebene; das heißt, Sie müssen Ihre Anwendungen nicht neu schreiben, um es zu verwenden. Richten Sie es auf Infrastrukturebene ein und lassen Sie Ihre Anwendungen weiter tun, was sie tun.
Antwort2
Grundsätzlich hätte VPN ähnliche Auswirkungen auf die Leistung wie TLS. Sie benötigen also hinsichtlich der Latenz eine günstigere Lösung.
Sie können die ESXi-Firewall verwenden. (Grundsätzlich ist die VMware-Technologie Linux sehr ähnlich und L2- und L3-Filterung auf Bridges und anderen virtuellen Netzwerkkomponenten ist möglich).
Sie können eine Art Netzwerksegmentierung verwenden – die Verwendung mehrerer Netzwerkadapter, die verschiedenen Gastgruppen oder Gästen zugewiesen sind, kann zusätzliche Barrieren schaffen.
Sie können einige VLAN-Setups verwenden, aber meiner Meinung nach ist das eine etwas überschätzte Strategie.