Come rallentare un hacker


17

Alcuni kiddie di sceneggiatori a Delhi, in India, hanno cercato di hackerare il nostro sito da ieri sera. Ha scritto uno script del browser che invia richieste al nostro server in enormi cicli nidificati, provando tutto sotto il sole.

Non sta arrivando da nessuna parte e non sta superando nemmeno le nostre difese di base (ma sta riempiendo i nostri file di registro).

Restituiamo una risposta 403 Unauthorizedalle sue richieste non appena arrivano, ma più velocemente blocciamo le sue richieste, più veloce viene eseguito il suo script.

Vorremmo introdurre un "ritardo" di qualche tipo prima di rispedire la risposta 403. Più a lungo, meglio è.

Domanda: Come possiamo ritardare i tentativi di hacking senza influire sul resto del sito?

  • Suppongo che un Sleep (15000) sul suo thread sarebbe una cattiva notizia per gli altri visitatori del sito.
  • Far girare un nuovo thread solo per lui sembra eccessivo.
  • C'è un altro modo per inviare una risposta ritardata?
  • Quanto tempo possiamo forzare il suo browser ad aspettare? Suppongo che non mi preoccupi molto se ottiene l' 403 Unauthorizederrore o alla fine scade, quindi probabilmente potremmo anche fare un'attesa indefinita / infinita.

36
C'è un motivo per cui non puoi semplicemente configurare il firewall per eliminare il traffico proveniente dal suo indirizzo IP? Questo problema sarebbe meglio risolto a livello di rete che a livello di applicazione. Eliminare il traffico significa che dovrà rimanere lì fino al timeout della richiesta di connessione. E non rispondere affatto è molto più efficace del respingere risposte "non autorizzate" poiché non gli dà effettivamente alcuna informazione da ispezionare.
cdhowie,

3
Perché non bloccare il suo IP?
Hogan,

2
Scollegare il server.
Ha detto Ibrahim Hashimi il

Guarda la mia risposta - questa è una cosa standard, sono sorpreso che tu non abbia ricevuto una risposta che punta a qualche sistema di rilevamento delle intrusioni in precedenza.
Unreason,

@Detto, scollegare il server è una delle peggiori cose che puoi fare. Oltre a DoSing, vedi anche security.stackexchange.com/q/181/33
AviD

Risposte:


37

Dovrebbe esserci un firewall separato da qualche parte davanti al tuo server web. Vuoi impedire che le richieste non raggiungano mai il tuo server, in modo tale che per quanto riguarda il suo IP il tuo server non esiste più.


1
Ciao Joel, questa è la risposta "accettata", ma poiché la domanda è stata trasferita da StackOverflow, sembra che non ho l'autorità per accettarla effettivamente. Ho dato la tua risposta +1. Questo è proprio quello che farò.
Flipster,

2
@flip fai clic sul tuo nome e poi sul link "account" a metà pagina a destra. Ciò ti consentirà di associarlo nuovamente al tuo account di overflow dello stack e di riguadagnare la proprietà della domanda.
Joel Coel,

1
ma vuoi anche farlo automaticamente - non ha senso trattare questi problemi caso per caso. (vedi la mia risposta)
Unreason

5

Esistono veri e propri sistemi di rilevamento delle intrusioni grandi e piccoli che lo faranno automaticamente in base ai vari filtri, honeypot e altri meccanismi

Ad esempio, vedere fail2ban che può essere configurato per eseguire azioni in base all'analisi dei registri.

In questo modo puoi

  • filtra facilmente un singolo indirizzo IP da cui proviene un attacco senza influenzare altri utenti del tuo sito
  • puoi scrivere la tua regex per analizzare i log
  • puoi definire le tue azioni (throttle invece di ban, ecc.)

Ci sono altri e più grandi strumenti, vedi la sezione vedi anche su Wikipedia.

Poiché la tua domanda è contrassegnata come asp.net, suppongo che la tua piattaforma server sia Windows. Tuttavia, se l'utilizzo del firewall Linux è un'opzione, puoi provare quanto sopra

  • mettere un firewall Linux tra WAN e il server
  • dare accesso al firewall ai log di IIS
  • scrivi regex per analizzarlo
  • collegalo a modelli esistenti per il divieto

Tale firewall può essere eseguito su hardware estremamente modesto: pensate anche a qualcosa come i router Linksys (vedi qui ) per larghezze di banda dei collegamenti molto decenti.


4

Se provengono da uno specifico indirizzo IP o blocco di indirizzi, è possibile aggiungere un percorso blackhole ad esso:

ip ro add blackhole 10.69.96.0/24
ip ro flush cache

Puoi anche farlo usando una regola di iptables, ma tieni conto che le regole di iptables vengono attraversate in modo lineare, quindi se inizi ad aggiungere regole di iptables per ogni errore che si verifica, puoi iniziare a consumare molta CPU. Le tabelle di routing sono ottimizzate per la gestione di molte, molte voci. Ad esempio, una delle mie scatole ha 350K voci nella sua tabella di routing senza problemi. Ma se avessi regole 3K per iptables la scatola quasi sicuramente cadrà.

Se provi a fare qualcosa in cui la tua applicazione dorme per molti secondi su queste connessioni, potresti finire per legare abbastanza risorse che richieste legittime non possono ottenere alcuna risorsa.


1
+1. Mi sono piaciute le tue informazioni sulla relativa efficienza del routing rispetto a netfilter in questa situazione. iptablessu un kernel con ipsetfunzionalità in grado di abbinare in modo molto efficiente enormi elenchi di indirizzi IP, ma sembra che nessuna delle maggiori distro abilitino ipsetnei propri kernel.
Steven lunedì

Bene, l'ipset è qualcosa che sembra utile per questo genere di cose, ma non è prontamente disponibile. Esiste un altro sistema chiamato nf-hipac che era un ottimizzatore iptables più generale, ma l'ultimo post sulla mailing list e l'ultima versione è del 2005.
Sean Reifschneider,

3

Tu non vuoi farlo rallentare, perché lo rallentando in modo non corretto vi toglierà il sito verso il basso come se fosse sotto un attacco DoS, perché le discussioni che saranno 'occupato' servendo le richieste di questa persona. Quello che vuoi fare è bloccare il suo IP e finirlo. Non c'è motivo di attirare la persona che lo sta facendo.


2

Quello che stai cercando è il modulo Apache mod_evaisve.

Nelle distribuzioni basate su Debian, installalo usando

apt-get install libapache2-mod-evasive

CentOS / RHEL

yum install mod_evasive

mod_evasive tiene traccia delle richieste in arrivo su Apache e vieta l'IP utilizzando iptables che passa il valore di soglia. È uno strumento eccezionale contro gli attacchi DoS basati su HTTP e persino gli attacchi DoS distribuiti quando sei preso di mira da un'enorme botnet con migliaia di IP diversi.

Funziona come un modulo Apache caricato durante il runtime e non come un demone separato.

Tuttavia, un aggressore intelligente con il controllo di un'enorme botnet può comunque far crollare il tuo server web temporizzando le richieste inviate da ogni zombi nella botnet in modo che nessuno degli IP superi mai il valore di soglia.

In tal caso, è necessario utilizzare IDS basati su anomalie e probabilmente addestrare il sistema da soli. Ma è molto improbabile che ciò accada a meno che tu non abbia dei veri grandi nemici o qualcuno con un'agenda aziendale.


0

Se stai usando Linux, usa iptables per limitare il tipo a 1 byte / s con grandi ritardi e fagli prendere un'eternità per ottenere una richiesta. Se è distribuito, non sarà di grande aiuto.

Non sono sicuro di come lo faresti su Windows, ma potresti trovare alcune opzioni simili nel tuo router o firewall hardware, se ne hai uno.

EDIT: d'accordo con quanto sopra, questo è più simile a una domanda di errore del server.


2
Questa tecnica viene talvolta utilizzata negli attacchi DDoS - dall'attaccante. Farlo sul server è controproducente. <_ <
p-static

Non è proprio corretto affermare che viene utilizzato negli attacchi DDoS: questo tipo di effetto è l'obiettivo degli attacchi DDoS. Farlo sul server / firewall, ma solo per attaccare i computer è l'unica vera difesa (AFAIK).
Unreason,

0

Se l'indirizzo IP del ragazzo è piuttosto costante potresti creare un HttpModule personalizzato, collegarlo tramite una modifica nel file web.config e avere un ritardo su di esso quando viene riconosciuto come questo indirizzo IP. Oppure puoi rispedirgli indietro alcuni codici 404 o reindirizzarlo da qualche altra parte.


0

Sai che sono in India. Il tuo sito ha importanti clienti indiani che precludono semplicemente il blocco dell'intero intervallo IP a livello di firewall in incrementi fino a quando il flusso si interrompe? Non è certamente una soluzione definitiva, ma se hai a che fare con un tipico "script kiddie" dovrebbe essere sufficiente a scoraggiarli e inviarli a un altro obiettivo.

Ancora meglio, se proviene da un IP, potresti rispondere con il tuo attacco denial of service :)


non è proprio una soluzione, tagliare la gelatina con un'ascia. E B, DDOS non è davvero una buona raccomandazione (anche se immagino che stavi scherzando), non c'è motivo per a) fare smth illagel b) caricare di più sul tuo server!
Trufa

0

Oltre alla risposta che hai ricevuto, vorrai salvare la tua documentazione (registri, tracce) e fornirli al tuo fornitore di servizi. Questo è il più efficace durante l'incidente in quanto il provider può assistere all'incursione. Anche se hai successo nelle tue misure, è importante limitare ulteriori tentativi e aiuta il tuo fornitore a inoltrare una richiesta al fornitore di servizi dell'aggressore; probabilmente l'azione più efficace è per il fornitore dell'attaccante rifiutare il servizio al suo cliente, l'aggressore identificato.


0

se sei un programmatore potresti lavorare con l'evento .net Begin_Request e inserire il tuo "sleep"

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.