Il blocco di tutte le connessioni al di fuori degli Stati Uniti, oltre alla porta 80, causerà un carico elevato del server?


16

Come la maggior parte dei server (presumo), abbiamo persone che cercano di forzare i nostri servizi 24 ore su 24, 7 giorni su 7. Ho cpHulk nella lista nera dei loro IP, ma sembra che sarebbe meglio se non arrivassero così lontano in primo luogo. Io e il mio host siamo gli unici a connetterci al server su porte diverse da 80, quindi mi piacerebbe bloccare le connessioni da tutti i paesi al di fuori degli Stati Uniti, ad eccezione della porta 80. Ho contattato il mio host per configurarlo, ma loro erano titubanti perché dicevano che avrebbe creato un carico del server eccezionalmente elevato. È un server Xeon 1230 dedicato con 32 GB di RAM con CentOS 6.6 e iptables.

Primo, qualche motivo per non farlo? Secondo, è corretto ciò che il mio ospite mi ha detto? Terzo, c'è un modo per ottenere questo risultato senza un impatto ad alte prestazioni?


12
È un peccato che il tuo contatto di hosting non abbia menzionato "Ma esiste un modo standard del settore per fare la stessa cosa che vuoi con molta meno manutenzione, migliore sicurezza e basso carico del server chiamato Explicit Deny All. Fammi l'elenco degli IP di cui hai bisogno nella whitelist e te lo preparerò tra 20 minuti. " - È quello che mi aspetto di sentire da qualsiasi amministratore di sistema degno della sedia in cui siedono.
corsiKa

Risposte:


33

L'impostazione di regole specifiche per bloccare ogni intervallo IP (elencando ogni intervallo) è l'approccio sbagliato.

Impostare le regole predefinite in iptables per eliminare tutto il traffico verso le porte di gestione. Quindi aggiungi le regole per consentire l'accesso solo dai tuoi IP affidabili (i tuoi e il tuo host).

Bloccare tutto per impostazione predefinita e consentire solo il traffico approvato viene generalmente chiamato "esplicito nega tutto" ed è considerato una procedura consigliata. In questo caso aiuta anche a evitare l'impatto sulle prestazioni di cui l'host è preoccupato.


Perché, se lo sai, è esplicito negare tutto quando neghi implicitamente tutti consentendo esplicitamente solo pochi IP attraverso il firewall?
Ben

Non c'è nulla di implicito al riguardo ...
sig

Una potenziale preoccupazione per la whitelisting è l'accesso remoto. Avrai bisogno di una VPN affidabile (separata da questo server) e consentirai anche il suo intervallo IP.
Foo Bar,

9

Per fare ciò, dovresti aggiungere decine di migliaia di regole del firewall, una per ogni netblock, in cui un paese può avere ovunque da uno a diverse migliaia di netblock associati.

Quando arriva una richiesta, dovrebbe essere verificata rispetto a ogni singola regola , che richiede pochissimo tempo per poche decine o forse anche poche centinaia di regole, ma con tutte le regole che dovresti usare, (1) ogni la richiesta verrà notevolmente rallentata e (2) utilizzerà molta CPU.

Il modo per farlo senza un impatto significativo sulle prestazioni è quello che stai già facendo: bloccare solo quegli indirizzi specifici che sono problematici.


Grazie per la risposta, Michael. Non esiste un modo per consentire solo gli IP con sede negli Stati Uniti, quindi è necessario solo verificare una regola?
Big Iron,

2
@BigIron Certo che no. Ci sono anche decine di migliaia di netblock negli Stati Uniti. Si perde in entrambi i modi.
Michael Hampton

1
@SamuelEdwinWard No, non lo è. Nonostante siano sparsi ovunque, in genere tali blocklist non contano più di qualche centinaio di voci.
Michael Hampton

1
Hai un riferimento per quanto sia significativo il rallentamento? Una ricerca lineare sebbene tutti i set di regole sembrino terribilmente inefficienti, per lo meno una ricerca binaria significherebbe che la ricerca di una tabella di regole di 60.000 porterebbe solo 16 sonde nella tabella, e ciò potrebbe essere più veloce che lasciare che il traffico passi al server web che potrebbe deve eseguire l'I / O del disco per soddisfare la richiesta. Non sono riuscito a trovare metriche su grandi set di regole in iptables.
Johnny,

1
@Johnny netfilter (iptables) elabora le sue regole in modo lineare purtroppo: serverfault.com/questions/334885/…
Ross Ridge

5

Ciò di cui hai bisogno è uno strumento chiamato ipset

I set IP sono un framework all'interno del kernel Linux, che può essere amministrato dall'utility ipset. A seconda del tipo, attualmente un set IP può memorizzare indirizzi IP, (TCP / UDP) numeri di porta o indirizzi IP con indirizzi MAC in un certo modo, il che garantisce la velocità della luce quando si abbina una voce a un set.

l'importante notare qui è che è velocissimo! Questo perché un numero enorme di reti IP può essere rappresentato da un singolo hash anziché da centinaia o migliaia di righe di regole di iptables.

Per i paesi bloccati vedi questo esempio :


1

Ignorando il fatto che farlo o meno in questo modo sia una buona idea, puoi fare ciò che hai chiesto con il modulo GeoIP per iptables.

Dopo aver compilato e installato il modulo (e aver aggiornato gli elenchi IP mensilmente), puoi fare cose come questa per bloccare singoli paesi:

iptables -I INPUT -m geoip --src-cc CN -j DROP

Oppure usa --src-cc US -j ACCEPTe così via se preferisci specificare quei paesi che vuoi conservare.


Non sarebbe un disastro delle prestazioni anche se si utilizza "esplicito negare tutto" e consentire un solo paese?

@ AndréDaniel, ammetto di non aver esaminato il codice GeoIP stesso, ma supponendo che utilizzino un'implementazione non ingenua più intelligente rispetto al confronto sequenziale di un gruppo di netblock (ad esempio un trie), non è necessario.
Scott Dudley,

E se stai parlando di IPv4 e hai 512 Mb da risparmiare per regola, un'implementazione teorica che utilizza una tabella di ricerca potrebbe portare a termine il lavoro in O (1).
Scott Dudley,

1

Se si desidera mantenere la possibilità di connettersi da qualsiasi luogo senza mantenere una lista nera / whitelist di geolocalizzazione, è possibile implementare il port-knocking . Arresterebbe la maggior parte dei tentativi automatizzati e ti consentirà comunque di connetterti da qualsiasi indirizzo.

Nota: non mettere la porta a bussare adiacente alla porta per aprirla, altrimenti una scansione sequenziale della porta attiverà la tua regola.


0

Nel caso in cui tu abbia un router abilitato BGP o due nel tuo stack E hai qualche tipo di idea di cosa diavolo stai facendo / lavori con qualcuno che sa cosa diavolo sta facendo, o lo sono forse dietro un fornitore di prevenzione DDoS abbastanza freddo da aiutare nella realizzazione di questo, c'è un metodo relativamente nuovo per limitare il traffico verso le regioni geografiche chiamato blackholing selettivo che penso valga la pena dare un'occhiata.

https://ripe68.ripe.net/presentations/176-RIPE68_JSnijders_DDoS_Damage_Control.pdf

http://mailman.nanog.org/pipermail/nanog/2014-February/064381.html

http://www.internetsociety.org/deploy360/blog/2014/07/video-selective-blackholing-at-ripe-68/

Poiché questo metodo funziona sulla manipolazione delle route, ignora eventuali problemi di caricamento del server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.