Mehrere EC2-Sicherheitsgruppen - zulässig oder einschränkend?

27

Was passiert, wenn ich einer Instanz mehrere Sicherheitsgruppen zuordne? Ist dies in dem Sinne zulässig, dass der Datenverkehr zugelassen wird, wenn eine der Sicherheitsgruppen dies zulässt? ODER ist es einschränkend in dem Sinne, dass jede Sicherheitsgruppe den Datenverkehr zulassen muss, damit er weitergeleitet wird?

Nehmen wir zum Beispiel an, ich habe eine Klasse von Instanzen, die immer nur mit anderen Instanzen in demselben Konto kommunizieren. Ich habe auch eine Klasse von Instanzen, die nur Datenverkehr über HTTP (Port 80) akzeptieren.

Ist es möglich, den Zugriff auf interne Instanzen und nur über HTTP einzuschränken, indem zwei Sicherheitsgruppen erstellt und angewendet werden:

  1. Eine "interne" Sicherheitsgruppe. Zulassen des gesamten Datenverkehrs von anderen Mitgliedern dieser Sicherheitsgruppe auf allen Ports für alle Transporte (TCP, UDP, ICMP)
  2. Erstellen Sie eine "http" -Sicherheitsgruppe. Lassen Sie den gesamten Datenverkehr von einer beliebigen Quelle über TCP auf Port 80 zu.

ODER bin ich gezwungen, eine einzelne Sicherheitsgruppe zu erstellen, die Datenverkehr von Port 80 zulässt, wo sich die Quelle befindet?

SFun28
quelle

Antworten:

5

Wenn eine Instanz über mehrere Sicherheitsgruppen verfügt, enthält sie die Summe aller Regeln in den verschiedenen Gruppen.

Nehmen wir zum Beispiel an, ich habe eine Klasse von Instanzen, die immer nur mit anderen Instanzen in demselben Konto kommunizieren. Ich habe auch eine Klasse von Instanzen, die nur Datenverkehr über http (Port 80) akzeptieren.

Dies ist eine perfekte Situation für AWS Virtual Private Cloud. Platzieren Sie die internen Instanzen in privaten Subnetzen und die öffentlichen Instanzen in öffentlichen Subnetzen.

ceejayoz
quelle
ceejayoz - Also ist es der "restriktive" Fall? Bedeutet das, dass die Lösung mit zwei Sicherheitsgruppen funktionieren würde? Einigung über VPC-Lösung; Mein Beispiel war eher zu verstehen, wie mehrere Gruppen funktionieren. Wo haben Sie die Antwort übrigens gefunden?
SFun28
Sie möchten eine Sicherheitsgruppe für interne Instanzen und eine andere für öffentlich zugängliche Instanzen. Durch Hinzufügen der öffentlich zugänglichen 80: 0.0.0.0/0-Gruppe zu internen Instanzen würden diese für das öffentliche Internet verfügbar gemacht.
Ceejayoz
1
Um ganz klar zu sein, sagen Sie, dass der Datenverkehr zugelassen wird, wenn eine der einzelnen Sicherheitsgruppen dies zulässt? Ihr Kommentar zur "Summe aller Regeln" stört mich, denn wenn ich an die Summe denke, denke ich UND statt ODER.
SFun28
2
Ja, wenn eine der auf eine Instanz angewendeten Gruppen dies zulässt, ist dies zulässig. Gruppenregeln werden durch ODER verknüpft, nicht durch UND verknüpft.
ceejayoz
7
Warum können die Leute nicht einfach die gestellte Frage beantworten, anstatt ihre Idee einzufügen, was getan werden soll? Wenn du das machst, beantworte die Frage zuerst. Jeez
Bill Rosmus
28

Freizügig.

Laut AWS hier: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#security-group-rules

Wenn es für einen bestimmten Port mehr als eine Regel gibt, wenden wir die freizügigste Regel an. Wenn Sie beispielsweise eine Regel haben, die den Zugriff auf TCP-Port 22 (SSH) von der IP-Adresse 203.0.113.1 und eine andere Regel, die den Zugriff auf TCP-Port 22 von jedem erlaubt, hat jeder Zugriff auf TCP-Port 22.

euphoria83
quelle
3

Hier ist die Antwort des AWS-Dokumentations-Supports. Sie sagten, sie würden die Dokumentation aktualisieren:

Ich habe einige Diskussionsforen-Beiträge gefunden, die ähnliche Probleme mit Regelkonflikten innerhalb einer oder mehrerer Sicherheitsgruppen behandeln:

https://forums.aws.amazon.com/thread.jspa?messageID=221768

https://forums.aws.amazon.com/thread.jspa?messageID=349244吼

Wenn auf eine Instanz mehrere Sicherheitsgruppen angewendet werden, werden die Regeln zu einem großen Regelsatz zusammengefasst. In EC2 sind Sicherheitsgruppenregeln nur zulässig, dh, Sie können keine DENY-Regeln hinzufügen. Dies bedeutet, dass immer die freizügigste Regel gilt. Wenn Sie beispielsweise eine Sicherheitsgruppe haben, die den Zugriff auf Port 22 über die IP-Adresse 10.10.10.10 ermöglicht, und eine andere Sicherheitsgruppe, die den Zugriff auf Port 22 über alle Benutzer zulässt, hat jeder Benutzer Zugriff auf Port 22 in der Instanz.

SFun28
quelle
0

Wenn Sie eine Sicherheitsgruppe als Quelle oder Ziel für eine Regel angeben, wirkt sich die Regel auf alle Instanzen aus, die der Sicherheitsgruppe zugeordnet sind. Eingehender Datenverkehr ist basierend auf den privaten IP-Adressen der Instanzen zulässig, die der Quellensicherheitsgruppe zugeordnet sind (und nicht der öffentlichen IP-Adresse oder der elastischen IP-Adresse). Weitere Informationen zu IP-Adressen finden Sie unter Amazon EC2-Instanz-IP-Adressierung. Wenn Ihre Sicherheitsgruppenregel auf eine Sicherheitsgruppe in einer Peer-VPC verweist und die referenzierte Sicherheitsgruppe oder VPC-Peering-Verbindung gelöscht wird, wird die Regel als veraltet markiert. Weitere Informationen finden Sie unter Arbeiten mit veralteten Sicherheitsgruppenregeln im Amazon VPC Peering-Handbuch.

Wenn es für einen bestimmten Port mehr als eine Regel gibt, wenden wir die freizügigste Regel an. Wenn Sie beispielsweise eine Regel haben, die den Zugriff auf TCP-Port 22 (SSH) von der IP-Adresse 203.0.113.1 und eine andere Regel, die den Zugriff auf TCP-Port 22 von jedem erlaubt, hat jeder Zugriff auf TCP-Port 22.

Wenn Sie einer Instanz mehrere Sicherheitsgruppen zuordnen, werden die Regeln aus jeder Sicherheitsgruppe effektiv zusammengefasst, um einen Regelsatz zu erstellen. Wir verwenden diese Regeln, um zu bestimmen, ob der Zugriff zugelassen werden soll.

Achtung Da Sie einer Instanz mehrere Sicherheitsgruppen zuweisen können, gelten für eine Instanz möglicherweise Hunderte von Regeln. Dies kann beim Zugriff auf die Instanz zu Problemen führen. Aus diesem Grund empfehlen wir Ihnen, Ihre Regeln so weit wie möglich zu verkürzen.

user377934
quelle