如何設定網路防火牆規則以封鎖或允許特定網域?

4 分的閱讀內容
0

我想使用 AWS Network Firewall,在 Amazon Virtual Cloud (Amazon VPC) 的資源中篩選輸出網路流量。

簡短說明

網路防火牆政策和規則群組由其規則評估順序定義,其中包含預設動作順序或嚴格評估順序。為預設動作順序而設定的防火牆政策,會依下列順序評估規則:合格、捨棄、拒絕和警示。預設政策的可設定狀態預設動作為合格。

在嚴格評估順序下,規則群組會依從最低到最高的優先順序進行評估。然後,群組中的規則會依照其設定的順序進行評估。嚴格順序政策的可設定狀態預設動作可以進行設定,例如設定捨棄已建立。預設規則群組與預設動作順序政策相關聯,而嚴格順序規則群組則與嚴格評估順序政策相關聯。

您可以將網路防火牆設定為允許或封鎖特定網域的存取。若要這麼做,可以使用下列方式之一,如此設定使用預設動作順序或嚴格評估順序的政策或規則:

  • 可設定狀態網域清單規則群組
  • 與 Suricata 相容的 IPS 規則

可設定狀態網域名稱檢查可以對 HTTP 和 HTTPS 通訊協定進行設定。對於 HTTP,請求未加密,並允許網路防火牆在 HTTP 主機標頭中查看主機名稱值。對於 HTTPS,網路防火牆會使用 TLS 交握中的伺服器名稱指示 (SNI) 延伸,來判斷主機名稱。然後,防火牆會將主機名稱 (或網域名稱) 與設定的 HTTP 或 TLS 規則進行比較。

使用網域允許清單時,防火牆只會將 HTTP 或 HTTPS 要求傳遞至指定的網域。所有對其他網域的要求都會被捨棄。

解決方法

預設動作順序

對於使用預設動作順序的政策,請將網域清單規則群組設定為允許對特定網域發出 HTTP 和 HTTPS 要求。

1.    開啟 Amazon VPC 主控台

2.    建立防火牆

3.    在導覽窗格中的網路防火牆之下,選擇防火牆政策

4.    選擇您要編輯的預設動作順序防火牆政策。

5.    在可設定狀態規則群組之下,選擇動作,然後選擇建立可設定狀態規則群組

6.    輸入唯一的規則群組名稱。

7.    在容量保留中,輸入清單將會包含的預估網域數目。建立規則群組後,就無法變更此值。

8.    在可設定狀態規則群組選項中,選擇網域清單
注意:可設定狀態規則順序無法變更,因為這是繼承政策而來的。規則順序會顯示為預設

9.    在網域清單下的網域名稱來源中,輸入您要比對的網域名稱。您可以將網域定義為須完全相符,例如 abc.example.com。也可以將網域定義為萬用字元,例如 .example.com

10.    在來源 IP 類型中,如果來源 IP 與防火牆存在於相同的 VPC 中,請選擇預設。如果來源 IP 存在於遠端 VPC 中,請選擇已定義。選擇已定義時,在來源 IP CIDR 範圍下,輸入想要防火牆檢查的來源子網路。

11.    在通訊協定中,選取 HTTP 和 HTTPS

12.    在動作中,選擇允許

13.    選擇建立並新增至政策

若要手動為 HTTP 和 HTTPS 定義與 Suricata 相容的 IPS 規則,請在規則群組中設定預設動作順序與 Suricata 相容的 IPS 規則。

1.    開啟 Amazon VPC 主控台

2.    建立防火牆

3.    在導覽窗格中的網路防火牆之下,選擇防火牆政策

4.    選擇您要編輯的預設動作順序防火牆政策。

5.    在可設定狀態規則群組之下,選擇動作,然後選擇建立可設定狀態規則群組

6.    輸入唯一的規則群組名稱。

7.    在容量保留中,輸入清單要包含的預估規則數目。建立規則群組後,就無法變更此值。

8.    在可設定狀態規則群組選項中,選擇與 Suricata 相容的 IPS 規則
注意:可設定狀態規則順序無法變更,因為這是繼承政策而來的。規則順序會顯示為預設

9.    (選用) 定義要在 Suricata 簽章中使用的自訂規則變數。

10.    (選用) 定義要在 Suricata 簽章中使用的 IP 設定參照。

11.    在與 Suricata 相容的 IPS 規則之下,輸入下列規則。將網域變更為您要定址的特定網域。

pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".amazonaws.com"; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:1; rev:1;)
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; content:"example.com"; startswith; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:2; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".amazonaws.com"; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:3; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"example.com"; startswith; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:4; rev:1;)
drop http $HOME_NET any -> $EXTERNAL_NET any (http.header_names; content:"|0d 0a|"; startswith; msg:"not matching any HTTP allowlisted FQDNs"; flow:to_server, established; sid:5; rev:1;)
drop tls $HOME_NET any -> $EXTERNAL_NET any (msg:"not matching any TLS allowlisted FQDNs"; flow:to_server, established; sid:6; rev:1;)

12.    選擇建立並新增至政策
**注意:**建立的流程關鍵字通常用於網域規則中,但可能無法顧及所有流程外的封包交換邊緣情況。在使用任何範例規則列出功能之前,請先測試規則,以確認可以如預期般運作。

嚴格評估順序

對於使用嚴格評估順序的政策,請將網域清單規則群組設定為允許對特定網域發出 HTTP 和 HTTPS 要求。

1.    開啟 Amazon VPC 主控台

2.    建立防火牆

3.    在導覽窗格中的網路防火牆之下,選擇防火牆政策

4.    選擇您要編輯的嚴格評估順序防火牆政策。

5.    在可設定狀態規則群組之下,選擇動作,然後選擇建立可設定狀態規則群組

6.    輸入唯一的規則群組名稱。

7.    在容量保留中,輸入清單要包含的預估網域數目。建立規則群組後,就無法變更此值。

8.    在可設定狀態規則群組選項中,選擇網域清單
注意:可設定狀態規則順序無法變更,因為這是繼承政策而來的。規則順序會顯示為嚴格

9.    在網域清單下的網域名稱來源中,輸入您要比對的網域名稱。您可以將網域定義為須完全相符,例如 abc.example.com。也可以將網域定義為萬用字元,例如 .example.com

10.    在來源 IP 類型中,如果來源 IP 與防火牆存在於相同的 VPC 中,請選擇預設。如果來源 IP 存在於遠端 VPC 中,請選擇已定義。選擇已定義時,在來源 IP CIDR 範圍下,輸入想要防火牆檢查的來源子網路。

11.    在通訊協定中,選擇 HTTP 和 HTTPS

12.    在動作中,選擇允許

13.    選擇建立並新增至政策

14.    在導覽窗格中的網路防火牆之下,選擇防火牆政策

15.    選擇要將此規則群組新增到哪一個嚴格順序政策。

16.    在可設定狀態規則評估順序和預設動作中,選擇編輯

17.    在預設動作中,選擇捨棄已建立。然後,選擇儲存

若要手動為 HTTP 和 HTTPS 定義與 Suricata 相容的 IPS 規則,請在規則群組中設定嚴格評估順序與 Suricata 相容的 IPS 規則。

1.    開啟 Amazon VPC 主控台

2.    建立防火牆

3.    在導覽窗格中的網路防火牆之下,選擇防火牆政策

4.    選擇您要編輯的嚴格評估順序防火牆政策。

5.    在可設定狀態規則群組之下,選擇動作,然後選擇建立可設定狀態規則群組

6.    輸入唯一的規則群組名稱。

7.    在容量保留中,輸入清單要包含的預估規則數目。建立規則群組後,就無法變更此值。

8.    在可設定狀態規則群組選項中,選擇與 Suricata 相容的 IPS 規則
注意:可設定狀態規則順序無法變更,因為這是繼承政策而來的。規則順序會顯示為嚴格

9.    (選用) 定義要在您定義的 Suricata 簽章中使用的自訂規則變數。

10.    (選用) 定義要在您定義的 Suricata 簽章中使用的 IP 設定參照。

11.    在與 Suricata 相容的 IPS 規則之下,輸入下列規則。將網域變更為您要定址的特定網域。

pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".amazonaws.com"; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:1; rev:1;)
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; content:"example.com"; startswith; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:2; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".amazonaws.com"; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:3; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"example.com"; startswith; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:4; rev:1;)

12.    選擇建立並新增至政策

13.    在導覽窗格中的網路防火牆之下,選擇防火牆政策

14.    選擇要將此規則群組新增到哪一個嚴格順序政策。

15.    在可設定狀態規則評估順序和預設動作中,選擇編輯

16.    在預設動作中,選擇捨棄已建立。然後,選擇儲存

**注意:**建立的流程關鍵字通常用於網域規則中,但可能無法顧及所有流程外的封包交換邊緣情況。在使用任何範例規則列出功能之前,請先測試規則,以確認可以如預期般運作。

驗證

您可以對指定的網域執行測試命令,以驗證其是否依照您的組態正確處理網域。

在下列範例中,允許網域 https://example.com,而且會將 200 OK 回應傳回給用戶端:

curl -v --silent https://example.com --stderr - | grep 200
< HTTP/2 200

在下列範例中,HTTP 網域 http://www.google.com 遭到封鎖:

curl -v http://www.google.com
* Trying 172.253.115.99:80...
* Connected to www.google.com (http://www.google.com/) (172.253.115.99) port 80 (#0)
> GET / HTTP/1.1
> Host: www.google.com (http://www.google.com/)
> User-Agent: curl/7.79.1
> Accept: /

在下列範例中,HTTPS 網域 https://www.google.com 遭到封鎖:

curl -v https://www.google.com
* Trying 172.253.115.147:443...
* Connected to www.google.com (http://www.google.com/) (172.253.115.147) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
* CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):

相關資訊

網路防火牆的防火牆政策

建立可設定狀態規則群組

網路防火牆的可設定狀態規則範例

可設定狀態規則群組的評估順序

AWS 官方
AWS 官方已更新 1 年前