Firewall, netfilter / iptables

Le due cose necessarie per costruire firewall e Quality of Service (QoS) con Linux sono disponibili due pacchetti di nome netfilter e iproute. Mentre netfilter è un quadro di filtraggio dei pacchetti inclusi nel kernel Linux 2.4 e 2.6, è iproute un pacchetto contenente un po 'di utilità che permettono agli utenti Linux di fare routing avanzato e traffic shaping.
Questo articolo è destinato a introdurre gli strumenti che utilizzeremo in questo articolo. Tuttavia, netfilter e soggetti iproute sono molto grandi, così quello che cercherò di fare in questo articolo è quello di introdurre i lettori che non hanno familiarità con il soggetto, insieme con la costruzione di una bella panoramica per i lettori che già conoscono l'argomento. Ci sono due siti web con un sacco di documentazione su entrambi i progetti per netfilter, http://www.netfilter.org, e per iproute, http://www.lartc.org.

netfilter / iptables

  

netfilter è una parte molto importante del kernel di Linux in termini di sicurezza, pressare pacchetto, e la manipolazione. Il front-end per netfilter è iptables, che "racconta" il kernel di ciò che l'utente vuole a che fare con i pacchetti IP in arrivo, di passaggio, o lasciare la macchina Linux.
Le caratteristiche più utilizzate di netfilter sono packet filtering e network address translation, ma ci sono un sacco di altre cose che possiamo fare con netfilter, come il pacchetto di pressare Layer 7 di filtraggio.
Una spiegazione di massima su come funziona netfilter è simile a questa:

  • L'utente indica il kernel su ciò che deve fare con i pacchetti IP che fluiscono attraverso la casella di Linux utilizzando lo strumento di iptables.
  • La finestra di Linux, quindi, analizza le intestazioni IP su tutti i pacchetti che passano attraverso di essa.
  • Se, quando guardando le intestazioni IP, il kernel si trova regole di corrispondenza, il pacchetto viene manipolato in base alla regola di corrispondenza.

Sarebbe una cosa molto semplice all'inizio, ma in realtà è un processo molto più complicato. netfilter ha pochi Tavoli, Contenente un insieme predefinito di regole, che sono chiamati catene di ciascuno. La tabella di default caricati nel kernel è la tabella di filtro, che contiene tre catene:

  • INGRESSO: Contiene le regole per i pacchetti destinati alla macchina Linux.
  • AVANTI: Contiene le regole per i pacchetti che le vie di Linux della macchina ad un altro indirizzo IP.
  • OUTPUT: Contiene le regole per i pacchetti generati dalla macchina Linux.

Successivamente, il flusso di pacchetti attraverso la pre-routing catena della tabella nat, dove possiamo fare DNAT, il reindirizzamento della porta, ecc
È logico per essere in grado di eseguire la traduzione di rete indirizzo di destinazione prima che il processo di routing si verifica. Come si vedrà di cui all'articolo 4, dove si discutono DNAT più in dettaglio, DNAT è il processo di traduzione di uno (di solito pubblico) l'indirizzo IP in un altro (di solito private). Questo viene fatto modificando l'indirizzo IP di destinazione nell'intestazione del pacchetto IP. netfilter deve fare prima che il kernel prende una decisione di routing in modo che il kernel andrà a cercare il nuovo indirizzo IP di destinazione del pacchetto IP.
Dopo aver attraversato le due catene, il kernel di Linux prende una decisione di routing. Questo non è il lavoro del netfilter. Analizzando l'indirizzo IP di destinazione l'intestazione del pacchetto IP, la casella di Linux sa se il pacchetto deve essere instradato altrove o si è destinati.
Se la casella di Linux è la destinazione per il pacchetto IP, il pacchetto passa attraverso la catena di INPUT tabella mangle per mascherare il pacchetto. Successivamente, il pacchetto viene passato al tavolo filtro di ingresso a catena, dove può essere accettata, rifiutata o cadere. Se il pacchetto viene accettato (per esempio, una richiesta a un server Web in esecuzione sulla nostra Linux box), la casella di Linux genera una risposta a tale pacchetto, che passa attraverso la tabella mangle OUPUT prima catena.
Successivamente, il pacchetto viene fatto passare attraverso la tabella nat OUTPUT catena e la catena table filtro di uscita. A questo punto, la catena tabella mangle POSTROUTING e la catena nat POSTROUTING tabella vengono analizzati e il pacchetto è pronto per essere inviato sull'interfaccia corrispondente.
Le catene qui presentate sono le catene predefinite di ogni tabella (filter, nat e mangle). Tuttavia, gli utenti possono configurare catene personalizzate con nomi personalizzati, e passare i pacchetti di quelle catene dalla catena corrispondente predefiniti. Per esempio, se vogliamo creare alcune regole per l'accesso SSH nella casella di Linux, possiamo creare una catena personalizzata denominata SSH, e inserire una regola nella catena INPUT che indica al kernel di analizzare la catena di SSH per i pacchetti in ingresso sulla porta 22 / TCP.
Le catene predefinite non possono essere eliminati o rinominati.

Iptables - Operations

iptables ha una sintassi molto simile al vecchio ipchains (netfilter per i kernel 2.2). Tuttavia, i concetti di netfilter per 2,4 + kernel sono totalmente diversi dai concetti netfilters 'per i kernel 2.2.
Il iptables operazioni possono fare con le catene sono:

  • Elencare le regole in una catena (iptables-L CATENA).
  • Cambia la politica di una catena (iptables-P CATENA accettare).
  • Creare una nuova catena (iptables-N catena).
  • Filo di una catena, eliminare tutte le regole (iptables-F CATENA).
  • Eliminare una catena (iptables-D catena), solo se la catena è vuota.
  • Zero contatori in una catena (iptables-Z CATENA). Ogni regola in ogni catena mantiene un contatore del numero di pacchetti e di byte che ha trovato. Questo comando reimposta i contatori.

Per la L-,-F,-D, e le operazioni di Z, se il nome della catena non è specificato, l'operazione viene applicata a tutta la tabella, che, se non specificato è per default la tabella filter.
Per specificare il tavolo su cui facciamo le operazioni, è necessario utilizzare l'opzione-t in questo modo il filtro iptables-t ...

Operazioni che iptables può essere eseguito su regole sono:

  • Aggiungere le regole di una catena (iptables-A)
  • Inserire le regole in una catena (iptables-I)
  • Sostituire una regola da una catena (iptables-R)
  • Eliminare una regola da una catena (iptables-D)

Gli switch più utilizzati sono-A e-D (aggiungere ed eliminare le regole). Di solito, nella progettazione di firewall, le regole vengono aggiunti alle catene.
Durante la fase di esecuzione, gli utenti utilizzano più di-I-A, perché spesso hanno bisogno di inserire norme transitorie della catena.
iptables-A pone la regola alla fine della catena, mentre iptables-I luoghi della norma sulla parte superiore delle altre norme della catena. Tuttavia, è possibile inserire una regola in qualsiasi parte della catena specificando la posizione in cui si desidera che la regola sia nella catena con l'opzione-I: iptables-I CATENA 4 si inserisce una regola in quarta posizione della catena specificata.

La sintassi per l'aggiunta di una regola a una catena è:

iptables-A ... ...-J

Filtraggio specifiche è una parte di una regola di iptables che viene utilizzato dal kernel per identificare i pacchetti IP per il quale il kernel non l'azione specificata da TARGET.

Specifiche tecniche di filtraggio

Pacchetti IP può essere identificato in un gran numero di modi specificando interfacce, protocolli, porte, ecc, alle regole di iptables. Il bello è che siamo in grado di mescolare una di queste specifiche, con una elevata flessibilità e una vasta gamma di selettori. Non ho intenzione di coprire tutti i selettori in profondità, ma di tenere presente che se si pensa a qualcosa di logico sui pacchetti IP, si abbiano tutte le possibilità di individuare i pacchetti utilizzando le regole di iptables.
Filtraggio specifiche per Layer2: Interfacce può essere specificato come selettori con-i e-o switch.
-i sta per "- in-interface", e-o per "- out-interface". + Può essere usato per specificare solo la stringa di inizio del l'interfaccia-per esempio-i eth + corrisponderà a tutte le interfacce che inizia con l'ETH stringa; Proprio per questo abbiamo indicato tutte le interfacce Ethernet quali interfacce di input per una regola.
Interruttori versione corta (ad esempio-i) e interruttori versione lunga (ad esempio "- in-interface") hanno assolutamente lo stesso effetto. Alcune persone preferiscono utilizzare interruttori a breve per le linee di comando e gli interruttori a lungo per gli script in quanto possono offrire una migliore leggibilità, ma useremo solo interruttori a breve in questo articolo, anche negli script di abituarsi alle linee di comando meglio.
Il punto esclamativo "!" rappresenta una negazione e può essere utilizzato per specificare su quale interfaccia (s) di non applicare il filtro (ad esempio i! eth1 sarà non pacchetti match arrivano su eth1).

Pacchetti sono stati analizzati in catene OUTPUT e POSTROUTING non hanno interfacce di input, e quindi non è permesso usare il-i interruttore su quelle catene.
Inoltre, l'ingresso e le catene PREROUTING non hanno interfacce di output, e quindi non è possibile utilizzare l'opzione-o per le regole in quelle catene.

Layer 3: Indirizzo IP sorgente (es) può essere specificato usando-s, - src, o - fonte, e l'indirizzo IP di destinazione (es) con-d, - dst, o - destinazione. Sorgenti o destinazioni possono essere gli indirizzi IP, subnet, o nomi canonici (ad esempio, "-s 217.207.125.58", "-s www.packtpub.com", o "-s 217.207.125.58/32" hanno lo stesso effetto). Specificando i nomi canonici per gli host che hanno più di un indirizzo IP si tradurrà in aggiunta lo stesso numero di regole, come il numero di indirizzi IP del server DNS che risolve per ospitare al momento le regole sono aggiunti.

Non utilizzare nomi canonici sulle regole ad alto rischio. Per esempio, non consentono l'accesso SSH da ahost.anotherisp.com, in quanto ciò consente facilmente di un uomo-in-the-middle.

Layer 4: Protocollo può essere specificato con l'opzione-P, che sta per "- Protocollo". Protocolli possono essere specificati dal loro numero corrispondente o con i loro nomi-TCP, UDP o ICMP (case insensitive).
Per il protocollo ICMP, è possibile specificare i tipi di messaggi ICMP usando "- icmp-type". L'elenco dei messaggi ICMP può essere trovato utilizzando il comando "iptables-p icmp - help".
Per il protocollo UDP, è possibile specificare l'origine o di destinazione i porti con "- source-port" o "- Sport" e "- destination-port" e "- dport".
TCP, essendo il più completo protocollo di livello 4, ha più opzioni. È possibile specificare, oltre che di origine o di destinazione i porti, come per il protocollo UDP, "- tcp-flags", "- syn" e "- tcp-option". Flag TCP può essere "SYN ACK FIN RST URG PSH TUTTI NESSUNO". "- syn" viene utilizzato per identificare le connessioni di avvio ed è equivalente a "- tcp-flags SYN, RST, ACK SYN". "- tcp-option" seguita da un numero corrisponde ai pacchetti TCP con l'opzione impostata su quel numero.

Specifiche Filtering possono combinare tutte le caratteristiche appena menzionate, in modo che possiamo avere una combinazione di livelli 2, 3, e 4 specifiche nell'ambito della medesima regola.

Un'altra cosa bella di netfilter / iptables è che le estensioni di corrispondenza possono essere sviluppati separatamente e aggiunti in seguito. Sul sito di netfilter, vi è un grande repository di abbinare estensioni chiamato "patch-o-matic", a http://www.netfilter.org/projects/patch-o-matic/index.html.

Una proroga di nuovo e "audace" di iptables prevede di estendere le proprie capacità dai livelli inferiori al livello superiore del modello OSI, Layer 7-applicazione.

un articolo presentato da Philip A Clare


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo "Firewall, netfilter / iptables" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 226 users browsing the articles directory   


  

|