Misterioso traffico cinese indirizzato in modo errato: come posso sapere quale server DNS è stato utilizzato da una richiesta HTTP?


24

La scorsa settimana ho ricevuto un enorme flusso di traffico da una vasta gamma di indirizzi IP cinesi. Questo traffico sembra provenire da persone normali e le loro richieste HTTP indicano che pensano che io sia:

  • Facebook
  • The Pirate Bay
  • vari tracker BitTorrent,
  • siti porno

Tutto ciò suona come qualcosa per cui le persone utilizzerebbero una VPN. O cose che farebbero arrabbiare la Grande Muraglia cinese.

Gli user-agent includono browser Web, Android, iOS, FBiOSSDK, Bittorrent. Gli indirizzi IP sono normali fornitori commerciali cinesi.

Ho Nginx che restituisce 444 se l'host non è corretto o l'agente utente ha ovviamente torto:

## Deny illegal Host headers
if ($host !~* ^({{ www_domain }})$ ) {
   return 444;
}
## block bad agents
if ($http_user_agent ~* FBiOSSDK|ExchangeWebServices|Bittorrent) {
    return 444;
}

Ora posso gestire il carico, ma ci sono stati alcuni scoppi fino a 2k / minuto. Voglio scoprire perché vengono da me e smetterla. Abbiamo anche un traffico CN legittimo, quindi vietare 1/6 del pianeta Terra non è un'opzione.

È possibile che sia dannoso e persino personale, ma potrebbe essere solo un DNS non configurato correttamente.

La mia teoria è che si tratta di un server DNS non configurato correttamente o forse di alcuni servizi VPN che le persone utilizzano per aggirare Great Fire Wall.

Dato un indirizzo IP client:

183.36.131.137 - - [05/Jan/2015:04:44:12 -0500] "GET /announce?info_hash=%3E%F3%0B%907%7F%9D%E1%C1%CB%BAiF%D8C%DE%27vG%A9&peer_id=%2DSD0100%2D%96%8B%C0%3B%86n%8El%C5L%11%13&ip=183.36.131.137&port=11794&uploaded=4689970239&downloaded=4689970239&left=0&numwant=200&key=9085&compact=1 HTTP/1.0" 444 0 "-" "Bittorrent"

Io posso sapere:

descr:          CHINANET Guangdong province network
descr:          Data Communication Division
descr:          China Telecom
  • Come posso sapere quale server DNS stanno usando quei clienti?
  • Esiste un modo per determinare se una richiesta HTTP proviene da una VPN?
  • Cosa sta succedendo davvero qui?

5
Ho già visto questo problema prima, essendo sia il bersaglio del traffico, sia il traffico destinato al mio server inviato da qualche altra parte. Non ho nessuna risposta però. Ho ridotto l'impatto del primo problema con un firewall e il secondo con una soluzione software che era possibile solo nella nostra situazione specifica (il nostro software stava facendo le richieste). Nel processo di istigazione, abbiamo scoperto che alcuni server DNS rifiutano di rispettare TTL molto bassi, memorizzando invece il risultato nella cache per mesi, il che potrebbe spiegare l'elenco dei siti per i quali stai ricevendo traffico.
xofer,

1
Controlla anche questa domanda. Ho avuto lo stesso problema serverfault.com/questions/656093/… Sono solo curioso di sapere perché un ISP farebbe qualcosa del genere. Non riesco a vedere il valore in in.
Cha0s

4
Nella mia esperienza, si tratta di tentativi di trovare proxy Web aperti. Alcuni web server ti permetteranno di richiedere qualsiasi URL; Una volta sono stato chiamato per occuparmi di uno di questi, che aveva superato la sua (generosa) allocazione mensile della larghezza di banda prima ancora che fosse in servizio. Un gruppo di studenti del Nanjing Institute of Technology aveva scoperto di essere in grado di stabilire connessioni HTTPS con esso e di richiedere qualsiasi pagina Web, e quindi stavano avidamente intrufolando tutto il loro porno oltre il Great Firewall. Se non stai effettivamente offrendo il contenuto richiesto, dovresti andare bene.
MadHatter supporta Monica il

1
Di solito si. Solo una voce di registro è stata citata sopra, quindi ho pensato che valesse la pena menzionarla; non è destinato a essere una risposta completa e ponderata, o l'avrei presentata come una!
MadHatter supporta Monica il

1
1. Hai mai provato a dare la caccia agli amministratori di sistema per un dominio registrato qui negli Stati Uniti? Se è così sai quanto può essere difficile. Immagino che sia quasi impossibile trovare non solo la persona giusta con cui parlare su "Chinanet", ma anche la persona giusta che si preoccupa abbastanza per aiutarti.
Michael Martinez,

Risposte:


31

Esiste un modo teorico per determinare il risolutore DNS dei tuoi clienti, ma è piuttosto avanzato e non conosco alcun software standard che lo farà per te. Dovrai sicuramente eseguire un server DNS autorevole per questo oltre a nginx.

Nel caso in cui l'intestazione dell'host HTTP sia errata, servire un documento di errore e includere una richiesta a un nome di dominio completo univoco creato dinamicamente per ogni richiesta che si accede a un database. per esempio.

http://e2665feebe35bc97aff1b329c87b87e7.example.com/img.png

Finché il grande firewall cinese non giocherà con quella richiesta e il client richiederà il documento da quel FQDN + URI univoco, ogni richiesta comporterà una nuova ricerca DNS sul tuo DNS autorevole per esempio.com dove puoi registrare l'IP del Il risolutore DNS e successivamente lo correlano con gli URI generati dinamicamente.


6
Questo è lo stesso approccio che suggerirei, anche se penso che sarebbe necessario un altro livello di domini per farlo funzionare. Se il dominio principale è example.com, è necessario creare un record NS per un sottodominio come ns-detect.example.com. Quindi creeresti un nome univoco sotto quel nome di dominio, ad esempio l'intero dominio e2665feebe35bc97aff1b329c87b87e7.ns-detect.example.com.
Kasperd,

1
È un approccio interessante. Ora sospetto che il reindirizzamento sia intenzionale (perché non sono l'unico a vederlo). Quindi suppongo che i vari server DNS cinesi non si preoccupino di fare una ricerca su quello autorevole per ottenere il sottodominio. Non avrebbe senso per loro farlo.
Felix,

Se usano un approccio whitelisting, probabilmente hai ragione. Se stanno inserendo nella blacklist non c'è davvero alcun motivo per cui non si debba cercare un FQDN dall'aspetto innocente. Naturalmente questo potrebbe anche essere il risultato di tecniche di filtro molto più avanzate rispetto al semplice gioco di risposte DNS.
r_3,

1
+1 per l'idea di Kasperd di creare un sottodominio con il proprio NS, per mantenere i registri per quello separati dal normale DNS. E farlo con meno possibilità di rovinare le tue cose normali. Se vedi richieste http per nomi host che non sono stati cercati nel tuo DNS da nessuno, allora sai che il server DNS che i tuoi client cattivi stanno usando sta falsificando le risposte DNS (e sbagliando, poiché probabilmente intendevano inviare quel traffico da qualche altra parte Forse un amministratore cinese da qualche parte ha digitato un indirizzo IP in una configurazione?).
Peter Cordes,

Accettare perché risponde esattamente alla prima domanda. Non risolve davvero il motivo per cui riceviamo il traffico, ma stackexchange non consente vaghe domande.
Felix,

5

Ho sentito l'eccezionale firewall utilizzato per reindirizzare il traffico "bloccato" a una manciata di IP falsi, ma questo stava facendo sì che i loro blocchi fossero facilmente individuabili (non sono sicuro che consentisse una facile sovversione). In ogni caso gli amministratori hanno iniziato a reindirizzare a IP casuali. Ciò ha portato alcuni utenti cinesi a ottenere porno, invece di Facebook o VPN, a quanto pare.

Ho il sospetto che uno dei tuoi IP sia diventato un destinatario di traffico cinese bloccato, quindi stai vedendo gli agenti utente IPI di Facebook.

Ciò significa che il controllo dell'intestazione host dovrebbe essere valido. La maggior parte dei programmi utente supporta SNI in questi giorni, quindi dovresti essere in grado di eliminare il traffico senza host-header con relativa impunità.

Modifica: http://www.infosecurity-magazine.com/news/great-firewall-upgrade-redirects/


4

Come posso sapere quale server DNS stanno usando quei clienti?

Contatta Chinanet e chiedi? Scherzi a parte, DNS è configurabile sul lato client. Molte persone ottengono le impostazioni DNS tramite DHCP, ma OpenDNS e l'offerta DNS di Google non avrebbero un modello di business se non potessi cambiarle.

Esiste un modo per determinare se una richiesta HTTP proviene da una VPN?

Non proprio, tranne per il fatto che l'IP sarebbe della VPN, non dell'utente finale in Cina.

Cosa sta succedendo davvero qui?

Che non posso dirtelo, ma forse c'è una sorta di configurazione errata nel Great Firewall of China ?

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.