Come posso configurare insieme i gruppi di regole standard del firewall di rete, le regole dei gruppi di regole dell'elenco di domini?

8 minuti di lettura
0

Voglio configurare le regole del gruppo di regole standard del Firewall di rete AWS e le regole del gruppo di regole degli elenchi di domini in modo che funzionino insieme per controllare il traffico come previsto.

Breve descrizione

È possibile configurare le regole standard dei gruppi di regole per eliminare il traffico TCP stabilito. È quindi possibile configurare le regole del gruppo di regole dell'elenco di domini per consentire i flussi TCP (TLS) inviati ai domini consentiti dal gruppo di regole dell'elenco di domini. A tale scopo, è possibile configurare un gruppo di regole dell'elenco di domini e le regole del gruppo di regole standard con una parola chiave “flow”.

**Nota:**La console Amazon Virtual Private Cloud (Amazon VPC) mostra solo le opzioni di regole configurate in precedenza. Non consente di aggiungere opzioni di regole. Per ulteriori informazioni, consulta Gruppi di regole stateful standard nel firewall di rete AWS.

Puoi utilizzare AWS CloudFormation o un'API per specificare le opzioni per le regole del tuo gruppo di regole standard. L'interfaccia a riga di comando di AWS (AWS CLI) viene utilizzata per gli esempi di questo articolo:

**Nota:**Se ricevi errori durante l'esecuzione dei comandi dell'interfaccia a riga di comando di AWS, assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS.

Risoluzione

Prerequisiti

Prima di configurare le regole del firewall di rete, consulta le seguenti informazioni:

  • Questo articolo presenta un metodo per configurare le regole dei gruppi di regole standard che consente l'inserimento di opzioni di regole. In questo esempio, l'aggiunta di opzioni a una regola di gruppo di regole standard consente di utilizzarla con un gruppo di regole dell'elenco di domini. Questo ti permette di controllare meglio il tuo traffico.
  • Questo articolo utilizza uno dei modelli di applicazione distribuiti. Questo modello protegge il traffico tra una sottorete pubblica del carico di lavoro con un'istanza client Amazon Elastic Compute Cloud (Amazon EC2) e un gateway Internet. L'ordine delle regole della policy del firewall è impostato sull'ordine di azione predefinito.
  • L'istanza Amazon EC2 può inviare traffico sulla porta TCP 443 nel gruppo di sicurezza VPC e nell'ACL di rete.
  • Le regole del firewall utilizzate nell'articolo sono esempi a cui fare riferimento. È necessario assicurarsi che le regole configurate per il firewall siano adatte alle esigenze specifiche e funzionino come previsto.

**Nota:**Negli esempi di codice di questo articolo, sono state utilizzate delle ellissi (...) per abbreviare gli output.

Configurazione comune del gruppo di regole dell'elenco di domini e del gruppo di regole standard senza parola chiave flow

Quando si configura un gruppo di regole dell'elenco di domini e un gruppo di regole standard, la configurazione può essere simile a quella descritta in questo esempio. Se si crea un gruppo di regole per l'elenco di domini e un gruppo di regole standard, è necessario utilizzare una parola chiave flow. Se non si utilizza una parola chiave flow, è possibile che si verifichino problemi come quello descritto in questo esempio.

In questo esempio, la consolle Amazon VPC viene utilizzata per creare un gruppo di regole per l'elenco di domini. La regola consente il traffico HTTPS verso** example.com**.

Domain name source: example.com
Source IPs type: Default
Protocol: HTTPs
Action: Allow

Nota:Un gruppo di regole dell'elenco di domini con l'azione impostata su Consenti genera un'altra regola. La regola è impostata per negare il traffico del tipo di protocollo specificato che non corrisponde alle specifiche del dominio. Per ulteriori informazioni, consulta Filtraggio dei domini.

L'utilizzo della consolle Amazon VPC per creare una configurazione comune di una regola di gruppo di regole standard produce un output simile alla seguente tabella:

ProtocolloSorgenteDestinazionePorta di originePorta di destinazioneDirezioneAzione
TCPQualsiasiQualsiasiQualsiasiQualsiasiAvantiDrop

Quando si invia una richiesta a un dominio consentito per testare la configurazione delle regole, il traffico viene bloccato e viene visualizzato un errore di “connessione scaduta”:

$ curl -kv -so /dev/null https://example.com
* Trying 93.184.216.34:443...
* connect to 93.184.216.34 port 443 failed: Connection timed out
* Failed to connect to example.com port 443 after 129180 ms: Connection timed out
* Closing connection 0

La configurazione causa l'interruzione di tutto il traffico TCP e il timeout della connessione. Ciò include il blocco del traffico basato su TCP verso il dominio consentito example.com.

La regola del gruppo di regole dell'elenco di domini che consente** example.com** su HTTPS non riesce perché il protocollo TCP è il primo protocollo a comparire nel flusso iniziale. Il flusso inizia con l'handshake TCP di livello inferiore e viene valutata la regola di rifiuto. Tuttavia, non esiste ancora un protocollo TLS da abbinare e quindi la regola del drop corrisponde. Ciò causa l'interruzione di tutto il traffico verso** example.com**.

**Nota:**È possibile configurare i livelli di registrazione per il motore stateful del firewall, in modo da accedere a informazioni dettagliate sul traffico filtrato. Per ulteriori informazioni, consulta Registrazione del traffico di rete da Firewall di rete AWS.

Elenco di domini, gruppo di regole e regola del gruppo di regole standard con parola chiave flow

È possibile utilizzare i comandi del Firewall di retedescribe-rule-group e update-rule-group per aggiornare le regole del gruppo di regole standard in modo da includere una parola chiave flow aggiuntiva.

  1. Esegui i comando describe-rule-group sull'oggetto del gruppo di regole stateful originale. È necessario il valore** UpdateToken** per eseguire il comando** update-rule-group**.

**Nota:**Parte dell'output del comando seguente viene utilizzata come modello JSON per altre regolazioni successive.

$ aws network-firewall describe-rule-group --rule-group-arn "arn:aws:network-firewall:us-east-1:XXXXXXXX0575:stateful-rulegroup/stateful-rg-5-tuple" --output json
{
    "UpdateToken": "40b87af5-a20c-4f8c-8afd-6777c81add3c",
    (...)
        "RulesSource": {
            "StatefulRules": [{
                "Action": "DROP",
                "Header": {
                    "Protocol": "TCP",
                    "Source": "Any",
                    "SourcePort": "Any",
                    "Direction": "FORWARD",
                    "Destination": "Any",
                    "DestinationPort": "Any"
                },
                "RuleOptions": [{
                    "Keyword": "sid",
                    "Settings": [
                        "5"
                    ]
                }]
            }]
        }
    (...)
}
  1. Crea un file di regole JSON con una configurazione delle regole modificata. Esegui un comando simile al seguente per verificare il contenuto del file delle regole JSON:
$ cat tcp-drop-rule-updated.json
{
  "RulesSource": {
    "StatefulRules": [
      {
        "Action": "DROP",
        "Header": {
          "Direction": "FORWARD",
          "Protocol": "TCP",
          "Destination": "Any",
          "Source": "Any",
          "DestinationPort": "Any",
          "SourcePort": "Any"
        },
        "RuleOptions": [
          {
            "Keyword": "sid",
            "Settings": [
              "5"
            ]
          },
          {
            "Keyword": "flow",
            "Settings": [
              "established, to_server"
            ]
          }
        ]
      }
    ]
  }
}

In questo esempio, la parola chiave** flow consente il completamento dell'handshake TCP prima di valutare la regola di eliminazione TCP quando si invia una richiesta a example.com**. Dopodiché, l'ordine di azione predefinito della regola ha la precedenza. L'elenco dei domini consente la regola HTTPS per le corrispondenze con** example.com**, consentendo al resto del traffico di passare per quel flusso. Qualsiasi traffico verso domini non consentiti viene bloccato, così come qualsiasi altro traffico TCP stabilito.

  1. Esegui il comando update-rule-group utilizzando il valore updateToken e il file di regole JSON per aggiornare il gruppo di regole standard:
$ aws network-firewall update-rule-group --rule-group-arn "arn:aws:network-firewall:us-east-1:XXXXXXXX0575:stateful-rulegroup/stateful-rg-5-tuple" --update-token 40b87af5-a20c-4f8c-8afd-6777c81add3c --rule-group file://tcp-drop-rule-updated.json --output json

Il risultato è simile a questo:

{
    "UpdateToken": "bf8fe6d4-f13e-406c-90c1-9e3bad2118a7",
    "RuleGroupResponse": {(...)},
        "LastModifiedTime": "2023-02-07T14:12:14.993000+11:00"
    }
}
  1. Esegui il comando describe-rule-group per verificare le modifiche al gruppo di regole Stateful:
$ aws network-firewall describe-rule-group --rule-group-arn "arn:aws:network-firewall:us-east-1:XXXXXXXX0575:stateful-rulegroup/stateful-rg-5-tuple" --output json

Il risultato è simile al seguente messaggio:

{(...)
        "RulesSource": {
            "StatefulRules": [
                {
                    "Action": "DROP",
                    "Header": {
                        "Protocol": "TCP",
                        "Source": "Any",
                        (...)
                    },
                    "RuleOptions": [
                        {
                            "Keyword": "sid",
                            "Settings": [
                                "5"
                            ]
                        },
                        {
                            "Keyword": "flow",
                            "Settings": [
                                "established, to_server"
                           ]
           (...)
        }
    },
    "RuleGroupResponse": {(...)        },
        "LastModifiedTime": "2023-02-07T14:12:14.993000+11:00"
    }
}

Nota:Nell'esempio precedente, “established, to\ _server” riflette la modifica rispetto al comando** update-rule-group**.

  1. Verifica che sia il gruppo di regole dell'elenco di domini che il gruppo di regole standard filtrino correttamente il traffico:
$ curl -kv -so /dev/null https://example.com
*   Trying  93.184.216.34 :443...
* Connected to example.com ( 93.184.216.34 ) port 443 (#0)
(...)
> GET / HTTP/1.1
> Host: example.com
(...)

< HTTP/1.1 200 OK
(...)

Nell'esempio precedente, il risultato mostra che il traffico HTTPS verso il dominio consentito** example.com** ha esito positivo, come configurato.

Nel prossimo esempio, il traffico HTTPS verso domini non consentiti viene bloccato, come previsto:

$ curl -m 5 -kv -so /dev/null https://www.amazon.com
*   Trying  93.184.216.34 :443...
* Connected to www.amazon.com ( 93.184.216.34 ) port 443 (#0)
(...)
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
(...)
* Operation timed out after 5000 milliseconds with 0 out of 0 bytes received
* Closing connection 0

Anche altri tipi di traffico TCP vengono bloccati in base alla configurazione:

$ aws s3 ls --cli-read-timeout 30 --debug
(...)
Read timeout on endpoint URL: "https://s3.amazonaws.com/"

Informazioni correlate

Guida pratica del motore di regole flessibili del Firewall di Rete AWS — Parte 1

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa