iptables, ICMP e RELATIVI

Sto utilizzando la seguente regola semplice iptables che accetta pacchetti correlati :

-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 

Sto lasciando che le richieste di echo di ICMP passino con questa altra regola:

  • Come posizionare il traffico attraverso diverse interfacce in base al numero di port?
  • Quota limite IPtables, Quali sono le differenze tra i moduli? Recenti, Limite
  • Preoccupato per il contenuto di ip_conntrack
  • indirizzi IP multipli - quale viene utilizzato per i pacchetti in output?
  • Persistente nf_conntrack_max attraverso i riavvoti
  • Come dividere il traffico attraverso due tabs di networking differenti in base alla port TCP in OS X
  •  -A INPUT -p icmp --icmp-type echo-request -j ACCEPT 

    Devo aggiungere esplicitamente qualcosa per ricevere messaggi "utili" ICMP come destination-unreachable , time-exceeded e il parameter-problem o la clausola RELATED li accoglierà già?

  • Qual è l'indirizzo di networking (xxx0) utilizzato?
  • Come aggiungere IP a un server CentOS?
  • Openvpn per client / server nella stessa substring
  • Qual è il miglior server o indirizzo IP da utilizzare per test prolungati?
  • Condividi un indirizzo IP con un semplice router
  • Qual è la definizione formale del numero magico di una networking?
  • 5 Solutions collect form web for “iptables, ICMP e RELATIVI”

    http://www.linuxtopia.org/Linux_Firewall_iptables/x1571.html

    Un'altra parte molto importnte di ICMP è il fatto che viene utilizzato per informare gli host di ciò che è accaduto a specifiche connessioni UDP e TCP o tentativi di connessione. Per questa ragione semplice, le risposte ICMP verranno spesso riconosciute come correlate a connessioni originali o tentativi di connessione. Un esempio semplice sarebbe l'host ICMP non raggiungibile o la networking ICMP irraggiungibile. Queste dovrebbero sempre essere riprodotte al nostro host se tentano una connessione non rioutput ad un altro host, ma la networking o l'host in questione potrebbero essere bassi, e quindi l'ultimo router che cerca di raggiungere il sito in questione risponderà con un messaggio ICMP che dice noi su di esso. In questo caso, la risposta ICMP è considerata come un pacchetto RELATED

    La regola RELATED prenderà cura dei messaggi ICMP associati per impostazione predefinita. Dalla pagina di iptables man , nella sezione relativa a conntrack ( http://linux.die.net/man/8/iptables ):

    RELAZIONE significa che il pacchetto sta iniziando una nuova connessione, ma è associato a una connessione esistente, ad esempio un trasferimento di dati FTP o un errore ICMP .

    Altri stati riportti da conntrack sono:

    • INVALID significa che il pacchetto è associato a nessuna connessione nota
    • ESTABLISHED significa che il pacchetto è associato a una connessione che ha visto i pacchetti in entrambe le direzioni
    • NUOVO significa che il pacchetto ha avviato una nuova connessione o altrimenti associato a una connessione che non ha visto i pacchetti in entrambe le direzioni
    • SNAT Uno stato virtuale, corrispondente se l'indirizzo originale di origine differisce dalla destinazione di risposta
    • DNAT Uno stato virtuale, corrispondente se la destinazione originale differisce dalla sorgente di risposta

    È ansible esaminare e gestire la tabella conntrack utilizzando il pacchetto conntrack .

     $ sudo conntrack -L 

    In generale è una brutta idea per filtrare o bloccare icmp, di solito l'unico bit "valido" di icmp da filtrare è l'eco-richiesta di "apparire" in una scansione naïve.

    Ma se volete esplicitamente permetterne parti di esso, manca alless due bit molto importnti, la frammentazione necessaria e Source Quench:

     -A INPUT -p icmp --icmp-type fragmentation-needed -m state --state NEW -j ACCEPT -A INPUT -p icmp --icmp-type source-quench -m state --state NEW -j ACCEPT 

    Lasciathemes dire ancora che filtrare ICMP è una ctriggers idea che maschererà i problemi e renderà difficile scoprire.

    Questo è stato il problema con DF (non frammentazione) e frammentazione necessaria che è necessaria per la scoperta automatica di PTMU ei siti causati sono inaccessibili perché i firewall / router intermedi hanno abbandonato i pacchetti icmp che pubblicizzano l'endpoint per abbassare l'MTU.

    Aggiungo la mia risposta per fornire la mia configuration finale, ispirata da altre risposte e dalle seguenti fonti:

    1. un progetto scaduto da IETF con una tabella utile che indica quali tipi di ICMP consentono, negano o limite il limite;
    2. un'altra pagina con le linee minime per iptables e Cisco IOS;
    3. una terza risorsa che utilizza RELATED :

       iptables -P INPUT DROP iptables -A INPUT -p icmp --fragment -j DROP iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT 

    ICMP è un protocollo di connessione molto importnte. L'"eco-richiesta" è l'unico importnte messaggio utile che aiuta la comunicazione. Il resto di questi, incluso "destinazione non raggiungibile", è sicuro bloccarsi in modo speciale se l'applicazione in esecuzione riceve un gran numero di colpi sconosciuti.

    Sei meglio con qualcosa di simile,

     -A INPUT -p icmp --icmp-type echo-request -m recent --set -A INPUT -p icmp --icmp-type echo-request -m recent --update --seconds 1 --hitcount 30 -j DROP -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT -A OUTPUT -p icmp --icmp-type destination-unreachable -j DROP -A INPUT -p icmp -j DROP 

    Questo non solo accetterebbe "richiesta di eco" ma anche bloccare inondazioni di ping più di 30 pacchetti / s. Qualsiasi cosa che desideri aggiungere deve essere accettata esplicitamente perché la clausola RELATED non li riceverà finché la connessione viene stabilita lasciandola entrare.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.