GNU/Linux >> Linux Esercitazione >  >> Linux

Perché non bloccare l'ICMP?

Soluzione 1:

ICMP è molto, molto più di "traceroute" e "ping". Viene utilizzato per il feedback quando si esegue un server DNS (porta irraggiungibile) che, in un server DNS moderno, potrebbe effettivamente aiutare a selezionare una macchina diversa per interrogare più velocemente.

ICMP è anche, come accennato in precedenza, utilizzato per la scoperta del percorso MTU. È probabile che il tuo sistema operativo imposti "DF" (non frammentare) sui pacchetti TCP che invia. Si aspetta di recuperare un pacchetto "frammentazione richiesta" ICMP se qualcosa lungo il percorso non riesce a gestire quella dimensione del pacchetto. Se blocchi tutto l'ICMP, la tua macchina dovrà utilizzare altri meccanismi di fallback, che fondamentalmente utilizzano un timeout per rilevare un "buco nero" PMTU e non ottimizzerà mai correttamente.

Inoltre, dovresti chiederti perché vuoi bloccare ICMP. Cosa stai cercando di impedire in particolare qui? È abbastanza chiaro che non capisci a cosa serve ICMP, il che è piuttosto comune. Sarei estremamente cauto nel bloccare qualcosa che non comprendi appieno.

Per rendere ancora più difficile l'apprendimento di questo, molti libri sui firewall comuni dicono "blocca ICMP" - è chiaro che i loro autori non hanno mai letto un RFC o hanno dovuto risolvere problemi relativi a tali consigli. È un cattivo consiglio bloccare tutto l'ICMP.

Ora, anche la limitazione della velocità può far male. Se la tua macchina è occupata, o anche se non lo è, puoi ottenere una buona quantità di traffico ICMP. Il mio server Web probabilmente riceve circa 10-100 pacchetti ICMP al minuto, la maggior parte dei quali è rilevamento PMTU. Anche se qualcuno ha scelto di attaccare il mio server con pacchetti ICMP di qualche tipo, non è davvero un grosso problema. Se la tua macchina accetta anche una sola connessione TCP (ssh, http, mail, ecc.) è probabile che si tratti di un vettore di attacco più grande di quanto lo sarà mai l'ICMP frainteso.

Soluzione 2:

ICMP viene utilizzato per una serie di funzioni diagnostiche (ad es. ping, traceroute) e di controllo della rete (ad es. PMTU discovery). Il blocco indiscriminato dell'ICMP provoca ad altre persone ogni sorta di bruciore di stomaco e, a meno che tu non sappia esattamente cosa stai facendo, dovresti lasciar perdere.

Soluzione 3:

Non ho mai capito perché le persone cronometrano l'ICMP, come detto sopra provoca solo mal di testa a te stesso e agli altri. Puoi determinare se un host è attivo abbastanza facilmente e fintanto che è abbastanza limitato da non essere utilizzato come DOS, non ho mai sentito motivi convincenti per bloccarlo. (Se qualcuno può trovare una ragione per favore posta)

Soluzione 4:

potresti semplicemente provare a limitare icmp in modo che non possa essere utilizzato come attacco DOS. ma ci sono troppi strumenti per la risoluzione dei problemi come ping, mtr (ho dimenticato l'equivalente di Windows), traceroute (tracert), che usano icmp. lasciarli cadere del tutto è semplicemente sciocco. È un buon modo per verificare se la tua istanza è attiva anche se non puoi telnet su nessuna porta.

--limit 10/second
alle tue regole icmp è probabilmente un limite decente dato quanto un computer può effettivamente gestire.

Soluzione 5:

Ecco un punto di vista alternativo, nello spirito di quanto suggerirebbe la teoria della sicurezza. Altri autori hanno ragione sul fatto che la pratica della sicurezza è spesso troppo zelante, ma c'è una buona base per gran parte di essa.

La teoria della sicurezza è generalmente che abiliti solo QUELLO CHE TI SERVE. Altre cose (che potrebbero essere utili, ad esempio le risposte ping) possono essere utilizzate da un utente malintenzionato per esaminare il tuo sistema, o possibilmente come vettore di attacco per qualche vulnerabilità ancora da scoprire.

Quindi, esaminando i tipi di messaggi ICMP, di cosa hai BISOGNO per il normale e corretto funzionamento del tuo sistema?

  • echo reply (ping) - non così tanto
  • destinazione irraggiungibile - molte informazioni utili qui. Disattivalo e interromperai l'accesso al tuo server per alcuni client.
  • source quench - deprecato dal 1995, e apparentemente rimosso dalle implementazioni host dal (al più tardi) 2005. tools.ietf.org/html/rfc6633#section-1.
  • reindirizzamento - quasi certamente no
  • pubblicità e sollecitazione del router:non è necessario se configuri staticamente i tuoi percorsi e potrebbe essere utilizzato per DoS. Lo bloccherei a meno che tu non sappia di averne bisogno e, se ne hai bisogno, forse codificherei una regola per accettare informazioni solo dai possibili router conosciuti.
  • ttl superato - non solo per traceroute, ti dice che il tuo traffico non arriva a destinazione

...e così via. Se vuoi davvero capirlo, vai a conoscere i vari tipi di ICMP e a cosa servono. L'articolo di Wikipedia è un buon punto di partenza.

In pratica, quello veramente brutto è reindirizzare; se vuoi solo fare qualcosa di veloce e utile, bloccalo e consenti il ​​resto.

Vorrei aggiungere che il tracciamento della connessione IPtables consentirà i pacchetti ICMP di ritorno appropriati per le connessioni attive. Quindi, se stai eseguendo conntrack, dovresti essere in grado di bloccare la maggior parte dell'ICMP in entrata, a condizione che tu accetti i pacchetti CORRELATI (prima di bloccare ICMP nel tuo set di regole).


Linux
  1. Perché Cd non è un programma?

  2. Linux – Perché usiamo Su – e non solo Su?

  3. Perché Nullglob non è predefinito?

  4. Linux – Perché Setuid non funziona??

  5. Perché è Rm -rf e non Rmdir -rf?

Perché non installare pacchetti software da Internet

Perché "cancella" non cancella l'intero schermo?

Perché il mio cron job non mi invia email?

Perché la mappatura MAP_GROWSDOWN non cresce?

perché sftp rmdir non funziona?

Perché usiamo su - e non solo su?