- Introduzione
- Prerequisiti
- Requisiti
- Componenti utilizzati
- Panoramica
- Obiettivi
- Panoramica dell’elenco di controllo accessi
- Panoramica NAT
- Configura
- Inizia
- Topologia
- Fase 1-Configurare NAT per consentire agli host di uscire a Internet
- Passo 2-Configurare NAT per accedere al server Web da Internet
- Passo 3-Configura ACL
- Passo 4 – Testare la configurazione con la funzione Packet Tracer
- Verifica
- Risoluzione dei problemi
- Conclusione
Introduzione
Questo documento fornisce un esempio semplice e diretto di come configurare Network Address Translation (NAT) e Access Control Lists (ACL) su un firewall ASA per consentire la connettività in uscita e in entrata. Questo documento è stato scritto con un firewall Adaptive Security Appliance (ASA) 5510 che esegue il codice ASA versione 9.1(1), ma questo può facilmente applicarsi a qualsiasi altra piattaforma firewall ASA. Se si utilizza una piattaforma come un ASA 5505, che utilizza VLAN invece di un’interfaccia fisica, è necessario modificare i tipi di interfaccia a seconda dei casi.
Prerequisiti
Requisiti
Non ci sono requisiti specifici per questo documento.
Componenti utilizzati
Le informazioni contenute in questo documento si basano su un firewall ASA 5510 che esegue il codice ASA versione 9.1(1).
Le informazioni contenute in questo documento sono state create dai dispositivi in un ambiente di laboratorio specifico. Tutti i dispositivi utilizzati in questo documento sono stati avviati con una configurazione (predefinita) cancellata. Se la tua rete è attiva, assicurati di aver compreso il potenziale impatto di qualsiasi comando.
Panoramica
Obiettivi
In questa configurazione di esempio, è possibile esaminare la configurazione NAT e ACL necessaria per consentire l’accesso in entrata a un server Web nella DMZ di un firewall ASA e consentire la connettività in uscita da host interni e DMZ. Questo può essere riassunto come due obiettivi:
- Consentire host all’interno e DMZ connettività in uscita a Internet.
- Consente agli host su Internet di accedere a un server Web sulla DMZ con un indirizzo IP di 192.168.1.100.
Prima di arrivare ai passaggi che devono essere completati per raggiungere questi due obiettivi, questo documento ripercorre brevemente il modo in cui ACLs e NAT funzionano sulle versioni più recenti del codice ASA (versione 8.3 e successive).
Panoramica dell’elenco di controllo accessi
Gli elenchi di controllo accessi (Access-list o ACL in breve) sono il metodo con cui il firewall ASA determina se il traffico è consentito o negato. Per impostazione predefinita, il traffico che passa da un livello di sicurezza inferiore a quello superiore viene negato. Questo può essere sovrascritto da un ACL applicato a quell’interfaccia di sicurezza inferiore. Anche l’ASA, per impostazione predefinita, consente il traffico da interfacce di sicurezza superiori a quelle inferiori. Questo comportamento può anche essere sovrascritto con un ACL.
Nelle versioni precedenti del codice ASA (8.2 e precedenti), l’ASA confrontava una connessione o un pacchetto in entrata con l’ACL su un’interfaccia senza prima tradurlo. In altre parole, l’ACL doveva consentire il pacchetto come se si dovesse catturare quel pacchetto sull’interfaccia. Nella versione 8.3 e codice successivo, l’ASA untranslates quel pacchetto prima che controlli l’interfaccia ACL. Ciò significa che per il codice 8.3 e successivi, e questo documento, è consentito il traffico verso l’IP reale dell’host e non l’IP tradotto dell’host.
Consultare la sezione Configurazione delle regole di accesso del libro 2: Cisco ASA Series Firewall CLI Configuration Guide, 9.1 per ulteriori informazioni sugli ACL.
Panoramica NAT
NAT sull’ASA nella versione 8.3 e successive è suddiviso in due tipi noti come Auto NAT (Object NAT) e Manual NAT (Twice NAT). Il primo dei due, Object NAT, è configurato all’interno della definizione di un oggetto di rete. Un esempio di questo è fornito più avanti in questo documento. Un vantaggio principale di questo metodo NAT è che l’ASA ordina automaticamente le regole per l’elaborazione al fine di evitare conflitti. Questa è la forma più semplice di NAT, ma con quella facilità arriva una limitazione nella granularità della configurazione. Ad esempio, non è possibile prendere una decisione di traduzione in base alla destinazione nel pacchetto come è possibile con il secondo tipo di NAT, Nat manuale. Il NAT manuale è più robusto nella sua granularità, ma richiede che le linee siano configurate nell’ordine corretto affinch possa ottenere il comportamento corretto. Ciò complica questo tipo NAT e, di conseguenza, non verrà utilizzato in questo esempio di configurazione.
Consultare la sezione Informazioni su NAT del libro 2: Cisco ASA Series Firewall CLI Configuration Guide, 9.1 per ulteriori informazioni su NAT.
Configura
Inizia
La configurazione di base di ASA è costituita da tre interfacce collegate a tre segmenti di rete. Il segmento di rete ISP è collegato all’interfaccia Ethernet0/0 ed etichettato all’esterno con un livello di sicurezza pari a 0. La rete interna è stata collegata a Ethernet0 / 1 ed etichettata come inside con un livello di sicurezza di 100. Il segmento DMZ, dove risiede il server web, è collegato a Ethernet0 / 2 ed etichettato come DMZ con un livello di sicurezza di 50.
La configurazione dell’interfaccia e gli indirizzi IP per l’esempio sono visti qui:
interface Ethernet0/0
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Ethernet0/1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Ethernet0/2
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1
Qui puoi vedere che l’interfaccia interna dell’ASA è impostata con l’indirizzo IP di 192.168.0.1 ed è il gateway predefinito per gli host interni. L’interfaccia esterna dell’ASA è configurata con un indirizzo IP ottenuto dall’ISP. C’è un percorso predefinito in atto, che imposta il next-hop per essere il gateway ISP. Se si utilizza DHCP questo viene fornito automaticamente. L’interfaccia DMZ è configurata con l’indirizzo IP di 192.168.1.1 ed è il gateway predefinito per gli host sul segmento di rete DMZ.
Topologia
Ecco uno sguardo visivo su come questo è cablato e configurato:
Fase 1-Configurare NAT per consentire agli host di uscire a Internet
Per questo esempio NAT oggetto, noto anche come AutoNAT, viene utilizzato. La prima cosa da configurare sono le regole NAT che consentono agli host all’interno e ai segmenti DMZ di connettersi a Internet. Poiché questi host utilizzano indirizzi IP privati, è necessario tradurli in qualcosa che è instradabile su Internet. In questo caso, traduci gli indirizzi in modo che assomiglino all’indirizzo IP dell’interfaccia esterna dell’ASA. Se il tuo IP esterno cambia frequentemente (forse a causa di DHCP) questo è il modo più semplice per configurarlo.
Per configurare questo NAT, è necessario creare un oggetto di rete che rappresenti la sottorete interna e uno che rappresenti la sottorete DMZ. In ciascuno di questi oggetti, configurare una regola nat dinamica che porterà la traduzione degli indirizzi (PAT) di questi client mentre passano dalle rispettive interfacce all’interfaccia esterna.
Questa configurazione è simile a questa:
object network inside-subnet
subnet 192.168.0.0 255.255.255.0
nat (inside,outside) dynamic interface
!
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
nat (dmz,outside) dynamic interface
Se si guarda la configurazione in esecuzione a questo punto (con l’output del comando show run), si vedrà che la definizione dell’oggetto è divisa in due parti dell’output. La prima parte indica solo ciò che è nell’oggetto (host/sottorete, indirizzo IP e così via), mentre la seconda sezione mostra che la regola NAT è legata a quell’oggetto. Se si prende la prima voce nell’output precedente:
Quando gli host che corrispondono alla sottorete 192.168.0.0 / 24 attraversano dall’interfaccia interna all’interfaccia esterna, si desidera tradurli dinamicamente nell’interfaccia esterna.
Passo 2-Configurare NAT per accedere al server Web da Internet
Ora che gli host all’interno e le interfacce DMZ possono uscire a Internet, è necessario modificare la configurazione in modo che gli utenti su Internet possano accedere al nostro server Web sulla porta TCP 80. In questo esempio, la configurazione è in modo che le persone su Internet possano connettersi a un altro indirizzo IP fornito dall’ISP, un indirizzo IP aggiuntivo che possediamo. Per questo esempio, utilizzare 198.51.100.101. Con questa configurazione, gli utenti su Internet saranno in grado di raggiungere il server Web DMZ accedendo a 198.51.100.101 sulla porta TCP 80. Utilizzare Object NAT per questa attività e l’ASA tradurrà la porta TCP 80 sul server Web (192.168.1.100) in modo che assomigli a 198.51.100.101 sulla porta TCP 80 all’esterno. Analogamente a quanto fatto in precedenza, definire un oggetto e definire regole di traduzione per quell’oggetto. Inoltre, definisci un secondo oggetto per rappresentare l’IP in cui tradurrai questo host.
Questa configurazione è simile a questa:
object network webserver-external-ip
host 198.51.100.101
!
object network webserver
host 192.168.1.100
nat (dmz,outside) static webserver-external-ip service tcp www www
Giusto per riassumere cosa significa questa regola NAT in questo esempio:
Quando un host che corrisponde all’indirizzo IP 192.168.1.100 sui segmenti DMZ stabilisce una connessione proveniente dalla porta TCP 80 (www) e quella connessione esce dall’interfaccia esterna, si desidera tradurre che sia la porta TCP 80 (www) sull’interfaccia esterna e tradurre quell’indirizzo IP in 198.51.100.101.
Sembra un po ‘ strano… “proviene dalla porta TCP 80 (www)”, ma il traffico web è destinato alla porta 80. È importante capire che queste regole NAT sono bidirezionali in natura. Di conseguenza, è possibile capovolgere la formulazione in giro per riformulare questa frase. Il risultato ha molto più senso:
Quando gli host esterni stabiliscono una connessione a 198.51.100.101 sulla porta TCP di destinazione 80 (www), si tradurrà l’indirizzo IP di destinazione in 192.168.1.100 e la porta di destinazione sarà la porta TCP 80 (www) e la invierà alla DMZ.
Questo ha più senso quando formulato in questo modo. Successivamente, è necessario impostare gli ACL.
Passo 3-Configura ACL
NAT è configurato e la fine di questa configurazione è vicina. Ricorda, le ACL sull’ASA consentono di ignorare il comportamento di sicurezza predefinito che è il seguente:
- Il traffico che passa da un’interfaccia di sicurezza inferiore viene negato quando passa a un’interfaccia di sicurezza superiore.
- Il traffico che passa da un’interfaccia di sicurezza superiore è consentito quando passa a un’interfaccia di sicurezza inferiore.
Quindi senza l’aggiunta di ACL alla configurazione, questo traffico nell’esempio funziona:
- Gli host all’interno (livello di sicurezza 100) possono connettersi agli host sulla DMZ (livello di sicurezza 50).
- Gli host all’interno (livello di sicurezza 100) possono connettersi agli host all’esterno (livello di sicurezza 0).
- Gli host sulla DMZ (livello di sicurezza 50) possono connettersi agli host all’esterno (livello di sicurezza 0).
Tuttavia, questo traffico è negato:
- Gli host esterni (livello di sicurezza 0) non possono connettersi agli host interni (livello di sicurezza 100).
- Gli host esterni (livello di sicurezza 0) non possono connettersi agli host della DMZ (livello di sicurezza 50).
- Gli host sulla DMZ (livello di sicurezza 50) non possono connettersi agli host all’interno (livello di sicurezza 100).
Poiché il traffico dall’esterno alla rete DMZ viene negato dall’ASA con la sua configurazione corrente, gli utenti su Internet non possono raggiungere il server Web nonostante la configurazione NAT nel passaggio 2. È necessario consentire esplicitamente questo traffico. Nel codice 8.3 e successivi è necessario utilizzare l’IP reale dell’host nell’ACL e non l’IP tradotto. Ciò significa che la configurazione deve consentire il traffico destinato a 192.168.1.100 e NON il traffico destinato a 198.51.100.101 sulla porta 80. Per semplicità, gli oggetti definiti nel passaggio 2 verranno utilizzati anche per questo ACL. Una volta creato l’ACL, è necessario applicarlo in entrata sull’interfaccia esterna.
Ecco come sono questi comandi di configurazione:
access-list outside_acl extended permit tcp any object webserver eq www
!
access-group outside_acl in interface outside
La riga access-list indica:
Consente il traffico da qualsiasi (dove) all’host rappresentato dal server Web dell’oggetto (192.168.1.100) sulla porta 80.
È importante che la configurazione usi la parola chiave any qui. Poiché l’indirizzo IP di origine dei client non è noto come raggiunge il tuo sito web, specificare qualsiasi significato ‘Qualsiasi indirizzo IP’.
Che dire del traffico dal segmento DMZ destinato agli host sul segmento di rete interna? Ad esempio, un server sulla rete interna a cui gli host sulla DMZ devono connettersi. Come può l’ASA consentire solo quel traffico specifico destinato al server interno e bloccare tutto il resto destinato al segmento interno dalla DMZ?
In questo esempio si presume che ci sia un server DNS sulla rete interna all’indirizzo IP 192.168.0.53 che gli host sulla DMZ devono accedere per la risoluzione DNS. Si crea l’ACL necessario e lo si applica all’interfaccia DMZ in modo che l’ASA possa ignorare il comportamento di sicurezza predefinito, menzionato in precedenza, per il traffico che entra in tale interfaccia.
Ecco come sono questi comandi di configurazione:
object network dns-server
host 192.168.0.53
!
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
access-group dmz_acl in interface dmz
L’ACL è più complesso che semplicemente permettendo che il traffico al server DNS sulla porta UDP 53. Se tutto quello che abbiamo fatto è che prima linea ‘permesso’, quindi tutto il traffico sarebbe bloccato dalla DMZ agli host su Internet. Le ACL hanno un implicito ‘nega ip any any’ alla fine dell’ACL. Di conseguenza, i tuoi host DMZ non sarebbero in grado di uscire su Internet. Anche se il traffico dalla DMZ all’esterno è consentito per impostazione predefinita, con l’applicazione di un ACL all’interfaccia DMZ, tali comportamenti di sicurezza predefiniti per l’interfaccia DMZ non sono più in vigore e devi consentire esplicitamente il traffico nell’interfaccia ACL.
Passo 4 – Testare la configurazione con la funzione Packet Tracer
Ora che la configurazione è completata, è necessario testarlo per assicurarsi che funzioni. Il metodo più semplice è usare gli host effettivi (se questa è la tua rete). Tuttavia, nell’interesse di testarlo dalla CLI e di esplorare ulteriormente alcuni degli strumenti dell’ASA, utilizzare il packet tracer per testare e potenzialmente eseguire il debug di eventuali problemi incontrati.
Packet tracer funziona simulando un pacchetto basato su una serie di parametri e iniettando quel pacchetto nel percorso dati dell’interfaccia, in modo simile al modo in cui un pacchetto reale sarebbe se fosse prelevato dal filo. Questo pacchetto viene seguito attraverso la miriade di controlli e processi che vengono eseguiti mentre passa attraverso il firewall e packet tracer rileva il risultato. Simula l’host interno che esce su un host su Internet. Il comando seguente indica al firewall di:
Simula un pacchetto TCP proveniente dall’interfaccia interna dall’indirizzo IP 192.168.0.125 sulla porta sorgente 12345 destinato ad un indirizzo IP di 203.0.113.1 sulla porta 80.
ciscoasa# packet-tracer input inside tcp 192.168.0.125 12345 203.0.113.1 80
Phase: 1
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
MAC Access list
Phase: 2
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:Additional Information:
in 0.0.0.0 0.0.0.0 outsidePhase: 3
Type: NAT
Subtype:
Result: ALLOW
Config:
object network inside-subnet
nat (inside,outside) dynamic interface
Additional Information:
Dynamic translate 192.168.0.125/12345 to 198.51.100.100/12345
Phase: 4
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 5
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 6
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 7
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 1, packet dispatched to next module
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow
Il risultato finale è che il traffico è consentito, chesignifica che ha superato tutti i controlli NAT e ACL nella configurazione ed è stata inviata l’interfaccia di uscita, all’esterno. Si noti che il pacchetto è stato tradotto in Fase 3 e i dettagli di quella fase mostrano quale regola viene colpita. L’ospite 192.168.0.125 è tradotto dinamicamente a 198.51.100.100 secondo la configurazione.
Ora eseguilo per una connessione da Internet al server Web. Ricorda, gli host su Internet accederanno al server Web collegandosi a 198.51.100.101 sull’interfaccia esterna. Di nuovo, questo comando successivo si traduce in:
Simulare un pacchetto TCP proveniente dall’interfaccia esterna dall’indirizzo IP 192.0.2.123 sulla porta sorgente 12345 destinato a un indirizzo IP di 198.51.100.101 sulla porta 80.
ciscoasa# packet-tracer input outside tcp 192.0.2.123 12345 198.51.100.101 80
Phase: 1
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
Additional Information:
NAT divert to egress interface dmz
Untranslate 198.51.100.101/80 to 192.168.1.100/80
Phase: 2
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group outside_acl in interface outside
access-list outside_acl extended permit tcp any object webserver eq www
Additional Information:
Phase: 3
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 4
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 5
Type: NAT
Subtype: rpf-check
Result: ALLOW
Config:
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
Additional Information:
Phase: 6
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 7
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 3, packet dispatched to next module
Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: dmz
output-status: up
output-line-status: up
Action: allow
Ancora una volta, il risultato è che il pacchetto è consentito. Gli ACL controllano, la configurazione sembra corretta e gli utenti su Internet (all’esterno) dovrebbero essere in grado di accedere a quel server Web con l’IP esterno.
Verifica
Le procedure di verifica sono incluse nel passaggio 4 – Test della configurazione con la funzione Packet Tracer.
Risoluzione dei problemi
Al momento non sono disponibili informazioni specifiche per la risoluzione dei problemi per questa configurazione.
Conclusione
La configurazione di un ASA per fare NAT di base non è così scoraggiante di un compito. L’esempio in questo documento può essere adattato allo scenario specifico se si modificano gli indirizzi IP e le porte utilizzate nelle configurazioni di esempio. La configurazione finale ASA per questo, quando combinato, sembra simile a questo per un ASA 5510:
ASA Version 9.1(1)
!
interface Ethernet0/0
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Ethernet0/1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Ethernet0/2
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
object network inside-subnet
subnet 192.168.0.0 255.255.255.0
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
object network webserver
host 192.168.1.100
object network webserver-external-ip
host 198.51.100.101
object network dns-server
host 192.168.0.53
!
access-list outside_acl extended permit tcp any object webserver eq www
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
object network inside-subnet
nat (inside,outside) dynamic interface
object network dmz-subnet
nat (dmz,outside) dynamic interface
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
access-group outside_acl in interface outside
access-group dmz_acl in interface dmz
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1 1
Su un ASA 5505, ad esempio, con le interfacce collegate come mostrato in precedenza (esterno collegato a Ethernet0 / 0, interno collegato a Ethernet0/1 e DMZ collegato a Ethernet0/2):
ASA Version 9.1(1)
!
interface Ethernet0/0
description Connected to Outside Segment
switchport access vlan 2
!
interface Ethernet0/1
description Connected to Inside Segment
switchport access vlan 1
!
interface Ethernet0/2
description Connected to DMZ Segment
switchport access vlan 3
!
interface Vlan2
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Vlan1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Vlan3
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
object network inside-subnet
subnet 192.168.0.0 255.255.255.0
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
object network webserver
host 192.168.1.100
object network webserver-external-ip
host 198.51.100.101
object network dns-server
host 192.168.0.53
!
access-list outside_acl extended permit tcp any object webserver eq www
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
object network inside-subnet
nat (inside,outside) dynamic interface
object network dmz-subnet
nat (dmz,outside) dynamic interface
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
access-group outside_acl in interface outside
access-group dmz_acl in interface dmz
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1 1