Port forward#

Il firewall impedisce che le richieste provenienti da reti pubbliche accedano a quelle private. Ad esempio, se è presente un server web che opera all’interno della LAN, solo i computer della rete locale possono accedere a questo servizio. Qualsiasi tentativo effettuato da utenti esterni, al di fuori della rete locale, viene negato.

Un port forward, noto anche come port redirect o port forwarding, è una tecnica di rete utilizzata nei firewall per reindirizzare traffico di rete specifico da una combinazione di indirizzo IP e numero di porta a un’altra. Viene tipicamente impiegata per consentire agli utenti esterni di accedere a servizi o applicazioni ospitati su dispositivi all’interno di una rete locale privata.

Per i server web, le porte di ascolto comuni includono la porta 80 (HTTP) e la porta 443 (HTTPS). Quando si crea un port forwarding, è necessario specificare determinati parametri:

  • Nome: assegnare un nome a una regola di port forwarding è utile per riferimenti e gestione futuri. Fornendo un nome descrittivo e significativo, gli amministratori di rete possono identificare facilmente lo scopo e il contesto di ogni port forwarding.

  • Tipo di traffico: Specifica a quale traffico si applica la regola.

    • Seleziona protocolli: la regola si applica solo ai protocolli selezionati. I protocolli devono essere selezionati nel campo seguente.

    • Tutto il traffico: la regola si applica a tutto il traffico in ingresso indipendentemente dal protocollo, che viene inoltrato all’indirizzo IP di destinazione configurato senza ulteriori filtri. Quando questa opzione è selezionata, il modulo viene ridotto e deve essere configurato solo l’indirizzo IP di destinazione. Utilizzare questa impostazione con cautela, poiché potrebbe esporre il sistema a traffico indesiderato o potenzialmente dannoso.

  • Protocolli: specifica il protocollo come TCP, UDP, UDPLITE, ICMP, ESP, AH, SCTP, GRE. È necessario specificare almeno un protocollo.

  • Porta sorgente: la porta da cui ha origine la richiesta. Si noti che non tutti i protocolli richiedono una porta. Ad esempio, protocolli come GRE non utilizzano porte.

  • Indirizzo di destinazione: specifica l’host interno verso cui il traffico deve essere reindirizzato. Questo può essere:

    • un indirizzo IP specifico

    • un oggetto firewall: un host definito da un insieme di host (eccetto insiemi di host che contengono intervalli IP o oggetti annidati), una prenotazione DHCP, un record DNS o un account OpenVPN con prenotazione IP

    • il firewall stesso

  • Porta di destinazione: la porta a cui è diretto il traffico; questa può differire dalla porta di origine.

Per impostazione predefinita, tutti i port forwarding sono accessibili solo dagli host all’interno della WAN. Fare riferimento alla Hairpin NAT per le istruzioni su come modificare questo comportamento predefinito.

Per ogni inoltro di porta è inoltre possibile configurare i seguenti aspetti:

  • Associazione a un IP pubblico specifico: gli inoltri di porta possono essere associati a un indirizzo IP pubblico specifico utilizzando il campo IP WAN. Questo significa che, se il router/firewall dispone di più indirizzi IP pubblici, è possibile assegnare un inoltro di porta a un determinato IP. Questa funzionalità è utile in presenza di configurazioni di rete complesse, garantendo che il traffico indirizzato a uno specifico IP pubblico venga inoltrato correttamente al server interno.

  • Restrizione di accesso: Gli inoltri di porta possono essere limitati a sorgenti specifiche per aumentare la sicurezza. Questo può essere fatto utilizzando il campo Limita accesso a. Il campo accetta indirizzi IP, blocchi CIDR o un oggetto. Sono supportati tutti gli oggetti, tranne i set di host che contengono intervalli di IP o oggetti annidati.

  • Abilitazione del logging: i port forward possono essere configurati per registrare il traffico in ingresso per ogni regola. Abilitando l’opzione Log, l’amministratore di rete può tenere traccia del traffico che passa attraverso il port forward, consentendo il monitoraggio e l’analisi. Per impostazione predefinita, la registrazione è limitata a 1 voce al secondo. Per modificare questo limite, consultare la sezione Limiti di logging.

Hairpin NAT#

Hairpin NAT, noto anche come NAT loopback o NAT reflection, è una tecnica utilizzata nel networking in cui host interni accedono a un server situato all’interno della stessa rete locale utilizzando l’indirizzo IP esterno del router o del firewall. In altre parole, quando dispositivi interni tentano di connettersi a un server utilizzando l’indirizzo IP pubblico, hairpin NAT garantisce che il traffico venga instradato internamente senza uscire su internet e poi rientrare nella rete locale.

Per abilitare l’hairpin, attivare l’opzione Hairpin NAT e selezionare una o più zone in cui il NAT loopback deve essere abilitato.

Hairpin NAT per le zone VPN#

Per utilizzare Hairpin NAT con zone VPN come ipsec, openvpn e rwopenvpn, è necessaria una configurazione aggiuntiva. È necessario dichiarare esplicitamente la subnet utilizzata dalla VPN; in caso contrario, Hairpin NAT non funzionerà per i client connessi tramite VPN.

Questa configurazione può essere eseguita tramite la riga di comando. Per prima cosa, identificare il riferimento interno per la zona, quindi aggiungere la rete desiderata, confermare le modifiche e riavviare il servizio.

Assicurarsi che le subnet siano assegnate alle zone corrette:

  • ipsec: tunnel IPsec

  • openvpn: tunnel OpenVPN

  • rwopenvpn: OpenVPN Road Warrior

Se sono presenti più tunnel o reti, tutti devono essere inclusi nelle rispettive zone.

Come dichiarare una subnet per una zona VPN#

Per dichiarare la rete OpenVPN Road Warrior, è possibile utilizzare la seguente sequenza di comandi di esempio:

  1. Identificare il riferimento interno per la zona rwopenvpn:

    uci show firewall | grep ".name='rwopenvpn'"
    

    Esempio di output:

    firewall.ns_49d9f400.name='rwopenvpn'
    
  2. Impostare la rete desiderata (in questo caso, 10.88.88.0/24) per la zona rwopenvpn:

    uci add_list firewall.ns_49d9f400.subnet=10.88.88.0/24
    
  3. Eseguire il commit delle modifiche e riavviare il servizio firewall:

    uci commit firewall
    /etc/init.d/firewall restart
    

Assicurarsi di sostituire la subnet di rete con quella corretta per la propria configurazione VPN specifica.

  1. Verificare la rete aggiunta:

    uci show firewall | grep subnet
    

    Esempio di output:

    firewall.ns_49d9f400.subnet='10.88.88.0/24'
    

Aggiungere o rimuovere più subnet alla zona VPN#

Se è già stata impostata una subnet per una zona VPN e si desidera aggiungere un’altra subnet (ad esempio 10.33.33.0/24), utilizzare il seguente comando (stesso riferimento interno dell’esempio precedente):

uci add_list firewall.ns_49d9f400.subnet=10.33.33.0/24

Se sono già state impostate più subnet per una zona VPN e si desidera rimuovere una subnet (ad esempio 10.33.33/24), utilizzare il seguente comando (stesso riferimento interno dell’esempio precedente):

uci del_list firewall.ns_49d9f400.subnet=10.33.33.0/24

Assicurarsi di eseguire il commit e riavviare il servizio firewall dopo le modifiche.