Come configurare smartphone e PC. Portale informativo
  • casa
  • notizia
  • Configurare netfilter usando iptables. Un insieme minimo di regole Iptables per le attività tipiche

Configurare netfilter usando iptables. Un insieme minimo di regole Iptables per le attività tipiche

Il compito principale firewall(firewall) filtrando ed elaborando i pacchetti che passano attraverso la rete. Quando si analizza un pacchetto di input, il firewall decide il destino di questo pacchetto: lanciare il pacchetto ( GOCCIOLARE), accettare il pacco ( ACCETTARE) o fare qualcos'altro con esso.

V Linux il firewall è un modulo del kernel chiamato netfilter ed è un insieme di hook per lavorare con lo stack di rete. L'interfaccia per modificare le regole con cui il firewall elabora i pacchetti è l'utility iptables per IPv4 e utility ip6tables per IPv6.

Tutto il lavoro di filtraggio del traffico viene eseguito dal core del sistema. iptables non è un demone e non crea nuovi processi nel sistema. Accendi o spegni iptables sta solo inviando un segnale al kernel. L'elevata velocità di filtraggio si ottiene analizzando solo le intestazioni dei pacchetti.

Alle caratteristiche principali iptables relazionare:

  • filtraggio del traffico in base agli indirizzi del mittente e del destinatario dei pacchetti, numeri di porta;
  • reindirizzare i pacchetti secondo determinati parametri;
  • organizzazione dell'accesso alla rete (SNAT);
  • port forwarding dalla rete globale alla rete locale (DNAT);
  • limitare il numero di connessioni;
  • definizione delle quote di traffico;
  • esecuzione delle regole secondo il programma;

Consideriamo il processo principale di lavoro iptables(fonte immagine rigacci.org).

Il pacchetto in arrivo raggiunge prima il dispositivo di rete, dopodiché viene intercettato dal driver e trasmesso al kernel. Successivamente, il pacchetto viene passato attraverso una serie di tabelle e solo allora viene trasmesso all'applicazione locale o reindirizzato a un altro sistema, se si tratta di un pacchetto di transito.

V iptables vengono utilizzati tre tipi di tabelle:

  1. storpiare- utilizzato per apportare modifiche all'intestazione del pacchetto;
  2. nato- utilizzato per tradurre indirizzi di rete;
  3. filtro- per filtrare il traffico;

Tavolo Mangle

Lo scopo principale del tavolo storpiare- apportare modifiche all'intestazione del pacchetto. In questa tabella è possibile eseguire le seguenti azioni:

  • impostare il bit Tipo di servizio;
  • impostazione del campo Time To Live;
  • impostare un'etichetta su un pacco che può essere controllata in altre regole;

Catene in tavola storpiare:

  • PRECAUZIONI- utilizzato per apportare modifiche ai pacchetti all'ingresso di iptables, prima di decidere sull'instradamento;
  • POSTOUTING- utilizzato per apportare modifiche ai pacchetti in uscita da iptables, dopo aver deciso l'instradamento;
  • INGRESSO- viene utilizzato per apportare modifiche ai pacchetti prima che vengano trasferiti all'applicazione locale;
  • PRODUZIONE- utilizzato per modificare i pacchetti provenienti dall'applicazione all'interno di iptables;
  • INOLTRARE- utilizzato per apportare modifiche ai colli in transito;

tavolo nazionale

La tabella viene utilizzata per la traduzione degli indirizzi di rete e quando viene rilevato un pacchetto per stabilire una nuova connessione. In questa tabella è possibile eseguire le seguenti azioni:

  • DNAT (Traduzione dell'indirizzo di rete di destinazione)- conversione dell'indirizzo di destinazione nell'intestazione del pacchetto;
  • SNAT (traduzione dell'indirizzo di rete di origine)- modifica dell'indirizzo di origine del pacchetto;
  • MASCHERA- utilizzato per gli stessi scopi di SNAT ma ti permette di lavorare con indirizzi IP dinamici;

Catene in questa tabella:

  • PRECAUZIONI- viene utilizzato per apportare modifiche ai pacchetti all'ingresso di iptables;
  • PRODUZIONE- utilizzato per tradurre gli indirizzi in pacchetti prima di ulteriori instradamenti;
  • POSTOUTING- utilizzato per convertire i pacchetti prima di inviarli alla rete;

Filtra tabella

La tabella viene utilizzata per il filtraggio dei pacchetti. Ci sono tre catene in questa tabella:

  1. INGRESSO- catena per i pacchetti in entrata;
  2. INOLTRARE- catena per i pacchetti inoltrati (in transito);
  3. PRODUZIONE- catena per pacchi in uscita;

Un pacchetto che passa attraverso queste catene può essere soggetto ad azioni: ACCETTARE, GOCCIOLARE, RIFIUTARE, TRONCO D'ALBERO.

Per riassumere, il pacchetto in arrivo passa attraverso la catena di regole. Ogni regola contiene condizione e obiettivo(azione). Se il pacchetto soddisfa la condizione, viene inviato al target, altrimenti al pacchetto viene applicata la regola successiva nella catena. Se il pacchetto non soddisfa nessuna delle condizioni nella catena, viene applicata l'azione predefinita.

Catena tavolo
filtro nato storpiare
INGRESSO + +
INOLTRARE + +
PRODUZIONE + + +
PRECAUZIONI + +
POSTOUTING + +

Utilità Iptables

Installazione di iptables

# per Arch Linux yaourt -S iptables # Per Ubuntu sudo apt-get install iptables

Esecuzione di iptables

# sotto Arch Linux sudo systemctl abilita iptables sudo systemctl start iptables # Sotto Ubuntu sudo service iptables start

Regole di salvataggio

# per Arch Linux sudo sh -c "iptables-save> /etc/iptables/iptables.rules" # per Ubuntu sudo sh -c "iptables-save> /etc/iptables.rules"

Ripristino delle regole da un file

Iptables-restore< firewall-config

ogni regola in iptablesè una linea separata formata secondo determinate regole e contenente criteri e azioni. In termini generali, la norma ha il seguente formato:

Comando Iptables [-t table]

  • t table - specifica il nome della tabella per la quale verrà creata la regola;
  • comando - un comando che definisce un'azione iptables- aggiungi una regola, elimina una regola, ecc.;
  • match - imposta i criteri di test con cui si determina se un pacchetto è soggetto o meno alla regola;
  • target / jump: quale azione dovrebbe essere eseguita quando il criterio è soddisfatto;

Comandi di Iptable:

  • -A - aggiungi una regola alla catena, la regola verrà aggiunta alla fine della catena;
  • -D - togli la regola dalla catena;
  • -R - sostituisce una regola con un'altra;
  • -I - inserisco una nuova regola nella catena;
  • -L - visualizza l'elenco delle regole nella catena specificata;
  • -F - cancella tutte le regole nella catena specificata;
  • -Z - ripristina tutti i contatori nella catena specificata;
  • -N - crea una nuova catena con il nome specificato;
  • -X - elimina la catena;
  • -P - imposta la politica predefinita per la catena;
  • -E - rinomina la catena utente;

Esempi di comandi iptables

I pacchetti possono essere filtrati in base ai seguenti parametri:

Fonte del pacchetto

L'opzione -s viene utilizzata per filtrare in base all'origine. Ad esempio, rifiuteremo tutti i pacchetti in arrivo dall'host 192.168.1.95:

Iptables -A INPUT -s 192.168.1.95 -j DROP

È possibile utilizzare un nome di dominio per specificare l'indirizzo host:

Iptables -A INPUT -s test.host.net -j DROP

Puoi anche specificare l'intero per la rete:

Iptables -A INPUT -s 192.168.1.0/24 -j DROP

Puoi anche usare la negazione (segno!). Ad esempio, verranno eliminati tutti i pacchetti provenienti da host diversi da 192.168.1.96:

Iptables: un input! -s 192.168.1.96 -j DROP

Consenti al traffico di fluire su localhost:

Iptables -A INGRESSO 1 -i lo -j ACCEPT

Registrazione dei tentativi di spoofing con il prefisso "IP_SPOOF A:" e interruzione della connessione

Iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A:" iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Indirizzo di destinazione

Per fare ciò, è necessario utilizzare l'opzione -d. Ad esempio, negheremo tutti i pacchetti in uscita all'host 192.168.1.95:

Iptables -A OUTPUT -d 192.168.156.156 -j DROP

Nega l'accesso alla risorsa

Iptables -A OUTPUT -d vk.com -j REJECT

Come nel caso dell'origine del pacchetto, è possibile utilizzare indirizzi per reti e nomi di dominio. Anche la negazione funziona.

Protocollo

L'opzione -p indica il protocollo. Può essere utilizzato tutti, icmp, tcp, udp o numero di protocollo (da / etc / protocolli).

Consenti richieste di eco in arrivo

Iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Porta di origine

Consenti tutti i pacchetti in uscita dalla porta 80:

Iptables -A INPUT -p tcp --sport 80 -j ACCEPT

Blocca tutte le richieste in entrata sulla porta 80:

Iptables -A INPUT -p tcp --dport 80 -j DROP

Per specificare la porta, è necessario specificare il protocollo (tcp o udp). Si può usare la negazione.

Intervallo porte aperte

Iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000: 7010 -j ACCEPT

Porto di arrivo

Consenti connessioni HTTP

Iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT

Consentire di ricevere dati dal server DHCP

Iptables -A INPUT -p UDP --dport 68 --sport 67 -j ACCEPT

  • A distanza sfruttamento di bug del software al fine di renderlo inoperante;
  • Alluvione- invio di un numero enorme di pacchetti privi di significato all'indirizzo della vittima. Il target del flood può essere un canale di comunicazione o risorse della macchina. Nel primo caso, il flusso di pacchetti occupa l'intera larghezza di banda e non consente alla macchina attaccata di elaborare richieste legittime. Nella seconda, le risorse della macchina vengono catturate tramite chiamate multiple e molto frequenti a qualsiasi servizio che esegua un'operazione complessa e dispendiosa in termini di risorse. Può trattarsi, ad esempio, di una lunga chiamata a uno dei componenti attivi (script) del server web. Il server spende tutte le risorse della macchina per elaborare le richieste dell'attaccante e gli utenti devono aspettare. Il flood può essere diverso: ICMP flood, SYN flood, UDP flood e HTTP flood

Raccolta di informazioni sulle connessioni di rete

Visualizza le connessioni aperte

Netstat -ntu | awk "(stampa $ 5)" | cut -d: -f1 | ordina | uniq -c | sort -n

Numero di connessioni alla porta 80

Netstat -na | grep ": 80 \" | wc -l

Dump della connessione TCP (a quale dominio vanno più spesso le richieste)

Tcpdump -npi eth0 port domain

I SYN flood possono essere controllati contando il numero di connessioni TCP semiaperte

Netstat -na | grep ": 80" | grep SYN_RCVD

Protezione contro diversi tipi di allagamento.

Alluvione dell'ICMP. Un metodo molto primitivo per intasare la larghezza di banda e creare carichi sullo stack di rete attraverso l'invio monotono di richieste ECHO ICMP (ping). È facilmente rilevabile analizzando il flusso di traffico in entrambe le direzioni: durante un attacco flood ICMP, sono quasi identici. Un modo quasi indolore di protezione assoluta si basa sulla disabilitazione delle risposte alle richieste ECHO dell'ICMP:

Sysctl net.ipv4.icmp_echo_ignore_all = 1

O usando iptabel:

Iptables -A INPUT -p icmp -j DROP --icmp-type 8

SYN inondazione. Uno dei modi più comuni non solo per intasare il canale di comunicazione, ma anche per mettere lo stack di rete del sistema operativo in uno stato in cui non può più accettare nuove richieste di connessione. Basato su un tentativo di inizializzare un numero elevato di connessioni TCP simultanee inviando un pacchetto SYN con un indirizzo di ritorno inesistente. Dopo diversi tentativi di inviare un pacchetto di risposta ACK a un indirizzo irraggiungibile, la maggior parte dei sistemi operativi metterà in coda la connessione non stabilita. E solo dopo l'ennesimo tentativo la connessione viene chiusa. Poiché il flusso di pacchetti ACK è molto grande, presto la coda è piena e il kernel si rifiuta di provare ad aprire una nuova connessione. I bot DoS più intelligenti analizzano anche il sistema prima di iniziare un attacco per inviare richieste solo per aprire porte vitali. È facile identificare un tale attacco: prova a connetterti a uno dei servizi.

IPTables è un'utilità utilizzata per gestire i firewall in Linux. È uno strumento potente e pratico per le connessioni indesiderate. L'intero processo è racchiuso in regole iptables, che possono essere modificate e visualizzate. Per ulteriori informazioni, vedere l'articolo.

Storia della creazione

Prima IPTables su Linux utilizzava il firewall IPFW, preso in prestito da BSD. Poi, con il kernel Linux 2.4, è arrivato il firewall Netfilter e l'utility IPTables per gestirlo. Nella metodologia del suo lavoro, tutti gli aspetti sono stati preservati e funzionalmente leggermente ampliati.

Struttura e struttura di IPTables

Quando un pacchetto entra nel firewall, viene sottoposto a diversi controlli. Può essere un checksum o qualsiasi altra analisi a livello di kernel. Quindi è il turno di passare attraverso la catena PREROUTING. Successivamente, viene verificato in base a quale si verifica il reindirizzamento alla catena successiva. Se il pacchetto non ha un indirizzo, come ad esempio in TCP, allora viene indirizzato alla catena FORWARD. Nei casi in cui è presente un indirizzo specifico, segue la catena INPUT e quindi i daemon oi servizi a cui è destinata. La risposta da loro deve anche passare attraverso diverse catene, ad esempio OUTPUT. L'ultimo anello di questo processo è la catena di POSTROUTING.

Ora un po 'di catene. Ognuno di essi contiene diverse tabelle. I loro nomi possono essere ripetuti, ma ciò non pregiudica in alcun modo l'opera, poiché non sono interconnessi.

Le tabelle, a loro volta, contengono diverse regole. Una regola, infatti, è una certa condizione che deve essere soddisfatta dal pacco oggetto del controllo. A seconda del risultato, viene eseguita una determinata azione sul pacchetto.

Pertanto, attraversando tutte le fasi della rete, il pacchetto visita in sequenza tutte le catene e in ciascuna viene verificato il rispetto delle condizioni di una determinata regola. Se la tabella non è generata dall'utente, viene eseguita l'azione predefinita, in pratica è ACCEPT, che consente di continuare a spostarsi ulteriormente, o DROP, che arresta il pacchetto.

Le catene preimpostate rientrano nelle seguenti categorie:

  • PRECAUZIONI... Elaborazione iniziale di tutti i pacchetti in entrata.
  • INGRESSO... Ciò include quei pacchetti che vengono inviati direttamente al computer locale.
  • INOLTRARE... Usato per "pacchetti di transito" che seguono la tabella di routing.
  • PRODUZIONE... Utilizzato per i pacchetti in uscita.
  • POSTOUTING... L'ultima fase del passaggio di tutte le catene da parte del pacchetto in uscita.

Oltre alle catene integrate, gli utenti possono crearne o eliminarne di proprie.

Visualizzazione e gestione delle regole IPTables

Come accennato in precedenza, tutte le catene contengono determinate condizioni per i pacchetti. L'utility IPTables viene utilizzata per visualizzare e gestire le regole IPTables. Ogni singola regola è una riga con una serie di condizioni per i pacchetti, nonché azioni su di esse, a seconda del risultato.

Il formato del comando è il seguente: iptables [-t nome della tabella in elaborazione] il comando invocato [criteri] [azione da eseguire].

Tutto ciò che è contenuto in può essere omesso. Se questo è un parametro che specifica una tabella, verrà utilizzato il filtro. Per utilizzare un nome specifico, è necessario aggiungere l'opzione -t. Il comando invocato consente di richiamare l'azione richiesta, ad esempio, aggiungere o rimuovere una regola IPTables. I "criteri" specificano i parametri in base ai quali avverrà la selezione. E nell'"azione" viene applicata l'azione, che deve essere eseguita se la condizione è soddisfatta.

Comandi per creare e visualizzare le regole di IPTables

  • Aggiungi (-A). Quando si utilizza il comando, si specifica la catena e la tabella a cui si desidera aggiungere la regola richiesta. Il valore della squadra è che lo fa in fondo all'intera lista.
  • Elimina (-D). Come suggerisce il nome, rimuove la regola. Come parametri è possibile specificare sia il nome completo che i numeri ad essi assegnati.
  • Rinomina catena (-E). Cambia il nome della catena. Il comando specifica il vecchio nome, quindi il nuovo nome.
  • A filo (-F). Cancellare assolutamente tutte le regole di una tabella specifica.
  • Inserisci (-I). Questo comando inserisce la regola richiesta nella posizione indicata dal numero.
  • Elenco (- L). Visualizzazione delle regole di iptables. Se non viene specificata alcuna tabella, verrà utilizzato il filtro predefinito.
  • Politica (-P). Viene utilizzata la politica predefinita per la catena specificata.
  • Sostituire (-R). Modifica la regola sotto il numero specificato in quella richiesta.
  • Elimina catena (-X). Questo comando elimina tutte le catene create. Rimarranno solo quelli preinstallati.
  • Zero (-Z). Azzera i contatori dei dati trasmessi nella catena specificata.

Un po 'sui parametri di selezione del pacchetto

Possono essere grossolanamente suddivisi in tre tipologie:

  • Criteri generali... Possono essere specificati per qualsiasi regola. Non richiedono la connessione di estensioni e moduli speciali e inoltre non dipendono da quale protocollo verrà utilizzato.
  • Criteri non generali. Sono resi disponibili utilizzando criteri generali.
  • Esplicito. Per utilizzare questo tipo, è necessario collegare plugin speciali per netfilter. Inoltre, il comando deve utilizzare l'opzione -m.

Vale la pena parlare un po' dei parametri frequentemente utilizzati nell'analisi dei pacchetti:

  • Protocollo (-p). Indica il protocollo.
  • Fonti). Questo parametro definisce l'indirizzo IP della sorgente da cui proviene il pacchetto. Può essere specificato in diversi modi. Un host, un indirizzo o un'intera sottorete specifici.
  • Destinazione (-d). L'indirizzo di destinazione del pacchetto. Inoltre, come il precedente, può essere descritto in diversi modi.
  • Interfaccia interna (-i). Specifica l'interfaccia in entrata del pacchetto. Utilizzato principalmente per NAT o su sistemi con più interfacce.
  • Interfaccia esterna (-o). Interfaccia in uscita.

Alcuni esempi

Per visualizzare le regole nazionali di IPTables? devi usare il comando - "iptables -L -t nat". Controlla lo stato generale del firewall - "iptables -L -n -v". Inoltre, questo comando consente di visualizzare le regole IPTables disponibili nell'intero sistema. Inserisci una regola in un punto specifico della tabella, ad esempio, tra la prima e la seconda riga - "iptables -I INPUT 2 -s 202.54.1.2 -j DROP". Quindi verifica se è stato aggiunto - "iptables -L INPUT -n --line-numbers".

Per bloccare un indirizzo specifico, ad esempio 12.12.12 - "iptables -A INPUT -s 12.12.12.12 -j DROP".

Riferimento a Iptables - "man iptables". Se hai bisogno di informazioni su un comando specifico - "iptables -j DROP -h".

Finalmente

Utilizzare i comandi IPTables con cautela, poiché una configurazione errata (inconsapevolmente) può portare a guasti di rete o guasti completi. Pertanto, vale la pena studiare in dettaglio i manuali e le istruzioni prima della configurazione. Nelle mani giuste, IPTables può essere trasformato in un protettore affidabile delle connessioni di rete. Gli amministratori di sistema utilizzano attivamente l'utilità per creare connessioni isolate dall'accesso non autorizzato.

Principio di impostazione

La sintassi generale per l'utilizzo di iptables è:

iptables -t<таблица> <команда> <цепочка>[Camera]<условие> <действие>

<таблица>

Le regole di Netfilter sono distribuite su 4 tabelle, ognuna delle quali ha il proprio scopo (maggiori dettagli di seguito). Viene specificato con il tasto -t, ma se questo parametro non viene specificato, l'azione verrà eseguita per la tabella predefinita - filtro.

<команда>

I comandi indicano che tipo di azione eseguiamo su netfilter, ad esempio creare o eliminare una regola.

<цепочка>

Ogni tabella ha delle catene, per ognuna delle quali vengono create le regole stesse. Ad esempio, per la tabella dei filtri sopra, ci sono tre catene predefinite: INPUT (pacchetti in entrata), OUTPUT (in uscita) e FORWARD (transito).

[Camera]

Alcuni comandi richiedono di specificare un numero di regola, ad esempio, per l'eliminazione o la modifica.

<условие>

Una condizione descrive i criteri per l'elaborazione di una particolare regola.

<действие>

Bene, in effetti, cosa facciamo con il pacchetto se si adatta ai criteri della condizione.

* Per essere onesti, vale la pena notare che il tasto azione non deve andare alla fine. È solo che questo formato si trova più spesso nelle istruzioni e facilita la lettura delle regole.

Chiavi Iptables ed esempi del loro utilizzo

Per lavorare con le tabelle (iptables -t)

Come promemoria, tutte le regole in netfilter sono distribuite su tabelle. Per lavorare con una tabella specifica, è necessario utilizzare l'opzione -t.

Comandi

Le seguenti chiavi determinano cosa fa l'utilità iptables.

Chiave Descrizione ed esempi
-UN Aggiunta di una regola alla fine dell'elenco:
iptables -A INPUT -s 192.168.0.15 -j DROP
negare in entrata dal 192.168.0.15.
-D Rimozione di una regola:
iptables -D INGRESSO 10
eliminare la regola nella catena INPUT numerata 10.
-IO Inserimento di una regola in una parte specifica della lista:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
inserire la regola 5 nella lista.
-R Sostituzione della regola.
iptables -R USCITA 5 -s 192.168.0.15 -j ACCEPT
sostituire la nostra quinta regola dal proibire al permissivo.
-F Cancellare le regole nella catena.
iptables -F INPUT
-Z Reimpostazione delle statistiche.
iptables -Z INPUT
-N Creazione catena.
iptables -N CHAINNEW
-X Eliminazione di una catena.
iptables -X CHAINNEW
-P Definizione di una regola predefinita.
iptables -P INPUT DROP
-E Rinominare la catena.
iptables -E CHAINNEW CHAINOLD

Condizioni

Queste chiavi definiscono le condizioni della regola.

Chiave Descrizione ed esempi
-P Protocollo di rete. Le opzioni valide sono TCP, UDP, ICMP o ALL.
iptables -A INPUT -p tcp -j ACCEPT
consentire tutte le connessioni TCP in entrata.
-S Indirizzo di origine: nome host, indirizzo IP o sottorete in notazione CIDR.
iptables -A INPUT -s 192.168.0.50 -j DROP
nega in entrata dall'host 192.168.0.50
-D Indirizzo di destinazione. Il principio di utilizzo è simile al precedente interruttore -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
nega in uscita all'host 192.168.0.50
-io La scheda di rete attraverso la quale vengono ricevuti i pacchetti (INPUT).
iptables -A INPUT -i eth2 -j DROP
nega l'ingresso per l'interfaccia ethernet eth2.
-o Scheda di rete da cui partono i pacchetti (OUTPUT).
iptables -A OUTPUT -o eth3 -j ACCEPT
consenti l'uscita dall'interfaccia ethernet eth3.
--dport Porto di arrivo.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
consentire l'ingresso sulla porta 80.
--sport Porta di origine.
iptables -A INPUT -p tcp --sport 1023 -j DROP
nega in entrata dalla porta 1023.

Le chiavi elencate supportano anche la costruzione utilizzando il segno ! ... Inverte la condizione, per esempio
iptables -A INPUT -s! 192.168.0.50 -j DROP
negherà la connessione a tutti gli host tranne 192.168.0.50.

Azioni

Azioni da eseguire su un pacchetto che corrisponde ai criteri della condizione. Ogni tabella ha il proprio set di azioni valide. Specificato utilizzando una chiave -J.

tavolo Azione Descrizione
filtro ACCETTARE Risolve il pacchetto.
GOCCIOLARE Rifiuta il pacco.
RIFIUTARE Impedisce l'invio del messaggio alla fonte.
nato MASCHERA Per i pacchetti in uscita, sostituisce l'indirizzo IP di origine con l'indirizzo dell'interfaccia da cui parte il pacchetto.
SNAT Simile a MASQUERADE, ma specificando un'interfaccia di rete specifica, il cui indirizzo verrà utilizzato per lo spoofing.
DNAT Spoofing degli indirizzi per i pacchetti in arrivo.
REINDIRIZZARE Reindirizza la richiesta a una porta diversa sullo stesso sistema.
storpiare TOS Modifica del campo TOS (priorità di traffico).
DSCP Modifica DSCP (anche prioritizzazione del traffico).
TTL Modifica TTL (durata del pacchetto).
HL Simile a TTL, ma per IPv6.
SEGNARE Marcatura della confezione. Utilizzato per il successivo filtraggio o sagomatura.
CONNMARK Marcatura di connessione.
TCPMSS Modifica del valore MTU.

Esempi di comandi iptables comunemente usati

Comandi comuni

Visualizza le regole con i loro numeri:

iptables -L --numeri-riga

Per ogni tabella, devi guardare le regole separatamente:

iptables -t nat -L --line-numbers

Rimuovi tutte le regole:

Imposta regole predefinite:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* in questi esempi, per impostazione predefinita, per tutti i pacchetti in entrata (INPUT) e in uscita (OUTPUT), funzionerà la regola di negazione (DROP).

Permettere tutto

Metodo 1. Aggiungendo una regola:

iptables -I INPUT 1 -j ACCEPT

iptables -I OUTPUT 1 -j ACCEPT

iptables -I FORWARD 1 -j ACCEPT

* questi tre comandi creeranno regole che consentiranno tutti i pacchetti in entrata, in uscita e in transito.

Metodo 2. Pulendo le regole:

* qui prima rimuoviamo tutte le regole (-F), quindi impostiamo la politica predefinita: consenti ingresso, uscita e transito (-S).

Metodo 3. Disabilitazione del servizio (è conveniente disabilitare il firewall per un po' per diagnosticare i problemi):

servizio iptables si interrompe

Lavorare con le regole

Aggiungi una regola alla fine dell'elenco:

iptables -A INPUT -p tcp --dport 25 -j ACCEPT

iptables -A INPUT -p tcp -s! 192.168.0.25 --dport 993 -i eth0 -j ACCEPT

Aggiungi intervallo di porte:

iptables -A INPUT -p tcp --dport 3000: 4000 -j ACCEPT

* in questo caso da 3000 a 4000.

Inserisci regola:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 --dport 53 -i eth1 -j ACCEPT

Blocca un indirizzo IP specifico dalla porta 25:

iptables -I INPUT 1 -s 1.1.1.1 -p tcp --dport 25 -j DROP

Port forwarding

Ci sono due modi per configurare.

1. Regole PREROUTING + POSTROUTING:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 --dport 22 -j DNAT --to-destination 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 --sport 2222 -j SNAT --to-source 19.8.232.80:22

* dove 19.8.232.80 - l'indirizzo al quale ascoltiamo le richieste di connessione; 22 - porta per l'inoltro; 192.168.1.15 - indirizzo IP interno, al quale trasferiamo tutte le richieste; 2222 - porta interna.

2. Regole PREROUTING + FORWARD:

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 22 -j DNAT --to-destination 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 --dport 22 -m state --state NEW, ESTABLISHED, RELATED -j ACCEPT

Iptables è principalmente responsabile del filtraggio dei pacchetti. Configurare iptables manualmente è un compito piuttosto arduo. Non aspettarti di capire questa istantanea. Fortunatamente, ci sono molti strumenti che possono aiutarti se non hai ancora capito iptables e hai urgente bisogno di proteggere il sistema: fwbuilder, firestarter, guarddog, arno firewall - infatti, questa è una GUI per iptables. La risposta inequivocabile è che non c'è di meglio. Sta a te scegliere. Tuttavia, l'articolo di oggi è dedicato specificamente a iptables ed è diviso in due parti: teoria e pratica. I più impazienti possono fare subito la parte pratica, anche se questo approccio è sconsigliato.

Attenzione! Tutte le azioni con iptables vengono eseguite per conto dell'utente privilegiato!

Teoria

Formato record iptables iptables [-t tabella] [comando] [azione] Esempio: iptables -t filtro -A INPUT ACCEPT

Azioni

  • ACCETTO - Accetta pacchetto
  • DROP - Lascia cadere un pacchetto
  • DNAT - Converti indirizzo di destinazione
  • SNAT - Modifica l'indirizzo IP in uscita nell'intestazione del pacchetto
  • LOG - Registra pacchetti ed eventi
  • MARCHIO - Metti un segno su un pacco
  • MASQUERADE - Modifica l'indirizzo IP in uscita nell'intestazione del pacchetto (a differenza di SNAT - funziona con IP dinamico)
  • QUEUE - Accoda un pacchetto per l'elaborazione
  • REDIRECT - Reindirizza pacchetto/stream su un'altra porta
  • REJECT - Lascia il pacco + avvisa il sistema remoto di ciò. che il suo pacco è stato rifiutato
  • RETURN - Ferma il pacchetto in movimento lungo la catena corrente e torna alla catena chiamante

Comandi

  • -A - Aggiungi la regola alla catena
  • -D - Rimuovi la regola dalla catena
  • -R - Sostituisci una regola con un'altra
  • -I - Inserisci nuova regola
  • -L - Elenca le regole esistenti
  • -F - Reimposta regole
  • -Z - Azzeramento contatori nella catena specificata
  • -N - Crea una nuova catena con il nome dato
  • -X - Elimina la catena
  • -P - Imposta la politica predefinita per la catena selezionata
  • -E - Rinomina catena personalizzata

Criteri (generali)

  • -p - Specifica il tipo di protocollo
  • -s è l'IP di origine del pacchetto
  • -d - l'indirizzo IP del destinatario del pacchetto
  • -j - Specifica l'azione per la regola
  • -i - L'interfaccia da cui è stato ricevuto il pacchetto
  • -o - Specifica il nome dell'interfaccia di output
  • -f - Espande la regola a tutti i frammenti del pacchetto

Criteri TCP:

  • –Tcp-flags - Specifica la maschera e i flag del pacchetto

Criteri UDP:

  • –Sport - Porta da cui è stato inviato il pacchetto
  • –Dport - Porta a cui è indirizzato il pacchetto

Altro in man iptables

Pratica

Visualizzazione della configurazione corrente

$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt ​​source destinazione Chain FORWARD (policy ACCEPT) target prot opt ​​source destinazione Chain OUTPUT (policy ACCEPT) target prot opt ​​source destinazione

Se vedi qualcosa del genere, il tuo firewall non è ancora configurato e consente tutto. Sistemiamo la situazione.

Impostazione della politica predefinita

  • iptables -P INPUT DROP - blocca i pacchetti in entrata
  • iptables -P OUTPUT ACCEPT - consente pacchetti in uscita
  • iptables -P FORWARD DROP - elabora i pacchetti che sono arrivati ​​al server da un'altra macchina e sono in attesa di ulteriore inoltro. Nell'esempio è bloccato. In questo caso, dovrai aggiungere regole per le macchine attendibili.

Poiché i pacchetti INPUT in entrata sono bloccati, scriviamo la regola:

$ sudo iptables -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT

Ciò consentirà di ricevere pacchetti da una connessione precedentemente stabilita e accettare nuovi pacchetti generati da tale connessione.

Oppure specificando il tipo di protocollo:

$ sudo iptables -A INPUT -p TCP -m state --state ESTABLISHED, RELATED -j ACCEPT $ sudo iptables -A INPUT -p UDP -m state --state ESTABLISHED, RELATED -j ACCEPT

Ora l'interfaccia locale:

$ sudo iptables -A INPUT -i lo -j ACCEPT

  • NUOVO - dati che iniziano una nuova connessione.
  • ESTABLISHED - un pacchetto proveniente da una connessione già stabilita.
  • CORRELATO - nuovo pacchetto dati, ma generato dalla vecchia connessione stabilita
  • NON VALIDO - così comprensibile

$ sudo iptables-save> /etc/iptables.up.rules

Abilita queste regole:

$ sudo iptables-restore< /etc/iptables.up.rules

E vedi la differenza:

$ sudo iptables-L

Avvio di iptables all'avvio del sistema:

Nella directory /etc/init.d, crea un file chiamato iptables

$ sudo touch /etc/init.d/iptables

In esso prescriviamo quanto segue:

#! / bin / sh / sbin / iptables-restore< /etc/iptables.up.rules

Rendiamo eseguibile il file iptables:

$ sudo chmod + x /etc/init.d/iptables

Aggiungilo all'esecuzione automatica

$ sudo update-rc.d -n iptables defaults

Esecuzione di iptables sulla connessione di rete:

$ sudo echo "#! / sbin / iptables-restore"> /etc/network/if-up.d/iptables.up.rules $ sudo iptables-save >> /etc/network/if-up.d/iptables. up.rules $ sudo chmod + x /etc/network/if-up.d/iptables.up.rules

Nota: in qualsiasi momento puoi controllare se le tue regole sono caricate semplicemente inserendo iptables-save da root

Per archlinux, il salvataggio delle regole di iptables viene eseguito con il comando:

$ sudo rc.d salva iptables

Un piccolo script iniziale (regole, iptables faq) per un desktop o un semplice server. In questo caso, esempi di lavoro con le porte di uno o un altro software in esecuzione sul tuo computer. Le misure di sicurezza devono essere osservate su qualsiasi computer. Il mito che Linux sia più sicuro non è vero, tutto dipende dalle mani maldestre dell'amministratore. Esistono sistemi Windows ben protetti e sistemi Linux aperti a quasi tutti. Pertanto, dovresti ancora pensare un po 'alla protezione della rete del tuo computer. Di seguito vengono aggiunte alcune regole di iptables che potrebbero tornare utili all'inizio.

Specificamente sostituito $ IPT con / sbin / iptables, se qualcuno ha bisogno di una sola regola per non cambiare nulla, basta copiare ed eseguire. Naturalmente, ci sono ancora poche regole qui, non ci sono VPN diverse, ecc., Se vuoi, aggiungi.

Queste righe possono essere copiate interamente in qualsiasi script ed eseguite semplicemente. Per i casi ordinari, questo è abbastanza. Se un'applicazione non può essere online, è stata aggiunta la registrazione. Basta aprire tail -f / var / log / syslog (o il tuo se diverso da Ubuntu) e guardare! Se hai domande, aggiungile alla discussione, le risolveremo insieme.

PS Oltre a queste regole, pensa a cosa prendere dall'articolo Ottimizzazione TCP.

Come rimuovere una regola in iptables

Inserito da Alexey Ubozhenko

Più volte mi sono imbattuto nel fatto che anche le persone che non sono stupide in generale commettono errori assolutamente imperdonabili. Ad esempio, aprono la porta su cui è in esecuzione il database all'intera Internet.

Blog di amministrazione del sistema. Articoli su Linux, Windows, storage NetApp e virtualizzazione.

Questo è spesso il caso dei principianti di DevOps che hanno programmato per tutta la vita e ora le loro responsabilità includono anche la configurazione dei server. Ci sono buoni tutorial in rete sulla configurazione di base del firewall in Linux e altri * nix, ma spesso questi sono fogli per molti schermi. Quindi, si spera che qualcuno troverà utile questo tutorial più conciso.

Importante!È molto facile licenziare per errore un'auto in modo tale da non entrarci più. Questo è particolarmente vero per il cloud hosting. Ad esempio, se in AWS chiudi tutte le porte da 1024 a 65536, per qualche motivo la macchina viene chiusa dopo un riavvio. generalmente tutto porti. Se stai ospitando nel cloud, è meglio configurare il tuo firewall tramite l'interfaccia web ospitata.

Una breve nota sulla terminologia. Il firewall integrato nel kernel Linux si chiama Netfilter e iptables è l'utility per la gestione di questo firewall. Molte persone pensano erroneamente che il firewall si chiami iptables. Questo non è vero. Dire qualcosa come "Sto filtrando i pacchetti con iptables" mostra agli altri che sei analfabeta.

In generale, quali attività possono essere risolte utilizzando Netfilter:

  • Consentire/negare il traffico in ingresso a porte specifiche utilizzando protocolli specifici (IPv4/IPv6, TCP/UDP) da indirizzi (IP, MAC) o sottoreti specificati;
  • Tutto è uguale per il traffico in uscita;
  • Puoi, ad esempio, ignorare completamente tutti i pacchetti ICMP;
  • Configurazione di NAT, vedere il post sull'installazione e la configurazione di OpenVPN;
  • Ho sentito che i veri guru possono impostare una protezione contro DDoS e forza bruta, limitare l'accesso alla rete ad applicazioni, utenti o gruppi specifici e fare altre cose folli;

Nota che l'utilità iptables mi è sembrata all'inizio estremamente scomoda rispetto a ipfw in FreeBSD. Fortunatamente, dopo averci lavorato per un po', tutti questi flag come -A, -D, -j e altri diventano familiari, quindi sii paziente. Diamo un'occhiata ai comandi principali.

Mostra tutte le regole:

Potresti notare che Netfilter ha una sorta di "catene" - almeno INPUT, OUTPUT e FORWARD.

Personalmente ho anche una catena Docker sulla mia auto. Per la prima volta, puoi pensare ai primi due come a tutto il traffico in entrata e in uscita, rispettivamente, e dimenticare temporaneamente il resto. È probabile che non ne avrai mai bisogno.

Rimuovi tutte le regole:

Modifica il concatenamento dei criteri (comportamento predefinito):

iptables -P INPUT DROP
iptables -P INPUT ACCEPT

Nega l'accesso dall'host/sottorete:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/16-j DROP

Puoi anche utilizzare i nomi di dominio:

iptables -A INPUT -s esempio.com -j DROP

Escluse le connessioni in uscita:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

I negativi possono essere utilizzati nelle regole:

iptables -A INPUT! -s 123.45.67.89 -j DROP

Eliminazione di una regola in base al suo numero nella catena:

iptables -D INGRESSO 1

Rimozione di una regola in base a ciò che fa:

iptables -D INPUT -s 123.45.67.89 -j DROP

L'opzione -p indica il protocollo. È possibile utilizzare all, icmp, tcp, udp o il numero di protocollo da / etc / protocols. Il flag -sport indica la porta da cui è stato inviato il pacchetto e -dport indica la porta di destinazione:

iptables -A INPUT -p tcp -sport80-j ACCEPT
iptables -A INPUT -p tcp -dport80-j ACCEPT

Inserisci una regola all'inizio di una catena:

iptables -I INGRESSO ...

Oppure puoi specificare una posizione specifica:

iptables-save> /etc/iptables.rules

Regole di ripristino:

iptables-restore

Vediamo ora alcuni esempi pratici. Si tratta, ad esempio, dell'emulazione di una net split in un test che verifica il comportamento di un'applicazione che utilizza Akka Cluster:

run (node1, s "iptables -A INPUT -s $ node2 -j DROP")
run (node1, s "iptables -A INPUT -s $ node3 -j DROP")
run (node1, s "iptables -A OUTPUT -d $ node2 -j DROP")
run (node1, s "iptables -A OUTPUT -d $ node3 -j DROP")

Il recupero è esattamente lo stesso, tranne per il fatto che il flag -A viene sostituito con il flag -D.

Un altro esempio. È necessario scoprire quali porte sono in ascolto sulla macchina e chiudere quelle extra. Andiamo in macchina e diciamo:

Esempio di uscita:

Connessioni Internet attive (solo server)
Proto Recv-Q Send-Q Indirizzo locale Indirizzo estero Stato PID / Nome programma
tcp 0 0 0.0.0.0:80 0.0.0.0:* ASCOLTA 3210 / nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* ASCOLTA 1789 / epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* ASCOLTA 797 / sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* ASCOLTA 990 / postgres

Nginx e SSHd stanno navigando in Internet, va bene. PostgreSQL ascolta solo l'interfaccia locale, quindi non ci sono problemi nemmeno con essa. Ma l'epmd sporge (puoi controllarlo con telnet da un'altra macchina), e questo non va bene. Puoi chiudere solo la porta 4369. Come farlo è stato mostrato sopra. Oppure puoi andare ancora oltre e negare tutte le connessioni dall'esterno alla porta 81 e precedenti:

iptables -A INPUT -m multiporta \
-p tcp —dports81: 65535! -s 127.0.0.0/8-j DROP

Utilizza l'estensione multiporta per specificare gli intervalli di porte.

Controlliamo che tutto funzioni. Se va bene, salva le regole:

iptables-save> /etc/iptables.rules

Per prendere le regole all'avvio del sistema, crea un nuovo file /etc/network/if-pre-up.d/iptables:

iptables-restoreuscita0

...e diciamo:

chmod + x /etc/network/if-pre-up.d/iptables

Questo metodo è stato verificato per funzionare su Ubuntu 14.04 LTS.

Anche Debian dovrebbe funzionare. Puoi trovare una descrizione di un modo alternativo per ripristinare le regole del firewall all'avvio del sistema nell'articolo già menzionato su OpenVPN.

Risorse aggiuntive per chi vuole saperne di più su Netfilter:

Come configuri i firewall sui tuoi server?

Tag: Linux, Sicurezza, Reti.

L'utilità della riga di comando iptables viene utilizzata per configurare il firewall netfilter integrato in un sistema basato su kernel Linux.

Questo manuale è adatto sia per i manichini che vogliono comprendere gli aspetti della sicurezza della rete, sia per gli specialisti esperti come un cheat sheet.

Principio di impostazione

La sintassi generale per l'utilizzo di iptables è:

iptables -t<таблица> <команда> <цепочка>[Camera]<условие> <действие>

<таблица>

Le regole di Netfilter sono distribuite su 4 tabelle, ognuna delle quali ha il proprio scopo (maggiori dettagli di seguito). Viene specificato con il tasto -t, ma se questo parametro non viene specificato, l'azione verrà eseguita per la tabella predefinita - filtro.

<команда>

I comandi indicano che tipo di azione eseguiamo su netfilter, ad esempio creare o eliminare una regola.

<цепочка>

Ogni tabella ha delle catene, per ognuna delle quali vengono create le regole stesse. Ad esempio, per la tabella dei filtri sopra, ci sono tre catene predefinite: INPUT (pacchetti in entrata), OUTPUT (in uscita) e FORWARD (transito).

[Camera]

Alcuni comandi richiedono di specificare un numero di regola, ad esempio, per l'eliminazione o la modifica.

<условие>

Una condizione descrive i criteri per l'elaborazione di una particolare regola.

<действие>

Bene, in effetti, cosa facciamo con il pacchetto se si adatta ai criteri della condizione.

* Per essere onesti, vale la pena notare che il tasto azione non deve andare alla fine. È solo che questo formato si trova più spesso nelle istruzioni e facilita la lettura delle regole.

Chiavi Iptables ed esempi del loro utilizzo

Per lavorare con le tabelle (iptables -t)

Come promemoria, tutte le regole in netfilter sono distribuite su tabelle. Per lavorare con una tabella specifica, è necessario utilizzare l'opzione -t.

Comandi

Le seguenti chiavi determinano cosa fa l'utilità iptables.

Chiave Descrizione ed esempi
-UN Aggiunta di una regola alla fine dell'elenco:
iptables -A INPUT -s 192.168.0.15 -j DROP
negare in entrata dal 192.168.0.15.
-D Rimozione di una regola:
iptables -D INGRESSO 10
eliminare la regola nella catena INPUT numerata 10.
-IO Inserimento di una regola in una parte specifica della lista:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
inserire la regola 5 nella lista.
-R Sostituzione della regola.
iptables -R USCITA 5 -s 192.168.0.15 -j ACCEPT
sostituire la nostra quinta regola dal proibire al permissivo.
-F Cancellare le regole nella catena.
iptables -F INPUT
-Z Reimpostazione delle statistiche.
iptables -Z INPUT
-N Creazione catena.
iptables -N CHAINNEW
-X Eliminazione di una catena.
iptables -X CHAINNEW
-P Definizione di una regola predefinita.
iptables -P INPUT DROP
-E Rinominare la catena.
iptables -E CHAINNEW CHAINOLD

Condizioni

Queste chiavi definiscono le condizioni della regola.

Chiave Descrizione ed esempi
-P Protocollo di rete. Le opzioni valide sono TCP, UDP, ICMP o ALL.
iptables -A INPUT -p tcp -j ACCEPT
consentire tutte le connessioni TCP in entrata.
-S Indirizzo di origine: nome host, indirizzo IP o sottorete in notazione CIDR.
iptables -A INPUT -s 192.168.0.50 -j DROP
nega in entrata dall'host 192.168.0.50
-D Indirizzo di destinazione. Il principio di utilizzo è simile al precedente interruttore -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
nega in uscita all'host 192.168.0.50
-io La scheda di rete attraverso la quale vengono ricevuti i pacchetti (INPUT).
iptables -A INPUT -i eth2 -j DROP
nega l'ingresso per l'interfaccia ethernet eth2.
-o Scheda di rete da cui partono i pacchetti (OUTPUT).
iptables -A OUTPUT -o eth3 -j ACCEPT
consenti l'uscita dall'interfaccia ethernet eth3.
—Dport Porto di arrivo.
iptables -A INPUT -p tcp -dport 80 -j ACCEPT
consentire l'ingresso sulla porta 80.
-Sport Porta di origine.
iptables -A INPUT -p tcp -sport 1023 -j DROP
nega in entrata dalla porta 1023.

Le chiavi elencate supportano anche la costruzione utilizzando il segno ! .

Configurare netfilter con iptables

Inverte la condizione, per esempio
iptables -A INPUT -s! 192.168.0.50 -j DROP
negherà la connessione a tutti gli host tranne 192.168.0.50.

Azioni

Azioni da eseguire su un pacchetto che corrisponde ai criteri della condizione. Ogni tabella ha il proprio set di azioni valide. Specificato utilizzando una chiave -J.

tavolo Azione Descrizione
filtro ACCETTARE Risolve il pacchetto.
GOCCIOLARE Rifiuta il pacco.
RIFIUTARE Impedisce l'invio del messaggio alla fonte.
nato MASCHERA Per i pacchetti in uscita, sostituisce l'indirizzo IP di origine con l'indirizzo dell'interfaccia da cui parte il pacchetto.
SNAT Simile a MASQUERADE, ma specificando un'interfaccia di rete specifica, il cui indirizzo verrà utilizzato per lo spoofing.
DNAT Spoofing degli indirizzi per i pacchetti in arrivo.
REINDIRIZZARE Reindirizza la richiesta a una porta diversa sullo stesso sistema.
storpiare TOS Modifica del campo TOS (priorità di traffico).
DSCP Modifica DSCP (anche prioritizzazione del traffico).
TTL Modifica TTL (durata del pacchetto).
HL Simile a TTL, ma per IPv6.
SEGNARE Marcatura della confezione. Utilizzato per il successivo filtraggio o sagomatura.
CONNMARK Marcatura di connessione.
TCPMSS Modifica del valore MTU.

Esempi di comandi iptables comunemente usati

Comandi comuni

Visualizza le regole con i loro numeri:

iptables -L —numeri di riga

Per ogni tabella, devi guardare le regole separatamente:

iptables -t nat -L --line-numbers

Rimuovi tutte le regole:

Imposta regole predefinite:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* in questi esempi, per impostazione predefinita, per tutti i pacchetti in entrata (INPUT) e in uscita (OUTPUT), funzionerà la regola di negazione (DROP).

Permettere tutto

Metodo 1. Aggiungendo una regola:

iptables -I INPUT 1 -j ACCEPT

iptables -I OUTPUT 1 -j ACCEPT

iptables -I FORWARD 1 -j ACCEPT

* questi tre comandi creeranno regole che consentiranno tutti i pacchetti in entrata, in uscita e in transito.

Metodo 2. Pulendo le regole:

* qui prima rimuoviamo tutte le regole (-F), quindi impostiamo la politica predefinita: consenti ingresso, uscita e transito (-S).

Metodo 3. Disabilitazione del servizio (è conveniente disabilitare il firewall per un po' per diagnosticare i problemi):

Lavorare con le regole

Aggiungi una regola alla fine dell'elenco:

iptables -A INPUT -p tcp -dport 25 -j ACCEPT

iptables -A INPUT -p tcp -s! 192.168.0.25 —dport 993 -i eth0 -j ACCEPT

Aggiungi intervallo di porte:

iptables -A INPUT -p tcp -dport 3000: 4000 -j ACCEPT

* in questo caso da 3000 a 4000.

Inserisci regola:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 -dport 53 -i eth1 -j ACCEPT

Port forwarding

Ci sono due modi per configurare.

1. Regole PREROUTING + POSTROUTING:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —to-destination 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sport 2222 -j SNAT —to-source 19.8.232.80:22

* dove 19.8.232.80 - l'indirizzo al quale ascoltiamo le richieste di connessione; 22 - porta per l'inoltro; 192.168.1.15 2222 - porta interna.

2. Regole PREROUTING + FORWARD:

iptables -t nat -A PREROUTING -p tcp -i eth1 —dport 22 -j DNAT —to-destination 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 —dport 22 -m state —state NEW, ESTABLISHED, RELATED -j ACCEPT

* dove eth1- l'interfaccia di rete su cui ascoltiamo le richieste; 22 - porta per l'inoltro; 192.168.1.15 - indirizzo IP interno, al quale trasferiamo tutte le richieste; 2222 - porta interna.

Avvio della configurazione

Consenti SSH:

iptables -A INPUT -p tcp -dport 22 -j ACCEPT

Impostiamo la politica di vietare le entrate e consentire tutte le uscite:

iptables -P OUTPUT ACCEPT

Crea una regola affinché apt-get funzioni correttamente:

iptables -A INPUT -p tcp —sport 80 -m state —state ESTABLISHED -j ACCEPT

Consenti ICMP (per il comando ping):

iptables -A INPUT -p icmp -j ACCEPT

Regole di salvataggio (permanenti)

Per impostazione predefinita, tutte le regole smettono di funzionare dopo aver riavviato la rete o il computer. Esistono diversi modi per configurare le regole per preservare le regole dopo un riavvio.

Metodo 1.iptables-save

Salviamo le regole in un file:

iptables-save> /etc/iptables.rules

Apri le impostazioni di rete:

vi / etc / rete / interfacce

e aggiungi la riga:

pre-up iptables-restore< /etc/iptables.rules

Metodo 2.iptables-persistent

Installa il pacchetto iptables-persistent:

apt install iptables-persistent

Per salvare le regole, inserisci il comando:

servizio iptables-salvataggio persistente

Metodo 3.service iptables

Funziona su versioni precedenti di Linux:

Metodo 4.iptables.init

Funziona su CentOS:

/usr/libexec/iptables/iptables.init salva

Ubuntu e CentOS

Non esiste iptables per impostazione predefinita sui moderni sistemi operativi Ubuntu e CentOS.

È necessario installarlo o utilizzare utilità più recenti.

Su CentOS

Firewall-cmd viene utilizzato come programma di gestione del firewall standard. Per maggiori dettagli, leggi le istruzioni Come configurare firewalld in CentOS.

Se hai bisogno di usare iptables, installa il pacchetto di utilità:

yum install iptables-services

Disabilita firewalld:

systemctl ferma firewalld

systemctl disabilita firewalld

Abilitiamo ed eseguiamo iptables:

systemctl abilita iptables

In Ubuntu

Ufw è ora utilizzato per gestire il firewall.

Per lavorare con iptables, installa il seguente pacchetto:

apt-get install iptables-persistent

Disabilita ufw:

# Rete # Sicurezza # UNIX # Ubuntu # Linux

Questo tutorial ti è stato utile?

OLTRE IL MURO DI FUOCO:
FIREWALL (FIREWALL) E GATEWAY INTERNET
DEBIAN GNU / LINUX 4.0 ECC

Una guida pratica per organizzare un accesso sicuro a Internet
da un computer separato e da una rete locale in Debian GNU / Linux 4.0 Etch
Un po' di teoria

Ogni connessione a Internet non solo rende possibile la connessione a vari server e siti, ma crea anche un potenziale pericolo di penetrazione nel nostro computer dall'esterno. Questo pericolo non dovrebbe essere trascurato, poiché la maggior parte dei tentativi di accesso non autorizzato ai computer degli utenti da Internet oggi fa parte di un'attività criminale ben organizzata. Dopo una compromissione riuscita del tuo sistema, cercheranno di utilizzare il tuo computer per inviare spam o per organizzare attacchi DoS su altri computer o per altri scopi nefasti. Trascurare questo pericolo, nel migliore dei casi, aumenterà i costi del traffico e rallenterà le prestazioni del tuo computer; nel peggiore dei casi, può coinvolgerti inconsapevolmente nelle attività criminali dei gruppi informatici.

La situazione è aggravata dal fatto che in alcuni sistemi operativi (ancora) diffusi, molte porte vengono lasciate aperte per impostazione predefinita, il che consente a un utente malintenzionato di connettersi da Internet all'utente senza che quest'ultimo se ne accorga.

Per impedire connessioni non autorizzate dall'esterno e filtrare il traffico in entrata / in uscita nel sistema operativo, è necessario utilizzare un programma speciale - firewall(firewall inglese), noto anche come firewall e firewall... Di seguito è riportato un semplice esempio di configurazione di un firewall in un sistema operativo gratuito. Debian GNU / Linux 4.0.

L'uso di un firewall diventa particolarmente rilevante se si dispone di più di un computer, ma rete domestica o aziendale i cui computer sono online.

Anche una piccola rete locale deve essere adeguatamente organizzata. Supponiamo che tu disponga di un punto di accesso a Internet ad alta velocità (ad esempio un modem ADSL) con un'interfaccia Ethernet (ovvero di rete).

C'è la tentazione (riscaldata da raccomandazioni analfabeti, come, ad esempio, nelle istruzioni per il mio modem ADSL) di collegare il modem direttamente allo switch, quindi collegarsi allo switch Tutti computer della rete locale. In questo caso, il modem emette dinamicamente gli indirizzi IP locali attraverso lo switch, ma si scopre che ogni computer è lasciato solo con Internet! Né un modem né uno switch possono diventare un ostacolo per un malvagio. Un aggressore può scansionare Tutti computer di una rete locale organizzata in questo modo.

La soluzione logica e sicura è creare barriera tra il modem e la rete locale - sotto forma di un computer separato con un "firewall" (firewall) configurato su di esso. Questo computer ha due interfacce: una "guarda" a Internet (cioè è collegata fisicamente al modem), l'altra è diretta alla rete locale (ed è collegata fisicamente allo switch a cui sono collegati anche gli altri computer collegato). Poiché il nostro computer con un firewall è ora un punto nodale per altri computer per accedere a Internet, viene anche chiamato gateway(Porta inglese).

Con una tale organizzazione della rete locale, la probabilità di hacking è significativamente ridotta: un utente malintenzionato "vede" solo il gateway da Internet e sul gateway è installato un firewall e non è facile hackerarlo.

Configurare iptables su Linux for dummies

I computer della rete locale possono navigare in Internet e rimanere relativamente sicuri.

Configurare un firewall usando il configuratore arno-iptables-firewall

Per organizzare un firewall in GNU/Linux il programma è usato iptables, che, di norma, viene installato immediatamente durante l'installazione della maggior parte delle distribuzioni. V Debian GNU/Linux puoi verificarlo eseguendo con i diritti di amministratore attitudine... Se necessario, installa iptables.

Tuttavia, configurazione manuale iptablesè un compito non banale e può essere svolto solo da specialisti nel campo dell'amministrazione di sistema. Pertanto, per configurare le regole con cui opererà il firewall, è meglio usare configuratore speciale... V Debian GNU/Linux Questo programma arno-iptables-firewall... Quando viene lanciato, pone una serie di domande, sulla base delle quali genera regole per il funzionamento del firewall. iptables.

Digitiamo nella console con i diritti di superutente:

#aptitude installa arno-iptables-firewall

All'inizio dell'installazione, il programma chiederà se vogliamo davvero configurare il firewall con esso. iptables:

Innanzitutto, è necessario specificare l'interfaccia esterna - "guardando" a Internet, ad es. collegato al modem. Le impostazioni dell'interfaccia sono definite nel file di configurazione /etc/rete/interfacce... Ad esempio, può assomigliare a questo:

# Questa è l'interfaccia lo - punta alla nostra macchina stessa. auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 # Questa è l'interfaccia eth0, che è connessa a Internet (modem ADSL) # La sua particolarità è che l'indirizzo IP gli viene assegnato dall'ISP in modo dinamico, # quindi l'opzione dhcp auto eth0 è impostata iface eth0 inet dhcp # Questa è l'interfaccia che affronta la rete locale # L'indirizzo della rete locale sarà 192.168.2.0/24 # Per motivi di sicurezza nella rete locale, il gateway ha un indirizzo IP statico - 192.168.2.1, # quindi viene impostata l'opzione static # Net mask - 255.255.255.0 # L'indirizzo network broadcast in questo caso sarà 192.168.2.255 auto eth1 iface eth1 inet static address 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255

Quindi, guardando le impostazioni /etc/rete/interfacce, indichiamo al configuratore del firewall che la nostra interfaccia esterna è eth0:

Quando viene chiesto se il provider ci fornisce un indirizzo IP dinamicamente(usando DHCP), rispondiamo affermativamente:

La domanda successiva è quali servizi verranno forniti dal nostro computer agli utenti Internet esterni. Non ne abbiamo! Non ci occupiamo di web hosting professionale e non intendiamo distribuire informazioni all'esterno. Lasciamo la riga vuota.

Quindi viene la domanda se forniremo servizi su UDP. Anche no - e lascia anche la riga vuota!

Abbiamo bisogno di essere ping dal mondo esterno (cioè controllare se c'è una connessione con il computer su cui è installato il firewall)? Nel nostro caso, questo è perfettamente accettabile:

Questo completa la configurazione per un singolo computer che non è un gateway LAN. Se intendiamo utilizzare il computer come gateway, dobbiamo rispondere ad alcune altre domande. Indichiamo l'interfaccia con cui il gateway si trova di fronte alla rete locale - nel nostro caso lo è eth1 come è evidente da /etc/rete/interfacce(altrimenti, per un computer "solitario", lascia vuoto questo campo):

Quando viene chiesto se consentire la traduzione NAT, ad es. reindirizzando il traffico da Internet attraverso il gateway alla rete locale e viceversa, rispondiamo "sì" - questo è uno dei nostri compiti principali in questo caso:

Allora sorge la domanda: quale segmento della rete locale può essere ammesso attraverso l'inoltro a reti esterne? Tutti i computer della rete locale hanno il diritto di accedere a Internet; imposta di nuovo il valore 192.168.2.0/24

Infine, confermiamo la nostra volontà di lanciare iptables senza ulteriore verifica da parte nostra delle regole firewall generate automaticamente dal configuratore:

Dopodiché, se tutto è andato bene, viene visualizzato un messaggio simile a quello qui sotto. Apparirà ora ad ogni avvio del computer gateway e informerà dell'avvenuto avvio del firewall:

Arno's Iptables Firewall Script v1.8.8c ——————————————————————————- Controlli di integrità superati ... OK Rilevato modulo IPTABLES ...

Caricamento di moduli IPTABLES aggiuntivi: tutti i moduli IPTABLES caricati! Configurazione / proc /…. impostazioni: Abilitazione anti-spoof con rp_filter Abilitazione protezione SYN-flood tramite SYN-cookie Disabilitazione della registrazione dei marziani Disabilitazione dell'accettazione di messaggi di reindirizzamento ICMP Impostazione del max. numero di connessioni simultanee a 16384 Abilitazione della protezione contro i pacchetti instradati alla sorgente Impostazione dei timeout di conntrack predefiniti Abilitazione della riduzione della capacità di DoS Impostazione predefinita TTL = 64 Disabilitazione dell'ECN (Notifica esplicita di congestione) .. Regole di svuotamento nella tabella dei filtri Impostazione dei criteri (protetti) predefiniti Utilizzo di "info" a livello di log per syslogd Impostazione delle regole del firewall: ——————————————————————— —— - Accettazione di pacchetti dal dispositivo di loopback locale Abilitazione impostazione della dimensione massima del pacchetto tramite MSS Abilitazione TOS di manipolazione Registrazione di scansioni stealth (sonde nmap ecc.) abilitata Registrazione di pacchetti con flag TCP errati abilitata Registrazione di pacchetti NON VALIDI disabilitata Registrazione di pacchetti frammentati abilitato Registrazione accessi da indirizzi riservati abilitato Configurazione regole anti-spoof Lettura regole IPTABLES personalizzate da /etc/arno-iptables-firewall/custom-rules Caricamento plugin (utente) Configurazione policy INPUT per la rete esterna (INET): Ena bling supporto per un IP assegnato da DHCP su interfacce esterne: eth0 Registrazione di host esplicitamente bloccati abilitata Registrazione di connessioni di output locali negate abilitata I pacchetti NON saranno controllati per indirizzi di origine privati ​​Consentire al mondo intero di inviare richieste ICMP (ping) Registrazione di pacchetti di richiesta ICMP (ping) persi abilitata Registrazione di altri pacchetti ICMP persi abilitata Registrazione di possibili scansioni stealth abilitata Registrazione di (altri) tentativi di connessione alle porte PRIVILEGED TCP abilitata Registrazione di (altri) tentativi di connessione alle porte PRIVILEGED UDP abilitata Registrazione di ( altro) tentativi di connessione a porte TCP UNPRIVILEGED abilitate Registrazione di (altri) tentativi di connessione a porte UDP UNPRIVILEGED abilitate Registrazione di altri protocolli IP (non TCP / UDP / ICMP) tentativi di connessione abilitati Registrazione di flooding ICMP abilitata Applicazione della policy INET all'esterno (INET) interfaccia: eth0 (senza una sottorete esterna specificata) Impostazione della politica di INPUT per l'interfaccia (LAN) interna: eth1 Consentire le richieste ICMP (ping) A Consentire tutti gli (altri) protocolli Configurazione della politica FORWARD per le interfacce interne (LAN): eth1 Registrazione delle connessioni LAN-> INET negate FORWARD abilitata Configurazione della politica LAN-> INET: Consentire le richieste ICMP (ping) Consentire tutto (altro ) protocolli Abilitazione masquerading (NAT) tramite interfaccia/e esterna/e: eth0 Aggiunta host/i (interni): 192. 168.2.0 / 24 La sicurezza è APPLICATA per le interfacce esterne nella catena FORWARD 16 gennaio 23:53:12 Sono state applicate tutte le regole del firewall.

Nota 1. Nella maggior parte dei casi, il corretto avvio del firewall avviene dopo la prima comunicazione con il configuratore. Se qualcosa non funziona, si consiglia vivamente di ripetere la configurazione riavviando il configuratore con i diritti di superutente:

# dpkg-reconfigure arno-iptables-firewall

Ciò eliminerà un errore occasionale che potrebbe sorgere rispondendo alle domande del configuratore durante la prima esperienza con esso. Se anche questo non aiuta, puoi provare a correggere manualmente il file di configurazione del programma. arno-iptables-firewall, ovvero: /etc/arno-iptables-firewall/firewall.conf... Potrebbe essere utile visitare il sito principale del creatore di questo programma all'indirizzo http://rocky.eld.leideuniv.nl/. Contiene un manuale molto informativo per lavorare con il programma, un'interessante FAQ e, inoltre, ci sono informazioni sulle nuove versioni del programma.

Nota 2. Non dimenticare quello nessuno un firewall non può garantire al 100% la sicurezza di un computer su Internet. Tuttavia, non puoi trascurare la protezione firewall. Dobbiamo fare tutto ciò che è in nostro potere per poi affidarci alla misericordia di Dio. "Se il Signore non custodisce la città, vana è la sentinella"(Sal 126,1).

Fonte dell'articolo

Ho scritto un post sul blog sulle regole di base di Iptables per l'utente che lavora molto tempo fa e probabilmente dovresti leggerlo e l'articolo correlato su Stateful firewall.

Ma pre kernel 2.6.39 (che include e puoi usarlo per la whitelisting IP se ne hai più di 10 per whitelisting (dove 10 è arbitrario)).

Configurare iptables per i manichini

Il primo stato dell'handle che sappiamo di voler accettare o rimuovere e le interfacce.

Se vuoi solo consentire solo l'IP, senza stato

è più probabile che tu abbia problemi con questo e ti suggerisco di usare lo stato per semplificarti la vita. Ad esempio, non si risolve e sicuramente causerà problemi per alcune applicazioni.

Principali articoli correlati