
我有一個具有公共子網路的 EC2,流量通過互聯網網關流動。
現在,我有一個要求,例如我必須阻止 EC2 中的所有傳出流量。
我嘗試限制網路 ACL 的流量。
我允許 ssh 連接埠為 22,規則編號為 100。
然後我使用拒絕選項和規則號 200 阻止了所有流量。
我已對附加到 VPC 的網路 ACL 的出站規則進行了上述更改。
但是在 EC2 中套用此功能後,我也無法執行 ssh 操作。登入沒有發生。
我如何實現這個目標?我想阻止所有傳出流量,但 ssh 應該會發生。
答案1
AWS 中的網路 ACL 沒有狀態,因此您必須管理入站和出站流量。透過阻止除 22 之外的所有流量,您就阻止了所有出站連接,除非您的 SSH 用戶端使用連接埠 22 出站(這不太可能)。
從https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-basics:
NACL 是無狀態的,這表示不會保存有關先前發送或接收的流量的資訊。例如,如果您建立 NACL 規則以允許特定入站流量到達子網,則不會自動允許對該流量進行回應。這與安全組的工作方式形成對比。安全群組是有狀態的,這表示有關先前發送或接收的流量的資訊將被保存。例如,如果安全群組允許傳入 EC2 執行個體的入站流量,則無論出站安全群組規則為何,都會自動允許回應。
您應該查看安全群組,它們是有狀態的,因此將允許入站連線的出站回應段。您可以使用它來阻止除 22 個入站之外的所有入站和所有出站(當從 EC2 啟動時)。
另外:如果您只需要 SSH 進入此 EC2 而沒有其他入站流量,您應該真的查看會話管理器(系統管理員的一部分)。這使用 EC2 上的代理來提供 shell 訪問,而無需將流量暴露到互聯網,僅透過 NAT 提供 AWS 服務。因此不需要入站連接埠!https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html