Link alla documentazione ufficiale e raccomandata esistono sul sito Web Netfilter.
Questo non è un nuovo argomento, le risorse sono illimitate .
La maggior parte dei comandi di base sono abbastanza intuitivi e possono essere facilmente riferiti alla manpage .
netfilter, che è la tecnologia a livello di kernel che abilita il filtraggio dei pacchetti, è piuttosto avanzato. Esistono tabelle aggiuntive che possono manipolare i pacchetti, tradurre i pacchetti e influire in altro modo sul routing. L' iptables
utilità è lo strumento userland per interagire con netfilter. Se desideri conoscere le funzionalità avanzate, ti suggerisco di fare riferimento alla documentazione di cui sopra. Per un'introduzione alla funzionalità di base, leggi di più.
Per elencare tutte le regole esistenti:
iptables -L -n
-n
impedisce a iptables di risolvere ips, producendo un output più veloce.
La tabella predefinita è la filter
tabella, che viene utilizzata per applicare le regole del firewall di base alle tre catene. Le tre catene predefinite della filter
tabella sono INPUT
, OUTPUT
e FORWARD
.
Le catene sono ampiamente autoesplicative. La catena INPUT influenza i pacchetti in arrivo, la catena OUTPUT influenza i pacchetti generati localmente e infine FORWARD per tutti i pacchetti che attraversano il sistema.
Tra gli obiettivi che è possibile specificare, è possibile DROP
pacchetti, il che significa semplicemente ignorare e non rispondere. Puoi REJECT
pacchetti, in cui una risposta icmp verrebbe inviata alla fonte del rifiuto. Infine, puoi farlo ACCEPT
, il che consente ai pacchetti di continuare il routing.
Spesso con un firewall rivolto verso l'esterno la scelta predefinita sarà DROP
al contrario REJECT
, in quanto riduce l'impronta visibile della tua rete su Internet. Ad esempio, un IP che altrimenti limiti i servizi a un host specifico avrebbe meno visibilità DROP
.
Nota, -A
significa aggiungere alla fine della catena. Se si desidera inserire nella parte superiore, è possibile utilizzare -I
. Tutte le regole vengono elaborate dall'alto verso il basso. -D
per la cancellazione.
A DROP
un pacchetto in arrivo proveniente da 192.168.235.235
:
iptables -A INPUT -s 192.168.235.235 -j DROP
Questo passa alla DROP
destinazione per tutti i protocolli provenienti da quell'IP.
Accettare:
iptables -A INPUT -s 192.168.235.235 -j ACCEPT
Per impedire l'accesso a tale IP dal server o dalla rete locale:
iptables -A OUTPUT -d 192.168.235.235 -j DROP
È possibile specificare il -p
protocollo, l' -s
origine del pacchetto, la -d
destinazione per il pacchetto, la porta di destinazione --dport
, la porta di origine --sport
e molti altri flag che influenzeranno il modo in cui i pacchetti vengono trattati dalla regola.
Se la tua INPUT
politica di default era DROP
e volevi consentire a tutti gli utenti della 192.168.123.0/24
sottorete di accedere a SSH sul tuo server, ecco un esempio:
iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT
Esatto, puoi usare anche la notazione CIDR !
In generale, la migliore politica di default è DROP
per tutte le catene. Ogni catena ha una politica di default, che è specificata dal -P
flag. Anche se il criterio è impostato sul valore predefinito DROP
, si consiglia comunque di includere anche la voce finale in una catena DROP
.
Ad esempio, per modificare il criterio in DROP
per le catene INPUT, FORWARD e OUTPUT:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Fai attenzione , se specifichi la politica di default di DROP per INPUT su un sistema remoto senza prima concederti l'accesso SSH, potresti impedirti di accedere al sistema. Se su un sistema remoto, è possibile specificare un crontab temporaneo per svuotare tutte le regole ogni 5 minuti come fail-safe.
Per eliminare tutte le regole e consentire tutto il traffico:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F
Nota, -X
rimuove tutte le catene create. -F
elimina tutte le regole.
Esistono strumenti nativi per salvare e ripristinare le regole. In particolare, iptables-save
e iptables-restore
. La maggior parte delle moderne distribuzioni Linux hanno save
e restore
funzionano all'interno di un file init iptables fornito con il sistema.
Esistono altre best practice per i firewall, come l'eliminazione di pacchetti non validi e altri tipi di traffico indesiderato. Questo è uno dei vantaggi dell'utilizzo di un'utilità front-end come Shorewall , poiché implementerà molte di queste politiche per impostazione predefinita. Tuttavia, sono d'accordo con il tuo approccio e preferisco mantenere anche le mie regole direttamente, e queste stesse migliori pratiche possono essere implementate senza un front-end.