Introduzione
Tutti i moderni sistemi operativi sono dotati di un firewall, un'applicazione software che regola il traffico di rete verso un computer. I firewall creano una barriera tra una rete affidabile (come una rete di ufficio) e una non affidabile (come Internet). I firewall funzionano definendo regole che regolano quale traffico è consentito e quale è bloccato. Il firewall di utilità sviluppato per i sistemi Linux è iptables .
In questo tutorial, scopri come installare iptables, configurare e utilizzare iptables in Linux.
Prerequisiti
- Un account utente con sudo privilegi
- Accesso a una finestra di terminale/riga di comando (Ctrl-Alt-T, Ctrl-Alt-F2)
Come funziona iptables
Il traffico di rete è costituito da pacchetti. I dati vengono suddivisi in parti più piccole (chiamate pacchetti), inviati su una rete, quindi riassemblati. Iptables identifica i pacchetti ricevuti e quindi utilizza una serie di regole per decidere cosa farne.
Iptables filtra i pacchetti in base a:
- Tabelle: Le tabelle sono file che uniscono azioni simili. Una tabella è composta da diverse catene .
- Catene: Una catena è una stringa di regole . Quando un pacchetto viene ricevuto, iptables trova la tabella appropriata, quindi lo esegue attraverso la catena di regole finché non trova una corrispondenza.
- Regole: Una regola è un'istruzione che dice al sistema cosa fare con un pacchetto. Le regole possono bloccare un tipo di pacchetto o inoltrare un altro tipo di pacchetto. Il risultato, in cui viene inviato un pacchetto, è chiamato target .
- Obiettivi: Un obiettivo è una decisione su cosa fare con un pacchetto. In genere, si tratta di accettarlo, eliminarlo o rifiutarlo (il che restituisce un errore al mittente).
Tavoli e catene
Il firewall Linux iptables ha quattro tabelle predefinite. Elencheremo tutti e quattro insieme alle catene contenute in ogni tabella.
1. Filtra
Il Filtro la tabella è quella più usata. Agisce come un buttafuori, decidendo chi entra e chi esce dalla tua rete. Ha le seguenti catene predefinite:
- Inserimento – le regole in questa catena controllano i pacchetti ricevuti dal server.
- Risultato – questa catena controlla i pacchetti per il traffico in uscita.
- Avanti – questo insieme di regole controlla i pacchetti che vengono instradati attraverso il server.
2. Traduzione degli indirizzi di rete (NAT)
Questa tabella contiene le regole NAT (Network Address Translation) per l'instradamento dei pacchetti a reti a cui non è possibile accedere direttamente. Quando è necessario modificare la destinazione o l'origine del pacchetto, viene utilizzata la tabella NAT. Include le seguenti catene:
- Prerouting – questa catena assegna i pacchetti non appena il server li riceve.
- Uscita – funziona come la catena di output che abbiamo descritto nel filtro tabella.
- Postrouting – le regole in questa catena consentono di apportare modifiche ai pacchetti dopo che hanno lasciato la catena di output.
3. Mazza
Il Mangolino la tabella regola le proprietà dell'intestazione IP dei pacchetti. La tabella ha tutte le seguenti catene che abbiamo descritto sopra:
- Prerouting
- Post-instradamento
- Risultato
- Inserimento
- Avanti
4. Crudo
Il crudo la tabella viene utilizzata per esentare i pacchetti dal rilevamento della connessione. La tabella grezza ha due delle catene che abbiamo menzionato in precedenza:
- Prerouting
- Risultato
5. Sicurezza (opzionale)
Alcune versioni di Linux utilizzano anche una Sicurezza tabella per gestire regole di accesso speciali. Questa tabella include input, output, e avanti catene, proprio come la tabella dei filtri.
Obiettivi
Un obiettivo è ciò che accade dopo che un pacchetto soddisfa i criteri di una regola. Non terminante gli obiettivi continuano a confrontare i pacchetti con le regole in una catena anche quando il pacchetto corrisponde a una regola.
Con chiusura target, un pacchetto viene valutato immediatamente e non viene confrontato con un'altra catena. Le destinazioni finali in iptables Linux sono:
- Accetta – questa regola accetta i pacchetti che arrivano attraverso il firewall iptables.
- Lascia – il pacco abbandonato non è abbinato a nessun'altra catena. Quando iptables Linux interrompe una connessione in entrata al tuo server, la persona che tenta di connettersi non riceve un errore. Sembra che stiano tentando di connettersi a una macchina inesistente.
- Ritorno – questa regola rimanda il pacchetto alla catena di origine in modo da poterlo confrontare con altre regole.
- Rifiuta – il firewall iptables rifiuta un pacchetto e invia un errore al dispositivo di connessione.
Come installare e configurare iptables Linux Firewall
Installazione di Iptables Ubuntu
Iptables è installato di default sulla maggior parte dei sistemi Linux. Per confermare che iptables sia installato, usa il seguente comando:
sudo apt-get install iptables
L'output di esempio in Ubuntu conferma che l'ultima versione di iptables è già presente:
Se vuoi mantenere le regole del firewall iptables quando riavvii il sistema, installa il pacchetto persistente:
sudo apt-get install iptables-persistent
Installazione di Iptables CentOS
In CentOS 7 , iptables è stato sostituito da firewalld .
Per installare iptables, devi prima fermare firewalld. Immettere i seguenti comandi:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld
I comandi bloccano e impediscono l'avvio di firewalld all'avvio e non consentono ad altri servizi di avviare firewalld.
Quindi, installa e abilita iptables. Innanzitutto, installa il pacchetto dei servizi iptables con il seguente comando:
sudo yum -y install iptables-services
Questo pacchetto conserva le tue regole dopo un riavvio del sistema. Le informazioni visualizzate di seguito confermano che l'installazione è completa:
Immettere i seguenti comandi per abilitare e avviare iptables in CentOS 7:
sudo systemctl enable iptables
sudo systemctl start iptables
Il comando di stato conferma lo stato dell'applicazione:
sudo systemctl status iptables
Sintassi di base per i comandi e le opzioni di iptables
In generale, un comando iptables ha il seguente aspetto:
sudo iptables [option] CHAIN_rule [-j target]
Ecco un elenco di alcune opzioni comuni di iptables:
-A --append
– Aggiungi una regola a una catena (alla fine).-C --check
– Cerca una regola che corrisponda ai requisiti della catena.-D --delete
– Rimuovere le regole specificate da una catena.-F --flush
– Rimuovi tutte le regole.-I --insert
– Aggiungi una regola a una catena in una determinata posizione.-L --list
– Mostra tutte le regole in una catena.-N -new-chain
– Crea una nuova catena.-v --verbose
– Mostra più informazioni quando si utilizza un'opzione elenco.-X --delete-chain
– Elimina la catena fornita.
Iptables fa distinzione tra maiuscole e minuscole, quindi assicurati di utilizzare le opzioni corrette.
Configura iptables in Linux
Per impostazione predefinita, questi comandi influiscono sui filtri tavolo. Se devi specificare una tabella diversa, usa il –t
opzione, seguito dal nome della tabella.
Controlla lo stato corrente di iptables
Per visualizzare l'attuale insieme di regole sul tuo server, inserisci quanto segue nella finestra del terminale:
sudo iptables -L
Il sistema mostra lo stato delle tue catene. L'output elencherà tre catene:
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Abilita traffico in loopback
È sicuro consentire il traffico dal tuo sistema (l'host locale). Aggiungi l'Input catena inserendo quanto segue:
sudo iptables -A INPUT -i lo -j ACCEPT
Questo comando configura il firewall per accettare il traffico per l'host locale (lo
) interfaccia (-i
). Ora qualsiasi cosa proveniente dal tuo sistema passerà attraverso il tuo firewall. Devi impostare questa regola per consentire alle applicazioni di comunicare con l'interfaccia di localhost.
Consenti traffico su porte specifiche
Queste regole consentono il traffico su porte diverse si specifica utilizzando i comandi elencati di seguito. Una porta è un endpoint di comunicazione specificato per un tipo specifico di dati.
Per consentire il traffico web HTTP, inserisci il seguente comando:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Per consentire solo il traffico SSH (Secure Shell) in entrata, inserisci quanto segue:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Per consentire il traffico Internet HTTPS, inserisci il seguente comando:
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Le opzioni funzionano come segue:
-p
– Verificare il protocollo specificato (tcp ).--dport
– Specificare la porta di destinazione.-j jump
– Esegui l'azione specificata.
Controlla il traffico tramite indirizzo IP
Utilizzare il comando seguente per ACCETTARE il traffico da un indirizzo IP specifico.
sudo iptables -A INPUT -s 192.168.0.27 -j ACCEPT
Sostituisci l'indirizzo IP nel comando con l'indirizzo IP che desideri consentire.
Puoi anche eliminare il traffico da un indirizzo IP:
sudo iptables -A INPUT -s 192.168.0.27 -j DROP
Puoi RIFIUTARE il traffico da un intervallo di indirizzi IP, ma il comando è più complesso:
sudo iptables -A INPUT -m iprange --src-range 192.168.0.1-192.168.0.255 -j REJECT
Le opzioni di iptables che abbiamo usato negli esempi funzionano come segue:
-m
– Abbina l'opzione specificata.-iprange
– Indica al sistema di aspettarsi un intervallo di indirizzi IP anziché uno solo.--src-range
– Identifica l'intervallo di indirizzi IP.
Eliminazione del traffico indesiderato
Se definisci dport iptables firewall, è necessario impedire l'accesso non autorizzato eliminando il traffico proveniente da altre porte:
sudo iptables -A INPUT -j DROP
Il -A
l'opzione aggiunge una nuova regola alla catena. Se una connessione passa attraverso porte diverse da quelle che hai definito, verrà interrotta.
Elimina una regola
Puoi usare il -F
opzione per cancellare tutte le regole del firewall iptables. Un metodo più preciso consiste nell'eliminare il numero di riga di una regola.
Innanzitutto, elenca tutte le regole inserendo quanto segue:
sudo iptables -L --line-numbers
Individua la riga della regola del firewall che desideri eliminare ed esegui questo comando:
sudo iptables -D INPUT <Number>
Sostituisci <Numero> con il numero effettivo della riga della regola che desideri rimuovere.
Salva le modifiche
Iptables non mantiene le regole che hai creato al riavvio del sistema. Ogni volta che configuri iptables in Linux, tutte le modifiche che apporti si applicano solo fino al primo riavvio.
Per salvare le regole nei sistemi basati su Debian, inserisci:
sudo /sbin/iptables–save
Per salvare le regole nei sistemi basati su Red Hat, inserisci:
sudo /sbin/service iptables save
Al successivo avvio del sistema, iptables ricaricherà automaticamente le regole del firewall.