Come utilizzare i comandi Netfilter di Iptables su Linux

Sommario

La sicurezza deve essere sempre una delle premesse su cui devono operare amministratori, personale direttivo e di supporto e, in generale, tutti gli utenti di qualsiasi sistema operativo attuale a causa delle molteplici minacce che sono presenti sulla rete.

Nel caso delle distribuzioni Linux, la maggior parte di esse dispone degli strumenti avanzati per applicare un filtro ai pacchetti di rete sia a livello di elaborazione del controllo dei pacchetti di rete in ingresso, movimento, controllo e uscita dello stack.reti all'interno del kernel del sistema utilizzato , quindi, a partire dal kernel 2.4, sono stati introdotti iptables, che vengono anche chiamati netfilter e questi hanno un livello di sicurezza più elevato e funzionalità pratiche per la protezione del sistema.

iptables gestisce il filtraggio IPv4 mentre ip6tables gestisce il filtraggio IPv6 sulle reti odierne.
Solvetic farà un'analisi su come funziona iptables e alcuni dei comandi più pratici che possiamo trarre da esso.

1. Filtraggio dei pacchetti su Linux


Il kernel delle distribuzioni Linux utilizza lo strumento Netfilter per eseguire il processo di filtraggio dei pacchetti, e quindi svolgere i compiti di riceverli o interromperli.

Regole integrate in NetfilterNetfilter è incorporato di default nel kernel Linux e ha tre tabelle o elenchi di regole integrate in questo modo:

  • filtro: fa riferimento alla tabella predefinita progettata per la gestione dei pacchetti.
  • nat: la sua funzione è quella di alterare i pacchetti che sono stati creati in una nuova connessione utilizzati principalmente da NAT.
  • mangle: il suo utilizzo si applica quando devono essere modificati pacchetti di rete specifici.

Ora, ogni tabella ha un gruppo di catene integrate relative alle azioni che possono essere eseguite da netfilter, queste sono:

Regole per le tabelle filtroLe stringhe integrate per la tabella dei filtri sono:

  • INPUT: è relativo ai pacchetti che sono stati destinati all'host.
  • OUTPUT: Funziona su pacchetti di rete che sono stati generati localmente.
  • FORWARD: Associa i pacchetti che sono stati instradati attraverso l'host principale.

Regole per i tavoli natLe stringhe integrate per la tabella nat sono:

  • PREROUTING: La sua funzione è quella di alterare i pacchetti di rete non appena arrivano.
  • OUTPUT: è stato progettato per alterare i pacchetti di rete che vengono creati localmente e vengono attivati ​​prima di essere inviati.
  • POSTROUTING: Creato per alterare i pacchi prima di essere spediti globalmente.

Regole per le tavole di mangrovieLe catene integrate per il tavolo di mangrovie sono:

  • INPUT: Progettato per modificare i pacchetti di rete destinati all'host principale.
  • OUTPUT: Creato per alterare i pacchetti di rete creati localmente e funziona prima che vengano inviati.
  • FORWARD: altera i pacchetti che sono stati instradati attraverso l'host principale.
  • PREROUTING: il tuo compito è modificare i pacchetti in entrata prima che vengano instradati.
  • POSTROUTING: altera i pacchetti di rete prima che avvenga il processo di invio.

Ogni pacchetto di rete ricevuto o inviato dal sistema operativo Linux è sempre legato ad almeno una tabella. Ora, capiamo alcuni dei comandi più utili che possiamo usare con iptables.

2. Visualizza lo stato del firewall

Passo 1
Per conoscere lo stato attuale del firewall eseguiamo la seguente riga:

 sudo iptables -L -n -v 

INGRANDIRE

Passo 2
Lì possiamo convalidare ogni catena con i suoi rispettivi livelli di pacchetti gestiti, i parametri utilizzati in questo comando sono:

-LVisualizza le regole dell'elenco.

-vGenera informazioni dettagliate come il nome dell'interfaccia, oltre alle opzioni delle regole, oltre ai contatori di pacchetti e byte, con il suffisso 'K', 'M' o 'G' rispettivamente per le opzioni di 1000, 1.000.000 e 1.000.000.000.

-nVisualizza l'indirizzo IP e la porta in formato numerico.

Passaggio 3
Se lo desideri, vedi questo risultato con il numero di righe, possiamo eseguire quanto segue:

 iptables -n -L -v --numeri-riga 

INGRANDIRE

3. Arresta, riavvia o avvia iptables su Linux

Passo 1
I comandi principali per gestire le attività di iptables a livello di avvio o arresto sono:

 servizio iptables interrompi il servizio iptables avvia il servizio iptables riavvia
Passo 2
Sarà inoltre possibile utilizzare il comando iptables per fermare il firewall ed eliminare tutte le regole così:
 iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INGRESSO ACCETTA iptables -P USCITA ACCETTA iptables -P AVANTI ACCETTA
Passaggio 3
I parametri definiti sono:

-FRimuovi tutte le regole.

-XElimina una stringa.

-Tnome_tabella: seleziona la tabella (denominata nat o mangle) ed elimina o scarta le regole.

-PImposta il criterio predefinito come DROP, REJECT o ACCEPT.

4. Aggiungi nuove regole firewall in Linux

Passo 1
Uno dei compiti più pratici di iptables è creare determinate regole per la corretta gestione dei pacchetti, per inserire una o più regole nella catena selezionata utilizzeremo la seguente sintassi dove prima devono essere scoperti i numeri di riga:

 iptables -L INPUT -n --line-numbers 
Passo 2
ad esempio, aggiungiamo la seguente regola:
 iptables -I INPUT 2 -s 192.168.0.50 -j DROP 
Passaggio 3
Successivamente, vedremo le regole utilizzando il comando sopra. Lì vediamo che la regola creata è stata aggiunta alla riga 3 come indicato.

INGRANDIRE

5. Elimina una regola firewall su Linux

Passo 1
Prima di tutto, dobbiamo visualizzare le regole che vengono create per determinare esattamente quale dovrebbe essere eliminata, per ottenere queste informazioni abbiamo le seguenti opzioni:

 iptables -L INPUT -n --line-numbers iptables -L OUTPUT -n --line-numbers iptables -L OUTPUT -n --line-numbers | meno
Passo 2
Ora, per eliminare la regola 3 creata in precedenza, eseguiremo quanto segue:
 iptables -D INGRESSO 3 

INGRANDIRE

6. Archivia e ripristina le regole di iptables su Linux

Passo 1
Ogni volta che apportiamo una modifica alle regole di iptables dobbiamo procedere al salvataggio di tali modifiche, per questo è sufficiente eseguire la seguente riga:

 servizio iptables lo sa 
Passo 2
Possiamo semplicemente ripristinare quelle regole che abbiamo memorizzato eseguendo quanto segue:
 servizio iptables riavviato 

7. Imposta le regole predefinite in Linux


Con iptables sarà possibile consentire o negare le regole predefinite che devono essere applicate a tutto il sistema nel modo seguente.

Passo 1
Per eliminare tutto il traffico eseguiamo:

 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Passo 2
Per rimuovere tutto il traffico in entrata:
 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -m stato - NEW, ESTABLISHED -j ACCEPT

INGRANDIRE

8. Blocca un indirizzo IP in Linux

Con iptables sarà possibile bloccare un particolare indirizzo IP per impedirgli di avere accesso ai pacchetti di rete al sistema. Per questo compito abbiamo le seguenti opzioni:

 iptables -A INPUT -s 192.168.0.14 -j DROP (IP specifico) iptables -A INPUT -s 192.168.0.0/24 -j DROP (intervallo di indirizzi)

9. Blocca le richieste di porte in entrata su Linux

Passo 1
Un altro tipico compito di sicurezza è limitare l'accesso ai pacchetti attraverso una porta specifica, con iptables abbiamo le seguenti opzioni:

Blocca tutte le azioniBlocca tutte le azioni per una porta specifica eseguendo:

 iptables -A INPUT -p tcp --dport 80 -j DROP iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

Blocca una portaBlocca una porta per un indirizzo IP specifico:

 iptables -A INPUT -p tcp -s 192.168.0.14 --dport 80 -j DROP iptables -A INPUT -i eth1 -p tcp -s 192.168.0.1/24 --dport 80 -j DROP

Blocca indirizzo IP in uscita
È possibile bloccare il traffico in uscita verso un host o dominio specifico, ad esempio Solvetic.com, per questo eseguiamo quanto segue:

 host -t su solvetic.com 

INGRANDIRE

Passo 2
Ora, con questo indirizzo IP procediamo a bloccare:

 iptables -A OUTPUT -d 178.33.118.246 -j DROP 
Passaggio 3
Sarà inoltre possibile bloccare l'intero dominio in questo modo:
 iptables -A OUTPUT -p tcp -d www.solvetic.com -j DROP 

10. Se consentire o meno il traffico di rete utilizzando l'indirizzo MAC in Linux

Un'altra possibilità da utilizzare è limitare o consentire l'uso di pacchetti in base all'indirizzo MAC del dispositivo selezionato. Per questo utilizzeremo una delle seguenti opzioni:

 iptables -A INPUT -m mac --mac-source 00: 2F: EF: 85: 04: 09 -j DROP (Nega traffico dall'indirizzo MAC selezionato) iptables -A INPUT -p tcp --destination-port 22 - m mac --mac-source 00: 2F: EF: 85: 04: 09 -j ACCEPT (Supporta i pacchetti dall'indirizzo indicato solo dalla porta 22)

11. Blocca o consenti le richieste ICMP su Linux


Il protocollo ICMP (Internet Control Message Protocol) è un protocollo sviluppato per gestire le informazioni relative agli errori nei computer della rete locale, in modo che con questo protocollo si possano effettuare richieste remote per verificare la disponibilità di un team e questo in termini di sicurezza può essere delicato .

Passo 1
Possiamo eseguire le seguenti righe per evitare richieste ICMP su Linux:

 iptables -A INPUT -p icmp --icmp-type echo-request -j DROP iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Passo 2
Le risposte al ping possono anche essere limitate a determinate reti o host come questo:
 iptables -A INPUT -s 192.168.0.1/24 -p icmp --icmp-type echo-request -j ACCEPT 
Passaggio 3
Saremo in grado di accettare solo un tipo limitato di richieste ICMP come questa:
 iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type destinazione-non raggiungibile -j ACCEPT iptables -A INPUT -p icmp --icmp-type time- superato -j ACCEPT

12. Apri una gamma di porte e indirizzi IP in Linux

Passo 1
Ciò è utile se è necessario abilitare un intervallo definito di porte per eseguire azioni amministrative o di esecuzione del programma:

 iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9000: 9020 -j ACCEPT 
Così abbiamo aperto la gamma di porte da 9000 a 9020 per le connessioni TCP.

Passo 2
Un'altra alternativa è abilitare un intervallo di indirizzi IP impostando una porta specifica come questa. Lì abbiamo autorizzato questo intervallo a utilizzare la porta 80.

 iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.0.70-192.168.0.80 -j ACCEPT 

13. Limita il numero di connessioni parallele a un server per IP client su Linux

Passo 1
Possiamo usare il modulo connlimit per definire queste restrizioni, ad esempio, per consentire 5 connessioni ssh per client, inseriamo quanto segue:

 iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT 

INGRANDIRE

Passo 2
Per limitare l'accesso HTTP a 10:

 iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP 
Passaggio 3
Abbiamo indicato quanto segue:
  • --connlimit-above 5: corrisponde se il numero di connessioni esistenti è maggiore di 5.
  • --connlimit-mask 24: questi sono gli host del gruppo che utilizzano la lunghezza del prefisso. Per IPv4, deve essere un numero compreso tra (incluso) 0 e 32.

14. Limita il numero di connessioni parallele a un server per IP client su Linux

Passo 1
NAT (Network Address Translation) è un sistema per tradurre indirizzi di rete e quindi facilitare la navigazione. Per elencarli eseguiremo quanto segue:

 iptables -t nat -L -n -v 

INGRANDIRE

Passo 2
Sarà possibile vedere questo risultato con le rispettive righe così:

 iptables -t nat -v -L -n --numero-riga 

15. Cancella le regole NAT su Linux


Passo 1
Se vogliamo eliminare le regole NAT stabilite, eseguiremo quanto segue:
 iptables -t nat -v -L -n --line-number iptables -t nat -v -L PREROUTING -n --line-number iptables -t nat -v -L POSTROUTING -n --line-number
Passo 2
Per eliminare tutte le regole "PREROUTING" eseguiamo la seguente sintassi:
 iptables -t nat -D PREROUTING {Numero regola} 
Passaggio 3
Per eliminare tutte le regole "POSTROUTING" eseguiamo:
 iptables -t nat -D POSTROUTING {numero regola} 

16. Ripristina i contatori dei pacchetti in Linux


Per prima cosa, dobbiamo eseguire il comando "iptables -L -n -v", che abbiamo visto in precedenza, per elencare i contatori.

Passo 1
Per cancellare questi contatori, esegui quanto segue:

 iptables -Z 
Passo 2
Per resettare i contatori di solo accesso eseguiamo:
 iptables -Z INPUT 

17. Convalida il firewall su Linux

Passo 1
Prima di tutto, dobbiamo convalidare se le porte sono aperte o meno con il seguente comando:

 netstat -tulpn 

INGRANDIRE

Passo 2
Per convalidare una porta specifica eseguiamo:

 netstat -tulpn | grep: 80 

INGRANDIRE

Passaggio 3
Nel caso in cui la porta non sia aperta eseguiamo:

 servizio httpd start 
Passaggio 4
Quindi dobbiamo assicurarci che iptables abbia accesso attraverso quella porta:
 iptables -L INPUT -v -n | grep 80 

18. Consenti l'accesso al loop con iptables su Linux

L'accesso loopback il cui accesso proviene da IP 127.0.0.1 è importante e dovrebbe essere sempre lasciato attivo per le attività di amministrazione e gestione della rete. Per abilitarlo in iptables, esegui semplicemente quanto segue.

 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT

19. Definisci nuove stringhe iptables su Linux


Passo 1
Con iptables abbiamo la possibilità di definire la nostra catena e memorizzare regole personalizzate in essa. Per definire una catena, eseguiamo quanto segue:
 iptables -N "Nome stringa" 
Passo 2
Quindi eseguiamo "iptables -L" per elencare le stringhe iptables:

INGRANDIRE

Passaggio 3
Nel risultato vedremo la nostra catena creata:

INGRANDIRE

20. Cancella le catene o le regole del firewall iptables su Linux

Per eseguire questa cancellazione dobbiamo eseguire quanto segue:

 iptables -F 
Come possiamo vedere, iptables è una soluzione completa per gestire centralmente vari aspetti della sicurezza nelle distribuzioni Linux per ottenere miglioramenti in tutto ciò che riguarda la privacy.

wave wave wave wave wave