Tutorial Nftables

Tutorial Nftables

Questo tutorial spiega come lavorare con il firewall Nftables Linux. Questo contenuto è ottimizzato sia per gli utenti esperti di Linux che.

Nftables è un componente del kernel Linux che fornisce funzionalità di firewall. È la sostituzione di iptables.

Dopo aver letto questo tutorial, capirai le regole dei Nftables e sarai in grado di creare il tuo firewall. Non hai bisogno di conoscenze precedenti su iptables.

Tutti gli esempi in questo tutorial contengono schermate, rendendo facile per tutti gli utenti di Linux, indipendentemente dal loro livello di conoscenza, capirli e implementarli.

Iniziare con NfTables

Prima di iniziare, creare e aprire un file utilizzando un editor di testo come Nano o VI per iniziare a digitare le prime regole NFTables in base al seguente esempio. Non copiare incolla; Digita tutto.

nano firewall.nft

L'esempio in questo tutorial è piuttosto semplice e mostra un firewall restrittivo in cui tutto il traffico IPv4 viene eliminato ad eccezione del loopback e delle porte specifiche.

Nella schermata precedente, ho usato la prima riga per definire la mia rete locale (192.168.0.0/16) come LinuxHintNet.

Define LinuxHintNet = 192.168.0.0/16

Nella seconda riga, definisco un gruppo di porte (80.443 e 22). Chiamo questo gruppo consentire sport perché ho intenzione di consentire il traffico attraverso di loro. Ammettire è un nome arbitrario.

Define abilitPorts = 80,443,53,22

Quindi, aggiungo una tabella, che è un contenitore o un gruppo di catene e regole; Entrambi sono spiegati di seguito. Le tabelle aiutano le regole e le catene da organizzare. Ho chiamato la tabella nell'esempio "restrittivo" perché contiene una politica restrittiva e il suo nome è arbitrario.

L'IP prima del nome della tabella indica che le regole della tabella Que verranno applicate solo al traffico IPv4. È possibile utilizzare INET invece dell'IP per applicare le regole ai protocolli IPv4 e IPv6. Oppure puoi sostituire IP con IP6 solo per IPv6.

Ricorda, restrittivo è un nome che ho definito arbitrariamente. Puoi nominare la tabella come vuoi.

Nel mio caso, applico regole solo a IPv4, come mostrato di seguito.

Aggiungi la tabella IP restrittiva

Per entrambi i protocolli, utilizzare quanto segue:

Aggiungi la tabella Inet restrittiva

Quindi aggiungiamo la prima catena di base, che chiamo arbitrariamente in arrivo perché è correlato al traffico in arrivo. Tuttavia, puoi nominarlo come vuoi.

La seguente catena di base rilascia tutto il traffico in arrivo per impostazione predefinita:

  • Aggiungi catena IP restrittiva in arrivo: questa sezione aggiunge la catena in arrivo restrittiva da applicare a IPv4
  • Filtro tipo: questo definisce il tipo di catena come filtro poiché filtrerà il traffico. Altri possibili tipi di catene sono il percorso o il NAT
  • Ingresso gancio: si riferisce ai pacchetti in arrivo
  • Priorità 0: la priorità della catena di base definisce l'ordine delle catene di base
  • Drop drop: la politica di caduta, per impostazione predefinita, scarta tutti i pacchetti
Aggiungi catena IP restrittiva in entrata Tipo Filter Hook Input Priority 0; Drop Political;

Come puoi vedere nella seguente screenshot, ho creato altre due catene di base simili alle precedenti, reindirizzati restrittive e restrittivi in ​​uscita. La differenza è il gancio definito per ciascuno (gancio in avanti e output del gancio). Spiegarli è ripetitivo.

Dopo le tre catene di base, possiamo continuare con le regole NFTables per consentire il traffico del loopback.

Aggiungo le seguenti righe per il traffico in entrata e in uscita sull'interfaccia Loopback.

Aggiungi regola iifname in arrivo restrittivo iifname
Aggiungi regola IP IP restrittivo OIFName LO Counter Accetta

Ora, aggiungo quattro regole che accettano il traffico TCP e UDP in uscita e in arrivo attraverso tutte le porte incluse nella variabile $ abilitports definita all'inizio del file.

Aggiungi regola IP IP restrittivo TCP Sport $ Accetta
Aggiungi regola IP IP restrittivo TCP Dport $ Accetta
Aggiungi regola IP IP restrittivo UDP Sport in arrivo $ Accettazione
Aggiungi regola IP IP restrittivo UDP DPORT $ Accetta

Puoi vedere lo script completo di seguito.

Una volta che hai finito di digitare tavoli, catene e regole, chiudere il documento e salvare le modifiche.

# Nelle prime due righe, definisco la mia rete locale (LinuxHintNet) e un set di porte (80,
#443,22) per consentire il traffico attraverso di loro nelle regole seguenti.
Define LinuxHintNet = 192.168.0.0/16
Define abilitPorts = 80,443,53,22
#Dichiaro una nuova tabella che conterrà catene e regole. Chiamo questa tabella "restrittiva".
#L'IT "IP" applica solo le regole per IPv4. Per IPv6, utilizzare solo "IP6" e utilizzare "Inet" per entrambi i protocolli.
Aggiungi la tabella IP restrittiva
# Dopo aver creato la tabella, creo tre catene, in arrivo, reindirizzamento ed estroverso,
#I loro nomi sono arbitrari. Tutti lasciano cadere il traffico in entrata, in uscita e inoltra per impostazione predefinita.
Aggiungi catena IP restrittiva in entrata Tipo Filter Hook Input Priority 0; Drop Political;
Aggiungi reindirizzamento restrittivo IP a catena Tipo Filter Hook Priority 0; Drop Political;
Aggiungi catena IP restrittiva restrittiva in uscita Tipo Filter Hook Output Priority 0; Drop Political;
# Implego due regole per consentire il traffico del loopback.
Aggiungi regola iifname in arrivo restrittivo iifname
Aggiungi regola IP IP restrittivo OIFName LO Counter Accetta
# Impiego regole per consentire il traffico attraverso le porte definite nella variabile di Autori.
Aggiungi regola IP IP restrittivo TCP Sport $ Accetta
Aggiungi regola IP IP restrittivo TCP Dport $ Accetta
Aggiungi regola IP IP restrittivo UDP Sport in arrivo $ Accettazione
Aggiungi regola IP IP restrittivo UDP DPORT $ Accetta

Per attivare il firewall, eseguire il comando seguente:

SUDO NFT -F FIREWALL.nft

Puoi controllare le tue regole eseguendo il seguente comando:

SUDO NFT Elenco Regolet

Questo è un firewall restrittivo di base.

Conclusione:

Come puoi vedere, NfTables è molto più amichevole degli iptables e gli utenti possono imparare più velocemente degli iptables. Poiché iptables viene interrotto e molte distribuzioni utilizzano NFTables come firewall predefinito, incluso Debian. Gli utenti esperti di iptables potrebbero voler guardare lo strumento iptables-nftables-compat, che traduce iptables in nftables. Questo può aiutarli a capire le differenze.

Agli utenti professionisti come gli amministratori di sistema tendono a continuare a lavorare con iptables; Evita di ignorare NfTables per risparmiare tempo migliorando il filtro. Spero che questo articolo sia stato abbastanza semplice da convincerti a provare NfTables.