Come può una applicazione software difendersi da DoS o DDoS?

34

La maggior parte delle soluzioni per gli attacchi DoS non sono a livello di applicazione. Nel caso in cui io stia usando un server proxy, quali sono le possibili contromisure per la DoS a livello di applicazione?

    
posta Phoenician-Eagle 12.11.2010 - 16:41
fonte

2 risposte

18

Per prima cosa, è importante distinguere tra DoS, Denial of Service e DDoS - Distributed Denial of Service. Nella maggior parte dei casi il DoS è causato dalla vulnerabilità del software, qui arrivano le patch e gli aggiornamenti come misura della prevenzione degli attacchi. DoS contro il servizio che non è vulnerabile non sono attacchi distribuiti, sono inefficaci e non sono usati oggi. Se parlare di DDoS, che credo fosse il punto della tua domanda, allora le cose si fanno un po 'complicate. IPTABLES in caso di enormi PPS di solito non aiuta molto - l'attacco proviene da luoghi diversi, come nel caso di macchine zombi. Basta bandire gli utenti, ma appariranno nuovi ancora e ancora. Cosa posso suggerire:

  1. configurare il software del server in modo che gestisca le connessioni in modo più leggero - nega richieste lunghe e pesanti (ad esempio MaxKeepAliveRequests in Apache);
  2. configura il tuo sistema operativo - IP tuning dello stack (ad esempio sysctl in FreeBSD);
  3. chiudere le porte non utilizzate, rimuovere i servizi non utilizzati;
  4. mod_evasive - Modulo Apache contro gli attacchi;
  5. imposta server leggero come front-end, ad esempio nginx.

Questo è un argomento lungo da discutere, mi raccomando di non fermarmi con questi consigli, ma su Google per ottenere informazioni più precise.

    
risposta data 12.11.2010 - 20:34
fonte
14

Ignora la parte relativa a DDoS per ora, poiché questa operazione dovrebbe essere principalmente interrotta sulla rete o dall'infrastruttura del server (includo IIS / Apache / altro server web in questo) ...

Penso che sia anche importante capire che il DoS (a livello di applicazione e non distribuito) può ancora essere visto come alcuni tipi diversi di attacchi, a giudicare dal danno:

  • Permanent DoS - Una volta montato, l'attacco non cesserà fino all'intervento manuale (admin), come riavvio del server / app, ripristino della configurazione, eliminazione dei dati, ecc.
  • DoS temporaneo: dura per tutta la durata dell'attacco o termina poco dopo.
  • Inondazione - Semplicemente inondando il server di masse di richieste, che il server deve gestire in modo sequenziale, impedendo agli utenti legittimi di accedere al sistema. (La maggior parte dei DDoS rientra in questa categoria).

Ogni categoria ha diverse tattiche da attaccare e, naturalmente, diverse soluzioni da prevenire. Tuttavia, ci sono alcuni difetti di codifica che possono portare a DoS, ma questo è FAR da un elenco completo:

  • (Alcuni tipi di) Overflow del buffer
  • Iniezione SQL - può DROP TABLE
  • Loop su dati controllati dall'utente - può essere reso "infinito"
  • Non si chiudono le connessioni DB e gli handle di file e l'utente può forzarne l'apertura molti altri
  • XML Bomb - utilizzando le entità DTD un utente malintenzionato può facilmente utilizzare più Giga di memoria e CPU al 100% su sistemi multiprocessore (vedere anche link e link )
  • Blocco dell'account utente: i meccanismi di accesso sono consigliati per implementare un meccanismo di blocco, ovvero bloccare l'utente dopo 5 password errate. Se si tratta di un blocco "permanente", E posso scoprire tutti i nomi utente (o una parte significativa di esso), posso scorrere tutti loro e inserire intenzionalmente la password errata in 5 volte, bloccando in modo efficace gli utenti ... E posso fallo anche all'amministratore, quindi non può nemmeno accedere per sbloccare gli altri utenti.
  • Richiesta piccola, richiede una risposta molto ampia o un tempo di elaborazione lungo, senza verificare che l'utente stia ancora aspettando.
  • Richiesta singola, dà il via a più processi, ad es. inviare molte e-mail contemporaneamente.
  • Caricamento di file di grandi dimensioni su un server con un piccolo disco / piccolo database / server di posta / quota di cartella limitata / ecc.
  • "Affari" DoS - ad es. inviando molte richieste di supporto, che un umano dovrà setacciare

Sì, come puoi dire ci sono molti diversi modelli e difetti che possono portare a fare DoS o consentire inondazioni. Non è una singola classe di attacco, ma piuttosto una categoria di danno.
 La protezione contro tutti loro richiede l'indirizzamento a ciascuno di essi e l'implementazione di un controllo appropriato, quindi l'esecuzione della Modellazione di minacce per verificare se esistono altre minacce pertinenti che possono influire sulla disponibilità.

Una raccomandazione generale che puoi prendere in considerazione, a seconda del tuo sistema e NON una pallottola d'argento per tutti questi attacchi (ma comunque utile), sta implementando un servizio di "watchdog". Questo servizio può monitorare l'app, riavviarla se necessario, avvisare un amministratore, se necessario, ecc. NON è consigliato per una qualsiasi app web di terze parti ....

    
risposta data 14.11.2010 - 13:04
fonte

Leggi altre domande sui tag