
我正在學習 AWS VPC,其中分配 NACL 入站/出站規則如下: 現在我正在為所有 IP 執行操作
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
我想知道我的 SSH 是如何運作的,因為規則規定將首先評估較低的數字,並且在出站規則中我拒絕了 SSH。誰能解釋一下該規則在 AWS 中實際上是如何運作的?
答案1
允許傳入 SSH 流量,因為入站規則 # 100(實際上忽略 200)和傳出規則與已建立的 SSH 連線不符...
基於AWS 文件:
網路 ACL 是無狀態的,這表示對允許的入站流量的回應受出站流量規則的約束(反之亦然)。
- 入站規則
根據我所看到的,我認為你的規則順序錯誤。
Rule # Type Allow/Deny
100 All Traffic Allow
200 SSH Deny
* All Traffic Deny
這根本沒有意義,因為您允許規則 100 的所有流量,因此規則 200 不會在任何時候使用(流量將基於規則 100 已被允許,因此規則 200 不會「保留」任何內容)。我認為更有意義有不同的順序(如果你想拒絕 ssh 服務:
Rule # Type Allow/Deny
100 SSH Deny
200 All Traffic Allow
* All Traffic Deny
- 出境
以下是規則 # 較低的 SSH 流量:
Rule # Type Allow/Deny
100 SSH Deny
200 All Traffic Allow
* All Traffic Deny
這將拒絕 SSH 流量,而其餘流量將被允許...
SSH 類型是連接埠 TCP/22 的流量 - 這通常用作目標連接埠。如果您要聯絡SSH 伺服器,您將連接到TCP/22,但您的來源連接埠是TCP/X,其中X 是「隨機」(不是真的,但為了簡單起見,可以說隨機)選擇的,例如> 10000。
一旦伺服器回覆您的連接,目標連接埠就是「您的」TCP/X,因此規則不必符合此流量...
目標 TCP/22 的傳出流量將是在伺服器上發起的、目標位於其他裝置上且尚未建立 SSH 連線的連線。
答案2
您允許所有流量進入您的主機,但拒絕從主機進行 ssh 出站。
據我所知,NACL 不進行深度資料包檢查。這意味著協議是它們的簡單別名分配的連接埠。
除非你正在做一些非常奇怪的事情,例如嘗試 ssh從連接埠 22,您的入站 ssh 會話應該沒問題。