Modo relativamente semplice per bloccare tutto il traffico proveniente da un Paese specifico?


16

Ho un'app Web che non ha utenti nelle Filippine, ma è costantemente bombardata da spammer, carte di test dei cardatori e altre attività indesiderabili da lì. Posso vedere nei registri che hanno IP nelle Filippine e inizialmente trovano il mio sito tramite google.ph o altri .phsiti.

Ho filtri e controlli di sicurezza abbastanza buoni, quindi non causano molti danni, ma mi sto davvero stancando. Usano la larghezza di banda, riempiono il mio database, i registri degli abusi e i registri di sicurezza con schifezze, perdono il mio tempo a perdere tempo, ecc.

Mentre la stragrande maggioranza dei cittadini filippini non sono spammer, e non posso semplicemente bloccare tutti i paesi che mi infastidiscono, a questo punto, penso che le soluzioni siano semplicemente bloccare tutto il traffico dalle Filippine alla mia webapp. (So ​​che bloccare i blocchi IP di interi paesi non è un'ottima pratica e ha molti problemi, ma per questo paese voglio fare un'eccezione.)

(So ​​che potrebbero falsificare il loro indirizzo IP, ma almeno posso farli funzionare un po '.)

So che ci sono alcuni servizi di geoip là fuori. Qualcuno sa di eventuali servizi gratuiti o economici? O un altro modo per filtrare il traffico da un Paese specifico?

Sto eseguendo PHP su Apache 2, se è importante.


2
Domanda valida.
crashmstr,

crashmstr: Penso di sì. Intraprendere questo tipo di azione per cercare di bloccare interi paesi ti farà solo tagliare più potenziali utenti di quanto tu stia escludendo potenziali spammer. E quando gli spammer iniziano a venire da aree che non vuoi bloccare (come il tuo stesso paese), sarai in un profondo doodoo perché tutti i tuoi metodi precedenti saranno stati uno spreco.
TheXI

Probabilmente niente: la mia attuale sicurezza è ben gestita. Si prega di leggere la domanda prima di rispondere.

<p> Quindi cosa farai quando gli spammer inizieranno a venire da altri paesi (o meglio ancora inizieranno a instradare il loro traffico attraverso gli Stati Uniti?) </p>
TheTXI

1
Le Filippine sono uno dei principali paesi di lingua inglese nel mondo, accanto a Stati Uniti, Regno Unito, Canada e Australia. Consiglio vivamente di non vietarli, non più di quanto tu bandiresti l'Australia. A meno che, ovviamente, il tuo sito non sia specifico per Paese. Ma se lo è, dovrebbe avere un TLD specifico per Paese, piuttosto che un punto-com, quindi le persone saprebbero che non li gestisci e potrebbero andare su similarname.com, che lo fa.
Lee B,

Risposte:


8

Puoi farlo in base all'indirizzo IP utilizzando un'API Locatin IP gratuita come IPInfoDB http://ipinfodb.com/index.php.


28

A differenza della maggior parte degli altri poster qui, non ti dirò che questa è una cattiva idea, che non dovresti farlo, che non risolverà il tuo problema o che dovresti fare qualcos'altro. Ecco cosa ci è successo:

Individui provenienti dalla Cina e dalla Corea (o usando proxy in Cina e Corea, comunque) continuavano a infastidirci. Portscanning, ricerca per indicizzazione dei nostri siti Web alla ricerca di vulnerabilità, tentativi di accesso, ecc. Ho cercato di ignorarli (fail2ban si prende cura di loro di solito) ma in alcuni punti ci stavano colpendo così forte che si è effettivamente trasformato in un attacco DoS. Quando hai centinaia di connessioni contemporaneamente da persone che cercano di utilizzare il tuo server web come proxy, provano a SSH nella tua macchina, provano nomi utente e password casuali, tende a pesare sul sito. Alla fine mi sono stufato.

Non riceviamo traffico legittimo dalla Cina o dalla Corea; la nostra azienda non vende lì (siamo e-commerce) quindi non c'era il rischio di perdere traffico legittimo, quindi ho pensato che fosse più facile bloccarli in anticipo invece di aspettare che fossero cazzi.

  1. Visitato http://ip.ludost.net/ e scaricato il database IP <-> del paese.
  2. Estratti tutti gli intervalli di indirizzi IP cinesi e coreani.
  3. Installato il modulo ipset per netfilter
  4. Dump di ipset costruiti per Cina e Corea (vedi sotto)
  5. Aggiunte regole a iptables per eliminare silenziosamente tutto il traffico da tali set.

E questo è tutto. I nostri utenti problematici sono andati via, si sono caricati sulla rete e il server è stato ridotto e abbiamo superato il periodo natalizio senza difficoltà.

Nota 1 : puoi farlo con iptables regolari (cioè senza ipset) ma è più costoso dal punto di vista computazionale rispetto all'utilizzo di ipset.

Nota 2 : Ecco come appaiono i dump (ipset li genererà se vuoi):

# Generated by ipset 2.3.3 on Sat Oct  4 18:02:57 2008
-N china nethash --hashsize 5184 --probes 4 --resize 50
-A china 203.207.128.0/17
-A china 221.176.0.0/13
-A china 58.154.0.0/15
-A china 114.54.0.0/15
...etc...

Nota 3 : usiamo un nethash perché tutti i nostri intervalli sono memorizzati come blocchi CIDR. Se non vuoi convertirli in CIDR, puoi invece utilizzare una iptreemap, ma immagino che potrebbe essere meno efficiente se stai ricevendo molto traffico.


2
Il punto che voglio sottolineare è che l'idea di bloccare un paese come la Cina o la Corea o in qualsiasi altro luogo non è solo bloccare un gruppo di persone che parlano una lingua diversa da te. Sono un cittadino degli Stati Uniti e se volessi acquistare qualcosa dalla tua azienda mi perdevi come cliente perché prendo servizio in Corea del Sud. Quindi sì, c'è traffico legittimo lì.
GNUix,

16
Bene, tranne che dal momento che non spediamo in Corea del Sud, non possiamo venderti nulla, quindi non ha senso andare sul nostro sito web. Non abbiamo mai avuto nessuno dalla Cina o dalla Corea che acquistasse qualcosa e lo spedisse negli Stati Uniti, quindi il numero di vendite perse potrebbe arrivare a dieci in un anno in base alla nostra analisi.
Dan Udey,

2

Come si corregge un bug nel codice?

Così?

Bug: Aggiungi (2,2) restituisce 0, dovrebbe restituire 4.

Codice fisso:

int Add(int x, int y)
{
   if (x == 2 && y == 2)
      { return 4; }
   return 0;
}

Ovviamente no. Non solo crei una mostruosità vacillante di casi speciali, è estremamente fragile e una ricetta per il disastro. Inoltre, non solo patch il sintomo di OGGI del problema di fondo.

Invece, capire la causa principale e risolverla. Questo è molto più robusto di qualsiasi patch per casi speciali hacky che potresti implementare.

Perché la tua app web è vulnerabile allo spam? Quali caratteristiche lo rendono vulnerabile? Quali caratteristiche lo rendono un obiettivo prezioso? Ci sono modi in cui puoi modificare queste caratteristiche per rendere la tua app più robusta contro lo spam e meno un target allettante? Quasi sicuramente la risposta a queste domande è sì. Aggiungi catene di convalida ai tuoi moduli, usa un captcha in modo intelligente, randomizza gli URL e / o i nomi dei parametri per renderli ostili ai robot. Ci sono milioni di modi per affrontare questo problema, mi dispiace dire che hai scelto una delle soluzioni meno preziose, meno utili e più fragili in circolazione.


15
Ho tutto quello, grazie. Hai letto il post prima di formulare la tua risposta?
Eli,

1
@Eli, ovviamente hai. Ecco perché stai ricadendo su misure radicali. Perché i tuoi precedenti sforzi erano così efficaci.
Wedge

1

Innanzitutto, suggerirei vivamente di non farlo.

Come altri hanno affermato in modo molto più eloquente, il blocco di un determinato paese non risolve il problema, ma lo difende solo leggermente. Inoltre, quando gli utenti di quel Paese vedranno che li hai bloccati in modo specifico, li motiverà solo a causare più problemi.

Detto questo, se vuoi davvero farlo, IPinfoDB fornisce un database di geolocalizzazione IP gratuito,

Innanzitutto, sarebbe individuare un indirizzo IP semplicemente per Paese.

Dovresti cercare in questo modo:

SELECT * FROM `ip_group_country` where `ip_start` <= INET_ATON('74.125.45.100') order by ip_start desc limit 1;

O

SELECT * FROM `ip_group_country` where `ip_start` <= 1249717504 order by ip_start desc limit 1;

In secondo luogo, potresti voler ottenere l'IP di un paese specifico per generare una block list con iptable, file htaccess o qualunque cosa tu usi. Sarebbe fatto così:

SELECT `ip_cidr` FROM `ip_group_country` WHERE `country_code` = 'AF' order by ip_start;

che ti darebbe:

63.243.149.0/24
67.212.160.0/24

0

È necessario utilizzare prodotti come fail2ban per eliminare gli errori generati dall'applicazione Web che indicano che è in corso un tentativo di spamming. Ciò bloccherà l'IP per un certo periodo di tempo, rendendo il tuo sito resistente, ma non bloccando in blocco interi blocchi IP.


3
Come ho detto nel post, che aspetto nessuno legge, ho un sistema perfettamente preciso per bloccare e prevenire lo spam. Sto cercando di alleggerire il carico di lavoro che deve fare e il tempo che devo dedicare al monitoraggio.
Eli,

Ecco perché ho suggerito fail2ban. Vieta automaticamente gli IP problematici senza che la forza bruta blocchi blocchi IP di grandi dimensioni.
Kevin Kuphal,

0

Un paio di soluzioni:

Queste soluzioni sono abbastanza facili e veloci da installare e gratuite.

Una soluzione a lungo termine sarebbe quella di rilevare lo spam dalla tua applicazione web, registrare l'IP e alimentare i tuoi iptables per bloccarli automaticamente.


0

Hai preso in considerazione la ricerca di chi gestisce le reti da cui sei stato attaccato? Trova il contatto "abuso" utilizzando whois e segnalalo. Ovviamente può provenire da più reti, ma può valerne la pena anche se vedi indirizzi / blocchi di rete ricorrenti.


4
Se hai mai provato a trattare con gli ISP in Asia (in particolare Cina, Corea, ecc.), Scoprirai che l'unica cosa che non fanno mai è che alcuni stranieri si lamentino di qualcosa. Non vale la pena dedicare del tempo a fare le cose nel modo giusto, quindi non lo fanno. Segnalare un abuso diventa una perdita di tempo.
Dan Udey,

Sono residente in Corea e non ho avuto altro che una piacevole esperienza con gli ISP coreani.
GNUix,

0

Hai tutto il diritto di bloccare gli indirizzi IP da qualsiasi motivo tu possa giustificare per te stesso. Sei tu che fornisci un servizio e sei tu che decidi chi può averlo o no. È forse discutibile se questo è morale, ma è qualcosa che puoi decidere solo per te stesso.

Tuttavia, bloccare un segmento IP perché presenta alcuni aspetti geografici mi sembra un approccio più o meno simile al panico.

Quello che ho fatto in passato è avere un crawler che passa attraverso i miei registri più recenti e basato su quel divieto di singoli IP che sono fastidiosi per un periodo di 24 ore. Se quell'IP specifico si comporta di nuovo male, viene bandito per 2 giorni, quindi 3 giorni, ecc. Ecc., Si ottiene la deriva.

Gli IP che sono stati banditi per più di una settimana mi verranno spediti e invierò una mail di abuso a quel fornitore di servizi (che sa che potrebbe persino aiutare).


0

Opterei per una soluzione Snort + OSSEC in grado di mantenere qualcosa di simile in modo dinamico.


Ecco a cosa servono le VPN sicure.
Andrew Ensley,
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.