
Ich lerne AWS VPC, wo ich NACL Inbound/Outbound-Regeln wie folgt zuweise: Im Moment mache ich das für alle IPs
Rule # Type Allow/Deny
100 All Traffic Allow
200 SSH Deny
* All Traffic Deny
Outbound
Rule # Type Allow/Deny
100 SSH Deny
200 All Traffic Allow
* All Traffic Deny
Ich frage mich, wie mein SSH funktioniert, da die Regel besagt, dass die niedrigere Zahl zuerst ausgewertet wird, und in der Ausgangsregel habe ich SSH verweigert. Kann jemand erklären, wie die Regel in AWS tatsächlich funktioniert?
Antwort1
Eingehender SSH-Verkehr wird zugelassen, da die eingehende Regel Nr. 100 (200 wird praktisch ignoriert) und die ausgehende Regel nicht mit der bereits hergestellten SSH-Verbindung übereinstimmt …
Bezogen aufAWS-Dokumentation:
Netzwerk-ACLs sind zustandslos, was bedeutet, dass Antworten auf zulässigen eingehenden Datenverkehr den Regeln für ausgehenden Datenverkehr unterliegen (und umgekehrt).
- Eingehende Regel
Nach dem, was ich sehe, haben Sie die Regeln in der falschen Reihenfolge angeordnet.
Rule # Type Allow/Deny
100 All Traffic Allow
200 SSH Deny
* All Traffic Deny
Das ergibt einfach keinen Sinn, da Sie mit Regel 100 allen Datenverkehr zulassen, sodass Regel 200 zu keinem Zeitpunkt angewendet werden würde (der Datenverkehr wird bereits auf Grundlage von Regel 100 zugelassen, sodass für Regel 200 nichts „übrig“ bleibt). Ich denke, eine andere Reihenfolge macht mehr Sinn (falls Sie den SSH-Dienst verweigern möchten:
Rule # Type Allow/Deny
100 SSH Deny
200 All Traffic Allow
* All Traffic Deny
- Ausgehend
Hier ist SSH-Verkehr mit niedrigerer Regelnummer:
Rule # Type Allow/Deny
100 SSH Deny
200 All Traffic Allow
* All Traffic Deny
Dadurch wird der Datenverkehr für SSH verweigert, für den Rest wird er jedoch zugelassen ...
Typ SSH ist Datenverkehr mit Port TCP/22 - dieser wird normalerweise als Zielport verwendet. Falls Sie einen SSH-Server kontaktieren möchten, stellen Sie eine Verbindung zu TCP/22 her, aber Ihr Quellport ist TCP/X, wobei X „zufällig“ (nicht wirklich, aber der Einfachheit halber sagen wir zufällig) ausgewählt wird, sagen wir >10000.
Sobald der Server auf Ihre Verbindung antwortet, ist der Zielport „Ihr“ TCP/X, sodass die Regel nicht unbedingt auf diesen Datenverkehr zutrifft …
Ausgehender Datenverkehr mit dem Ziel TCP/22 wäre die Verbindung, die auf dem Server mit Ziel einem anderen Gerät initiiert wird und nicht bereits eine SSH-Verbindung hergestellt hat.
Antwort2
Sie lassen den gesamten Datenverkehr auf Ihren Host zu, verweigern jedoch den SSH-Ausgang von dort.
Soweit ich weiß, führen die NACLs keine Deep Packet Inspection durch. Das bedeutet, dass die Protokolle einfache Aliase für ihreZugewiesene Ports.
Sofern Sie nicht etwas wirklich Bizarres tun, wie zum Beispiel einen SSH-VersuchausPort 22, Ihre eingehende SSH-Sitzung sollte einwandfrei funktionieren.