Firewall e gateway

Nota

È disponibile il nuovo server manager basato su Cockpit. Vedi Firewall.

NethServer can act as firewall and gateway inside the network where it is installed. All traffic between computers on the local network and the Internet passes through the server that decides how to route packets and what rules to apply.

Funzioni principali:

  • Configurazione di rete avanzata (bridge, bond, alias, ecc…)
  • Supporto WAN multiple (fino a 15)
  • Gestione regole firewall
  • Gestione banda (QoS)
  • Port forwarding
  • Regole per routing traffico su una specifica WAN
  • Intrusion Prevention System (IPS)
  • Deep packet inspection (DPI)

La modalità firewall e gateway viene attivata solo se:

  • il pacchetto nethserver-firewall-base è installato
  • è configurata almeno una scheda di rete con ruolo red

Policy

Ogni interfaccia di rete è identificata da un colore che ne indica il ruolo all’interno del sistema. Vedi Rete.

Quando un pacchetto di rete attraversa una zona del firewall, il sistema valuta una lista di regole per decidere se il traffico debba essere bloccato o permesso. Le policy sono le regole di default che vengono applicate se il traffico di rete non corrisponde a nessun criterio esistente.

Il firewall implementa due policy standard modificabili nella pagina Regole firewall -> Configura:

  • Permesso: tutto il traffico dalla rete green alla red è permesso
  • Bloccato: tutto il traffico dalla rete green alla red è bloccato. Il traffico permesso deve essere esplicitato con apposite regole

Le policy del firewall permettono il traffico fra zone seguendo lo schema qui sotto:

GREEN -> BLUE -> ORANGE -> RED

Il traffico è permesso da sinistra a destra, bloccato da destra a sinistra.

Per cambiare le policy di default è possibile creare delle regole tra zone nella pagina Regole firewall.

Regole

Rules apply to all traffic passing through the firewall. When a network packet moves from one zone to another, the system looks among configured rules. If the packet matches a rule, the rule is applied.

Nota

L’ordine delle regole è molto importante. Il sistema applica sempre la prima regola che corrisponde al traffico in transito.

Una regola si compone di cinque parti principali:

  • Azione: azione da intraprendere quando si applica la regola
  • Origine traffico: indirizzo di origine del traffico, può essere una zona, una rete o un singolo host
  • Destinazione traffico: indirizzo di destinazione del traffico, può essere una zona, una rete o un singolo host
  • Servizio: porta e protocollo che individua un determinato tipo di traffico
  • Condizione temporale: la regola si applica solo nell’intervallo temporale specificato

Le azioni disponibili sono:

  • ACCEPT: accetta il traffico
  • REJECT: blocca il traffico ed informa il mittente che la richiesta effettuata non è permessa
  • DROP: blocca il traffico, i pacchetti vengono scartati e il mittente non viene notificato
  • ROUTE: instrada il traffico al provider WAN specificato. Vedi anche Multi WAN.
  • Priority: marca il traffico come alta/bassa priorità. Vedi Gestione banda.

Nota

If no red interface has been configured, the firewall will not generate rules for blue and orange zones.

REJECT vs DROP

As a general rule, you should use REJECT when you want to inform the source host that the port which it is trying to access is closed. Usually, the rules on the LAN side can use REJECT.

For connections from the Internet, it is recommended to use DROP, in order to minimize the information disclosed to any attacker.

Log

Quando una regola viene applicata, è possibile registrare l’evento nel log abilitando la relativa spunta. Il log del firewall è salvato nel file /var/log/firewall.log.

Deep Packet Inspection (DPI)

La Deep Packet Inspection (DPI) [1] è una tecnica avanzata di filtraggio dei pacchetti di rete.

Attivando il modulo DPI, vengono rese disponibili delle voci aggiuntive per il campo Servizi disponibile nelle schermate di creazione/modifica delle regole firewall. Queste voci sono etichettate come protocollo DPI tra le usuali voci servizio e servizio di rete.

Il modulo DPI utilizza la libreria nDPI <https://www.ntop.org/products/deep-packet-inspection/ndpi/> _ in grado di identificare oltre 250 tipi di traffico di rete suddiviso in protocolli di rete (ad esempio OpenVPN, DNS) e applicazioni Web (ad esempio, Netflix, Spotify).

Le regole del firewall che utilizzano i servizi DPI vengono generate all’interno della tabella mangle, per questo motivo tali regole hanno alcune limitazioni:

  • L’azione reject non è supportata, va utilizzata l’azione drop per bloccare il traffico
  • non è possibile utilizzare gli oggetti tutti (any) e firewall come sorgente o destinazione
  • route to provider X action is not supported: the identification of the protocol often begins after the connection has been already established, so the routing decision can’t be changed

Anche se DPI può identificare il traffico da/per specifici siti web come Facebook, è più adatto per bloccare o priorizzare protocolli come VPN, FTP, ecc. L’accesso ai siti Web deve essere disciplinato utilizzando il Proxy web.

E” opportuno sottolineare che alcuni protocolli DPI (come Amazon) possono corrispondere a grandi CDN, quindi è opportuno non bloccare tali protocolli usando le regole DPI a meno che non si desideri impedire l’accesso a migliaia di siti.

La marcatura DPI viene applicata automaticamente anche al traffico proveniente dal firewall stesso, come il traffico HTTP dal proxy web

L’elenco completo dei protocolli DPI, insieme ai contatori per il traffico corrispondente, è disponibile nella pagina DPI sotto la categoria Stato del menu di sinistra.

[1]Deep Packet Inspection https://en.wikipedia.org/wiki/Deep_packet_inspection

Rules on existing connections

When a new rule is created, as default, it is applied only to new connections. But in some scenarios, the administrator may need to apply the rule also on established connections.

If the option Apply to existing connections is enabled, the rule will be applied to all connections including already established ones.

Nota

This option is available only inside the new Server Manager. See Firewall.

Esempi

Si riportano di seguito alcuni esempi di regole.

Bloccare tutto il traffico DNS proveniente dalla LAN e diretto verso Internet:

  • Azione: REJECT
  • Origine: green
  • Destinazione: red
  • Servizio: DNS (UDP porta 53)

Permettere alla rete ospiti di accedere a tutti i servizi in ascolto sul Server1:

  • Azione: ACCEPT
  • Origine: blue
  • Destinazione: Server1
  • Servizio: -

Multi WAN

The term WAN (Wide Area Network) refers to a public network outside the server, usually connected to the Internet. A provider is the company that actually manages the WAN link.

The system supports up to 15 WAN connections. If the server has two or more configured red interfaces, it is required to correctly fill Link weight, Inbound bandwidth and Outbound bandwidth fields from the Network page.

Ogni provider configurato rappresenta una connessione WAN ed è associato ad una scheda di rete. Ciascun provider definisce un peso: maggiore è il peso maggiore è la priorità della scheda di rete associata al provider stesso.

Il sistema può utilizzare le connessioni WAN in due modalità (pulsante Configura nella pagina Multi WAN):

  • Balance: tutti i provider sono utilizzati contemporaneamente in base al loro peso
  • Active backup: i provider sono utilizzati uno alla vola a partire da quello con il peso più alto. Se il provider in uso perde la connessione, tutto il traffico verrà dirottato sul successivo provider.

Per determinare lo stato di un provider, il sistema invia un pacchetto ICMP (ping) ad intervalli regolari. Se il numero di pacchetti persi supera una determinata soglia, il provider viene disabilitato.

L’amministratore può configurare la sensibilità del monitoraggio attraverso i seguenti parametri:

  • percentuale di pacchetti persi
  • numero consecutivo di pacchetti persi
  • intervallo di invio fra un pacchetto e l’altro

The Firewall rules page allows to route network packets to a given WAN provider, if some criteria are met. See Regole.

Esempio

Dati due provider così configurati:

  • Provider1: interfaccia di rete eth1, peso 100
  • Provider2: interfaccia di rete eth0, peso 50

Se è attiva la modalità bilanciata, il server indirizzerà il doppio delle connessioni sul Provider1 rispetto al Provider2.

Se è attiva la modalità backup, il server indirizzerà tutte le connessioni sul Provider1; solo se il Provider1 diventa inutilizzabile tutte le connessioni saranno indirizzate sul Provider2.

Port forward

The firewall blocks requests from public networks to private ones. For example, if a web server is running inside the LAN, only computers on the local network can access the service in the green zone. Any request made by a user outside the local network is blocked.

Per permettere a qualsiasi utente esterno l’accesso al server web si utilizza il port forward. Il port forward è una regola che consente un accesso limitato alle risorse delle LAN dall’esterno.

Quando si configura il server, è necessario scegliere le porte in ricezione o in ascolto su cui verrà redirezionato il traffico in ingresso nella scheda red. Nel caso di un server web, le porte in ascolto sono solitamente la porta 80 (HTTP) e 443 (HTTPS).

Quando si crea un port forward è necessario specificare almeno i seguenti parametri:

  • la porta di origine
  • la porta di destinazione, che può essere diversa dalla porta di origine
  • l’indirizzo dell’host a cui deve essere instradato il traffico
  • It’s possible to specify a port range using a colon as the separator in the source port field (eg: 1000:2000), in this case, the destination port field must be left empty

Esempio

Dato il seguente scenario:

  • Server interno con IP 192.168.1.10, detto Server1
  • Server web in ascolto sulla porta 80 su Server1
  • Server SSH in ascolto sulla porta 22 su Server1
  • Altri servizi nell’intervallo di porte tra 5000 e 6000 sul Server1

In caso si voglia rendere accessibile dall’esterno il server web direttamente sulla porta 80, si dovrà creare un port forward fatto così:

  • porta origine: 80
  • porta destinazione: 80
  • indirizzo host: 192.168.1.10

All incoming traffic on the firewall’s red interfaces on port 80, will be redirected to port 80 on Server1.

In caso si voglia rendere accessibile dall’esterno il server SSH sulla porta 2222, si dovrà creare un port forward fatto così:

  • porta origine: 2222
  • porta destinazione: 22
  • indirizzo host: 192.168.1.10

All incoming traffic on the firewall’s red interfaces on port 2222, will be redirected to port 22 on Server1.

Nel caso in cui si desideri rendere il server accessibile dall’esterno usare un intervallo di porte tra 5000 e 6000, sarà necessario creare un port forward come questo:

  • porta origine: 5000:6000
  • porta destinazione:
  • indirizzo host: 192.168.1.10

All incoming traffic on the firewall’s red interfaces on the port range between 5000 and 6000 will be redirected to the same ports on Server1.

Limitare accesso

You can restrict access to port forward only from some IP addresses or networks using the field Allow only from.

This configuration is useful when services should be available only from trusted IPs or networks. Some possible values:

  • 10.2.10.4: abilita il port forward solo per il traffico proveniente dall’IP 10.2.10.4
  • 10.2.10.4,10.2.10.5: abilita il port forward solo per il traffico proveniente dagli IP 10.2.10.4 e 10.2.10.5
  • 10.2.10.0/24: abilita il port forward solo per il traffico proveniente dalla rete 10.2.10.0/24
  • !10.2.10.4: abilita il port forward per tutti gli IP tranne 10.2.10.4
  • 192.168.1.0/24!192.168.1.3,192.168.1.9: abilita il port forward per tutta la rete 192.168.1.0/24 ad eccezione degli host 192.168.1.3 e 192.168.1.9

sNAT 1:1

Il NAT uno-a-uno consiste nell’associare un indirizzo IP privato ad un indirizzo IP pubblico per configurare, ad esempio, sistemi che si trovano dietro ad un firewall.

Se si hanno a disposizione diversi IP pubblici e si vuole associare uno di questi ad un determinato host della rete, è possibile farlo, appunto, mediante il NAT 1:1.

Questa funzionalità si applica solo per il traffico generato verso internet dall’host di rete specifico oggetto della regola.

La regola non interessa in alcun modo il traffico genareato da internet verso l’Alias IP, se dovesse essere necessario instradare traffico specifico verso l’host interno andranno definite delle normali regole di port forward.

Se dovesse essere necessario instradare tutto il traffico verso l’host interno (configurazione non raccomandata) andrà definita una regola di port forward per i protocolli TCP & UDP che abbia come porte sorgenti il range 1:65535.

Esempio

In our network we have a host called example_host with IP 192.168.5.122. We have also associated a public IP address 89.95.145.226 as an alias of eth0 interface (RED).

Vogliamo quindi mappare il nostro host interno (host_esempio - 192.168.5.122) con l’IP pubblico 89.95.145.226.

Dal pannello NAT 1:1 andremo a scegliere per l’IP 89.95.145.226 (che compare come campo in sola lettura) il corrispondente host (host_esempio) che scegliamo dal combobox. Così facendo abbiamo configurato il NAT uno-a-uno per il nostro host.

Gestione banda

Traffic shaping allows applying priority rules on network traffic through the firewall. In this way, it is possible to optimize the transmission, control the latency and tune the available bandwidth.

Per abilitare il traffic shaping è necessario conoscere l’esatta quantità di banda disponibile in download e upload. Accedi alla pagina guilabel Network e imposta attentamente i valori di larghezza di banda.

Se la larghezza di banda di download e upload non è impostata per un’interfaccia red, le regole di shaping non saranno abilitate per quell’interfaccia.

Nota

Assicurati di specificare una stima accurata della larghezza di banda sulle interfacce di rete. Per scegliere un’impostazione appropriata, si prega di non fidarsi del valore nominale, ma utilizzare strumenti online per verificare la reale velocità del provider.

In caso di congestione da parte del provider, non c’è nulla da fare per migliorare le prestazioni.

Configuration of traffic shaping is composed of 2 steps:

  • Creazione di classi per gestione della banda
  • assegnazione del traffico di rete a una classe specifica

Classi

Il traffic shaping viene ottenuto controllando il modo in cui la larghezza di banda viene allocata alle classi.

Ogni classe può avere una percentuale riservata. Una percentuale riservata è la larghezza di banda che una classe avrà a disposizione in caso di necessità. La larghezza di banda disponibile è data dalla somma della larghezza di banda non impegnata e della larghezza di banda impegnata di una classe, ma non attualmente utilizzata dalla classe stessa.

Ogni classe può avere anche una banda massima. Se impostato, la classe può superare la banda stabilita,fino al banda massima. Una classe supererà la sua banda riservata solo se è disponibile abbastanza banda.

Traffic shaping classes can be defined under Traffic shaping page. When creating a new class, fill in the following fields:

  • Class name: un nome rappresentativo
  • Min download (%): Download minimo consentito, se vuoto non verrà creato alcun limite
  • Max download (%): Download massimo consentito, se vuoto non verrà creato alcun limite
  • Min upload (%): Upload minimo consentito, se vuoto non verrà creato alcun limite
  • Max upload (%): Upload massimo consentito, se vuoto non verrà creato alcun limite
  • : guilabel:Description: descrizione facoltativa per la classe

Il sistema fornisce due classi preconfigurate:

  • high: traffico ad alta priorità generico, può essere assegnato tipo ad SSH
  • low: traffico a bassa priorità, può essere assegnato a un servizio come scambio di file peer to peer

Il sistema cerca sempre di previnire la saturazione della banda quando ci sta un carico di rete elevato.

Classes will get spare bandwidth proportionally to their committed rate. So if class A has 1Mbit committed rate and class B has 2Mbit committed rate, class B will get twice the spare bandwidth of class A. In all cases, all spare bandwidth will be given to them.

Per più info,vedere [2] .

Oggetti firewall

Gli oggetti firewall sono delle rappresentazioni dei componenti della rete e sono utili per semplificare la creazione di regole.

Esistono 6 tipi di oggetti, 5 di questi sono relativi a sorgenti e destinazioni e sono:

  • Host: representing local and remote computers. Example: web_server, goofy_pc

  • Groups of hosts: representing homogeneous groups of computers. Hosts in a host group should always be reachable using the same interface. Example: servers, router

  • IP ranges: a list of IP addresses expressed as a range. Example: myrange, composed by IPs from 192.168.1.100 to 192.168.1.120

  • CIDR Networks: you can express a CIDR network in order to simplify firewall rules.

    Example 1 : last 14 IP addresses of the network are assigned to servers (192.168.0.240/28). Example 2 : you have multiple green interfaces but you want to create firewall rules only for one green (192.168.2.0/24).

  • Zone: representing networks of hosts, they must be expressed in CIDR notation. Their intended usage is for defining a part of a network with different firewall rules from those of the nominal interface. They are used for very specific needs.

    Nota

    Di default gli host che fanno parte di una Zona non possono fare alcun tipo di traffico, sarà necessario quindi creare tutte le regole necessarie a caratterizzarne il comportamento.

  • Time conditions: can be associated to firewall rules to limit their effectiveness to a given period of time.

    Nota

    Le regole che hanno condizioni temporali sono applicate solo per le nuove connessioni. Esempio: se si stanno bloccando le connessioni HTTP dalle 09:00 alle 18:00, tutte le connessioni stabilite prima delle ore 09:00 saranno permesse fino a quando non termineranno. Qualsiasi nuova connessione effettuata dopo le 09:00 sarà bloccata.

  • Services: a service listening on a host with at least one port and protocol. Example: ssh, https

  • MAC addresses: a host identified by a MAC address. The MAC address must be bound to an existing zone.

Durante la creazione delle regole, è possibile usare i record definiti in DNS e Server DHCP e PXE come oggetti host. Inoltre ogni interfaccia di rete con un ruolo associato è automaticamente elencata fra le zone disponibili.

Binding IP/MAC

Quando il sistema è configurato come server DHCP, il firewall può utilizzare la lista delle DHCP reservation per controllare il traffico generato dagli host presenti nelle reti locali. Se il binding IP/MAC è abilitato, l’amministratore può scegliere quale politica applicare agli host senza DHCP reservation. Solitamente questa funzione è utilizzata per permettere il traffico solo dagli host conosciuti e bloccare tutti gli altri. In questo caso, gli host senza una DHCP reservation non potranno accedere né al firewall né alla rete esterna.

Per abilitare il traffico solo dagli host conosciuti, seguire questi passi:

  1. Creare una DHCP reservation per l’host
  2. Andare sulla pagina Regole firewall e selezionare Configura dal menu
  3. Selezionare Validazione MAC (Binding IP/MAC)
  4. Choose Block traffic as the policy to apply to unregistered hosts

Nota

Remember to create at least one DHCP reservation before enabling the IP/MAC binding mode, otherwise, no hosts will be able to manage the server using the web interface or SSH.

[2]FireQOS tutorial: https://github.com/firehol/firehol/wiki/FireQOS-Tutorial