{"id":31924,"date":"2019-10-31T21:44:01","date_gmt":"2019-10-31T18:44:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\/"},"modified":"2019-10-31T21:44:01","modified_gmt":"2019-10-31T18:44:01","slug":"ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","title":{"rendered":"DDoS a supporto: come eseguiamo test di stress e di carico","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"DDoS a supporto: come eseguiamo test di stress e di carico\" src=\"\/wp-content\/uploads\/2019\/04\/9e01506f9103d69af131c7a419b10e42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>L'azienda Variti sviluppa soluzioni di protezione da bot e attacchi DDoS, oltre a condurre test di stress e di carico. Alla conferenza HighLoad++ 2018 abbiamo parlato di come mettere in sicurezza le risorse da vari tipi di attacchi. In breve: isola le parti del sistema, utilizza servizi cloud e CDN e aggiorna regolarmente. Ma senza aziende specializzate nella protezione non ce la farete comunque \ud83d\ude42<\/i><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPrima di leggere il testo puoi consultare i brevi punti chiave <noindex><a rel=\"nofollow\" href=\"http:\/\/www.highload.ru\/moscow\/2018\/abstracts\/4201\">sul sito della conferenza<\/a><\/noindex>.<br \/>\nE se non ami leggere o vuoi semplicemente guardare un video, la registrazione della nostra presentazione si trova qui sotto nel spoiler.<\/p>\n<p><b class=\"spoiler_title\">Registrazione video della presentazione<\/b><center><div class=\"youtube-placeholder\" data-id=\"Lu4tsUvfYRc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/Lu4tsUvfYRc\/hqdefault.jpg\" alt=\"Guarda il video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Molte aziende sono gi\u00e0 in grado di effettuare test di carico, ma non tutte eseguono test di stress. Alcuni dei nostri clienti pensano che il loro sito sia invulnerabile perch\u00e9 hanno un sistema highload, e questo li protegge bene dagli attacchi. Noi dimostriamo per\u00f2 che non \u00e8 del tutto vero. <br \/>\nNaturalmente, prima di eseguire i test otteniamo autorizzazione dal cliente, con firma e timbro, e con il nostro aiuto non \u00e8 possibile effettuare un attacco DDoS su nessuno. I test vengono condotti nel momento scelto dal cliente, quando il traffico sul suo sito \u00e8 minimo, evitando che eventuali problemi di accesso coinvolgano i clienti. Inoltre, poich\u00e9 durante i test possono sempre verificarsi imprevisti, manteniamo un contatto costante con il cliente. Questo consente non solo di comunicare i risultati raggiunti, ma anche di apportare modifiche durante i test. Al termine dei test redigiamo sempre un rapporto in cui evidenziamo le vulnerabilit\u00e0 riscontrate e forniamo raccomandazioni su come affrontare i punti deboli del sito. <\/p>\n<h3>Come lavoriamo<\/h3>\n<p>\nDurante i test emuliamo un botnet. Poich\u00e9 lavoriamo con clienti che non si trovano nelle nostre reti, affinch\u00e9 il test non si concluda nel primo minuto a causa dell'attivazione dei limiti o delle protezioni, applichiamo il carico non da un solo IP, ma dalla nostra sottorete. Inoltre, per generare un carico significativo disponiamo di un potente server di test.<\/p>\n<h3>Postulati<\/h3>\n<p><\/p>\n<blockquote><p><b>Molto non significa necessariamente bene<\/b><br \/>\nMeno carico ci vorr\u00e0 per portare il servizio al collasso, meglio sar\u00e0. Se riusciamo a far s\u00ec che il sito smetta di funzionare con una richiesta al secondo, o addirittura con una richiesta al minuto, sar\u00e0 fantastico. Questo perch\u00e9, per legge di Murphy, gli utenti o i malintenzionati cadranno esattamente in questa vulnerabilit\u00e0. <\/p><\/blockquote>\n<blockquote><p><b>Un guasto parziale \u00e8 meglio di uno totale<\/b><br \/>\nConsigliamo sempre di rendere i sistemi eterogenei. Inoltre, \u00e8 importante separarli a livello fisico, e non solo attraverso la containerizzazione. In caso di separazione fisica, anche se qualcosa sul sito smette di funzionare, \u00e8 molto probabile che non smetta di funzionare completamente, e gli utenti possano ancora accedere, almeno a una parte delle funzionalit\u00e0.<\/p><\/blockquote>\n<blockquote><p><b>Una corretta architettura \u00e8 la base della resilienza<\/b><br \/>\nLa resilienza di una risorsa e la sua capacit\u00e0 di resistere ad attacchi e carichi devono essere integrate fin dalla fase di progettazione, praticamente nella fase di creazione dei primi diagrammi a blocchi. Infatti, se si introducono errori fatali, pu\u00f2 essere difficile correggerli successivamente.<\/p><\/blockquote>\n<blockquote><p><b>Non deve essere solo il codice a essere buono, ma anche il configurazione<\/b><br \/>\nMolti pensano che un buon team di sviluppo garantisca la resilienza del servizio. Un buon team di sviluppo \u00e8 sicuramente necessario, ma \u00e8 altrettanto importante avere una buona gestione, un buon DevOps. Ossia, dobbiamo avere specialisti che configurino correttamente Linux e la rete, scrivano le configurazioni giuste in nginx, impostino limiti e altro. Altrimenti, la risorsa funzioner\u00e0 bene solo in test, ma in produzione, a un certo punto, tutto si romper\u00e0.<\/p><\/blockquote>\n<blockquote><p><b>Differenze tra test di carico e test di stress<\/b><br \/>\nIl test di carico consente di identificare i limiti di funzionamento del sistema. Il test di stress \u00e8 finalizzato a identificare i punti deboli del sistema e viene utilizzato per cercare di romperlo e vedere come si comporta durante il collasso di alcune parti. A tal fine, il carico caratteristico rimane solitamente sconosciuto per il cliente fino all'inizio del test di stress.<\/p><\/blockquote>\n<p><\/p>\n<h3>Caratteristiche distintive degli attacchi L7<\/h3>\n<p>\nDi solito suddividiamo i tipi di carico in carichi a livello L7 e L3&amp;4. L7 \u00e8 il caricamento a livello applicativo, di solito si intende solo HTTP, noi invece intendiamo qualsiasi carico a livello di protocollo TCP.<br \/>\nGli attacchi L7 hanno alcune caratteristiche distintive. Innanzitutto, arrivano direttamente all'applicazione, quindi \u00e8 difficile rifletterli con mezzi di rete. Questi attacchi utilizzano la logica e, grazie a ci\u00f2, consumano in modo molto efficiente e con un traffico ridotto CPU, memoria, disco, database e altre risorse.<\/p>\n<h3>HTTP Flood<\/h3>\n<p>\nIn caso di qualsiasi attacco, \u00e8 pi\u00f9 semplice generare un carico che gestirlo, e nel caso di L7 questo \u00e8 altrettanto vero. Il traffico dell'attacco non \u00e8 sempre facile da distinguere da quello legittimo e, nella maggior parte dei casi, si riesce a farlo in base alla frequenza, ma se tutto \u00e8 pianificato in modo intelligente, \u00e8 impossibile capire dai log dove ci sia un attacco e dove ci siano richieste legittime. <br \/>\nCome primo esempio, consideriamo l'attacco HTTP Flood. Dal grafico si pu\u00f2 vedere che di solito questi attacchi sono molto potenti; nell'esempio qui sotto, il numero massimo di richieste ha superato le 600.000 al minuto.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS a supporto: come eseguiamo test di stress e di carico\" src=\"\/wp-content\/uploads\/2019\/04\/a2bcd4b2babbb3362a717f93a3f3d1b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHTTP Flood \u00e8 il modo pi\u00f9 semplice per generare un carico. Di solito, si utilizza uno strumento di testing del carico, come ApacheBench, e si impostano le richieste e l'obiettivo. Con questo approccio semplice, c'\u00e8 una grande possibilit\u00e0 di imbattersi nella cache del server, ma \u00e8 facile aggirarlo. Ad esempio, aggiungendo stringhe casuali nella richiesta, costringendo cos\u00ec il server a restituire continuamente una nuova pagina. <br \/>\nNon bisogna dimenticare l'user-agent durante la generazione del carico. Molti user-agent degli strumenti di test pi\u00f9 popolari vengono filtrati dagli amministratori di sistema, e in tal caso il carico potrebbe semplicemente non arrivare al backend. \u00c8 possibile migliorare notevolmente i risultati inserendo nella richiesta un'intestazione pi\u00f9 o meno valida di un browser. <br \/>\nNonostante la semplicit\u00e0, gli attacchi HTTP Flood presentano anche i loro svantaggi. In primo luogo, per generare un carico sono necessarie grandi risorse. In secondo luogo, questi attacchi sono molto facili da rilevare, soprattutto se provengono da un singolo indirizzo. Di conseguenza, le richieste iniziano immediatamente a essere filtrate dagli amministratori di sistema o anche a livello del fornitore. <\/p>\n<h3>Cosa cercare<\/h3>\n<p>\nPer ridurre il numero di richieste al secondo e mantenere comunque l'efficienza, \u00e8 necessario avere un po' di fantasia e analizzare il sito. Ad esempio, si pu\u00f2 caricare non solo il canale o il server, ma anche singole parti dell'applicazione, come database o sistemi di file. Si possono anche cercare posti sul sito che effettuano calcoli complessi: calcolatrici, pagine di selezione dei prodotti e altro. Infine, spesso capita che ci sia uno script php sul sito che genera una pagina da centinaia di migliaia di righe. Questo script carica notevolmente il server e pu\u00f2 diventare un obiettivo per attacchi.<\/p>\n<h3>Dove cercare<\/h3>\n<p>\nQuando scansioniamo una risorsa prima di effettuare un test, innanzitutto guardiamo, naturalmente, il sito stesso. Cerchiamo vari campi di input, file pesanti: insomma, tutto ci\u00f2 che pu\u00f2 creare problemi alla risorsa e rallentare il suo funzionamento. In questo ci aiutano gli strumenti di sviluppo banali di Google Chrome e Firefox, che mostrano i tempi di risposta della pagina. <br \/>\nScansioniamo anche i sottodomini. Ad esempio, c'\u00e8 un negozio online, abc.com, e ha un sottodominio admin.abc.com. Probabilmente si tratta di un'area admin con autenticazione, ma se la si sottopone a carico, potrebbe creare problemi per la risorsa principale. <br \/>\nIl sito potrebbe avere un sottodominio api.abc.com. Probabilmente \u00e8 una risorsa per applicazioni mobili. L'app pu\u00f2 essere trovata su App Store o Google Play, impostare un punto di accesso speciale, decodificare l'API e registrare account di test. Il problema \u00e8 che spesso le persone pensano che tutto ci\u00f2 che \u00e8 protetto da autenticazione sia immune agli attacchi di negazione del servizio. Si crede che l'autenticazione sia la migliore CAPTCHA, ma non \u00e8 cos\u00ec. Creare 10-20 account di test \u00e8 semplice, e una volta creati, si ottiene accesso a funzionalit\u00e0 complesse e non protette. <br \/>\nNaturalmente, guardiamo la storia, il robots.txt e il WebArchive, ViewDNS, cercando vecchie versioni della risorsa. A volte capita che gli sviluppatori abbiano rilasciato, ad esempio, mail2.yandex.net, mentre la vecchia versione, mail.yandex.net, \u00e8 rimasta. Questo mail.yandex.net smette di essere supportato, non vengono allocati risorse di sviluppo, ma continua a consumare il database. Di conseguenza, utilizzando la vecchia versione, si possono sfruttare efficacemente le risorse del backend e tutto ci\u00f2 che sta dietro il layout. Certamente, ci\u00f2 non accade sempre, ma ci troviamo comunque di fronte a situazioni simili piuttosto frequentemente. <br \/>\nNaturalmente, analizziamo tutti i parametri della richiesta e la struttura dei cookie. Possiamo, per esempio, inserire un valore in un array JSON all'interno dei cookie, creare un'elevata nidificazione e costringere la risorsa a lavorare irragionevolmente a lungo.<\/p>\n<h3>Carico della ricerca<\/h3>\n<p>\nLa prima cosa che viene in mente quando si esplora un sito web \u00e8 di sovraccaricare il database, poich\u00e9 la ricerca \u00e8 presente quasi ovunque e, purtroppo, \u00e8 mal protetta nella maggior parte dei casi. Per qualche motivo, gli sviluppatori non prestano sufficiente attenzione alla ricerca. Tuttavia, c'\u00e8 un consiglio: non dovresti fare richieste simili, poich\u00e9 potresti incontrare caching, come nel caso di un attacco HTTP flood. <br \/>\nEffettuare richieste casuali al database non \u00e8 sempre efficace. \u00c8 molto meglio creare un elenco di parole chiave relative alla ricerca. Se torniamo all'esempio di un negozio online: supponiamo che il sito venda pneumatici per auto e permetta di impostare il raggio delle gomme, il tipo di auto e altri parametri. Di conseguenza, le combinazioni di parole pertinenti costringeranno il database a lavorare in condizioni molto pi\u00f9 complesse. <br \/>\nInoltre, \u00e8 opportuno utilizzare la paginazione: \u00e8 molto pi\u00f9 difficile per la ricerca restituire la penultima pagina dei risultati rispetto alla prima. In altre parole, grazie alla paginazione puoi diversificare il carico. <br \/>\nNell'esempio qui sotto mostriamo il carico sulla ricerca. Si vede che fin dai primi secondi del test, a una velocit\u00e0 di dieci richieste al secondo, il sito \u00e8 andato in crash e non ha risposto.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS a supporto: come eseguiamo test di stress e di carico\" src=\"\/wp-content\/uploads\/2019\/04\/dd888d9f3cc0e5058ac9508cee8cc3d5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Se non c'\u00e8 ricerca?<\/h3>\n<p>\nSe non c'\u00e8 ricerca, non significa che il sito non contenga altri campi di input vulnerabili. Un campo del genere potrebbe essere l'autenticazione. Al giorno d'oggi, gli sviluppatori amano creare hash complessi per proteggere il database delle credenziali dagli attacchi tramite tabelle arcobaleno. Questo \u00e8 positivo, ma tali hash consumano molte risorse CPU. Un grande afflusso di false autenticazioni pu\u00f2 portare a un sovraccarico della CPU e, di conseguenza, il sito smette di funzionare. <br \/>\nLa presenza di vari moduli per commenti e feedback sul sito \u00e8 un motivo per inviare testi molto lunghi o semplicemente creare un massiccio flood. A volte i siti accettano file allegati, incluso nel formato gzip. In tal caso, prendiamo un file di 1 TB, lo comprimiamo tramite gzip fino a pochi byte o kilobyte e lo inviamo al sito. Successivamente, viene decompresso e si ottiene un effetto molto interessante. <\/p>\n<h3>Rest API<\/h3>\n<p>\nVorrei dedicare un po' di attenzione a servizi attualmente molto popolari come le Rest API. Proteggere una Rest API \u00e8 molto pi\u00f9 complicato rispetto a un sito web normale. Per le Rest API nemmeno i metodi banali di protezione contro attacchi di forza bruta e altre attivit\u00e0 illegittime sono efficaci. <br \/>\nLe Rest API sono molto facili da compromettere, perch\u00e9 accedono direttamente al database. Questo comporta conseguenze piuttosto gravi per le aziende nel caso in cui il servizio venga interrotto. La questione \u00e8 che le Rest API sono spesso collegate non solo al sito principale, ma anche all'app mobile e ad alcune risorse aziendali interne. Se tutto questo non funziona, l'impatto \u00e8 molto pi\u00f9 forte rispetto a un semplice sito web che smette di funzionare. <\/p>\n<h3>Carico su contenuti pesanti<\/h3>\n<p>\nSe ci viene proposto di testare un normale singolo sito web, un landing page, una pagina vetrina, che non dispone di funzionalit\u00e0 complesse, cerchiamo contenuti pesanti. Ad esempio, grandi immagini che il server restituisce, file binari, documentazione in pdf - cerchiamo di scaricare tutto ci\u00f2. Questi test caricano bene il sistema di file e saturano le linee di rete, rendendoli cos\u00ec efficaci. Anche se non si spegne il server durante il download di un grande file a bassa velocit\u00e0, si saturer\u00e0 semplicemente la linea del server target e si verificher\u00e0 un'interruzione del servizio. <br \/>\nNell'esempio di questo test si vede che a una velocit\u00e0 di 30 RPS il sito ha smesso di rispondere o ha restituito errori del server 500.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS a supporto: come eseguiamo test di stress e di carico\" src=\"\/wp-content\/uploads\/2019\/04\/615e212d3a95b36a4f8c492d18508d7c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNon bisogna dimenticare anche la configurazione dei server. \u00c8 comune incontrare persone che hanno acquistato una macchina virtuale, hanno installato Apache, hanno impostato tutto di default, e hanno posizionato un'applicazione PHP, e qui sotto \u00e8 possibile vedere il risultato. <\/p>\n<p><img decoding=\"async\" alt=\"DDoS a supporto: come eseguiamo test di stress e di carico\" src=\"\/wp-content\/uploads\/2019\/04\/532a478528f8cd80285209f654411b79.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQui il carico era diretto alla radice e ammontava a soli 10 RPS. Abbiamo atteso 5 minuti e il server \u00e8 crollato. Non si sa esattamente perch\u00e9 sia crollato, ma si sospetta semplicemente che abbia esaurito la memoria e quindi ha smesso di rispondere.<\/p>\n<h3>Wave based<\/h3>\n<p>\nNegli ultimi uno o due anni sono diventati abbastanza popolari gli attacchi a onde. Questo \u00e8 dovuto al fatto che molte organizzazioni acquistano vari dispositivi per proteggersi dagli attacchi DDoS, i quali richiedono un certo periodo di accumulo di statistiche per iniziare a filtrare l'attacco. In altre parole, non filtrano l'attacco nei primi 30-40 secondi, poich\u00e9 stanno accumulando dati e imparando. Di conseguenza, in questi 30-40 secondi si possono inviare cos\u00ec tanti attacchi che il sito rimane gi\u00f9 per un lungo periodo, finch\u00e9 tutte le richieste non vengono elaborate. <br \/>\nNel caso dell'attacco qui sotto, c'era un intervallo di 10 minuti, dopo il quale \u00e8 arrivata una nuova ondata di attacco modificata.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS a supporto: come eseguiamo test di stress e di carico\" src=\"\/wp-content\/uploads\/2019\/04\/1bcc609697e255c6051cd215175801f3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCio\u00e8, la protezione ha imparato, ha avviato la filtrazione, ma \u00e8 arrivata una nuova ondata di attacco completamente diversa, e la protezione ha di nuovo iniziato a imparare. Di fatto, la filtrazione smette di funzionare, la protezione diventa inefficace e il sito non \u00e8 accessibile. <br \/>\nGli attacchi a onda si caratterizzano per valori molto alti al picco, possono raggiungere cento mila o milioni di richieste al secondo, nel caso dell'L7. Se parliamo dell'L3&amp;4, l\u00ec possono esserci centinaia di gigabit di traffico, o, di conseguenza, centinaia di mpps, se calcolati in pacchetti. <br \/>\nIl problema di tali attacchi \u00e8 la sincronizzazione. Gli attacchi provengono da un botnet, e per creare un picco molto grande in un colpo solo \u00e8 necessaria un'alta sincronizzazione. Questa coordinazione non sempre funziona: a volte si verifica un picco parabolico che appare piuttosto misero.<\/p>\n<h3>Non di solo HTTP<\/h3>\n<p>\nOltre a HTTP a livello L7, ci piace anche sfruttare altri protocolli. In genere, un normale sito web, specialmente un normale hosting, espone protocolli di posta e MySQL. I protocolli di posta sono meno soggetti a carichi rispetto ai database, ma possono anche essere sovraccaricati in modo abbastanza efficace, portando a un'CPU satura sul server. <br \/>\nSiamo riusciti a ottenere risultati utilizzando una vulnerabilit\u00e0 SSH del 2016. Attualmente questa vulnerabilit\u00e0 \u00e8 corretta quasi ovunque, ma ci\u00f2 non significa che non si possa caricare il SSH. Si pu\u00f2. Viene semplicemente inviata una enorme quantit\u00e0 di tentativi di autenticazione, il SSH consuma quasi tutta la CPU sul server e poi il sito web crolla gi\u00e0 con uno o due richieste al secondo. Di conseguenza, queste uno o due richieste nei log non possono essere distinte da un carico legittimo. <br \/>\nRimangono pertinenti anche numerose connessioni che apriamo nei server. In passato, Apache ha avuto questo problema, ora in realt\u00e0 anche nginx lo presenta, poich\u00e9 spesso viene configurato di default. Il numero di connessioni che nginx pu\u00f2 mantenere aperte \u00e8 limitato, quindi quando raggiungiamo questo numero, nginx non accetta pi\u00f9 nuove connessioni e il sito non funziona. <br \/>\nIl nostro cluster di test dispone di CPU sufficienti per attaccare il handshake SSL. In linea di principio, come dimostra la pratica, anche i botnet a volte amano farlo. Da un lato, \u00e8 chiaro che non si pu\u00f2 fare a meno di SSL, poich\u00e9 influisce sulla visibilit\u00e0 di Google, sul ranking e sulla sicurezza. D'altra parte, purtroppo, SSL ha un problema con la CPU. <\/p>\n<h3>L3&amp;4<\/h3>\n<p>\nQuando parliamo di attacchi ai livelli L3&amp;4, parliamo generalmente di attacchi a livello di canale. Questo tipo di carico \u00e8 quasi sempre distinguibile da quello legittimo, a meno che non si tratti di un attacco SYN-flood. Il problema degli attacchi SYN-flood per i sistemi di protezione risiede nel grande volume. La massima entit\u00e0 per L3&amp;4 \u00e8 stata di 1,5-2 Tbit\/s. Tale traffico \u00e8 molto difficile da gestire anche per le grandi aziende, inclusi Oracle e Google. <br \/>\nSYN e SYN-ACK sono i pacchetti utilizzati per stabilire una connessione. Pertanto, \u00e8 difficile distinguere un SYN-flood dal carico legittimo: non \u00e8 chiaro se si tratti di un SYN che \u00e8 arrivato per stabilire una connessione o di parte di un flood.<\/p>\n<h3>UDP-flood<\/h3>\n<p>\nDi solito, i malintenzionati non hanno le risorse che abbiamo noi, quindi possono utilizzare l'amplificazione per organizzare attacchi. Vale a dire, il malintenzionato scansione di internet e trova server vulnerabili o configurati in modo errato, che ad esempio, in risposta a un pacchetto SYN, rispondono con tre SYN-ACK. Alterando l'indirizzo sorgente dall'indirizzo del server di destinazione, si pu\u00f2 aumentare la potenza di un pacchetto, per esempio, di tre volte e indirizzare il traffico contro la vittima.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS a supporto: come eseguiamo test di stress e di carico\" src=\"\/wp-content\/uploads\/2019\/04\/33c5f42dc437a0bd2a4676a63d753fa6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nIl problema delle amplificazioni sta nella loro difficile individuazione. Tra gli ultimi esempi possiamo citare il noto caso del memcached vulnerabile. Inoltre, ora ci sono molti dispositivi IoT e telecamere IP, che sono principalmente configurati di default e, per di pi\u00f9, in modo errato, per cui attraverso tali dispositivi i malintenzionati effettuano attacchi nella maggior parte dei casi. <\/p>\n<p><img decoding=\"async\" alt=\"DDoS a supporto: come eseguiamo test di stress e di carico\" src=\"\/wp-content\/uploads\/2019\/04\/c7e5d01f94db9c5426d50bf21ed85822.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Non semplice SYN-flood<\/h3>\n<p>\nIl SYN-flood \u00e8 senza dubbio il tipo di attacco pi\u00f9 interessante dal punto di vista di un sviluppatore. Il problema \u00e8 che spesso gli amministratori di sistema utilizzano il blocco degli IP per proteggersi. Tuttavia, non solo gli amministratori che agiscono secondo script ne risentono, ma purtroppo anche alcuni sistemi di protezione acquistati a caro prezzo. <br \/>\nQuesto metodo pu\u00f2 rivelarsi catastrofico, poich\u00e9 se i malintenzionati sostituiscono <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/lir\/ipv4\/\"   title=\"Indirizzi IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"623\">Indirizzi IP<\/a>, l'azienda bloccher\u00e0 la propria sottorete. Quando il Firewall blocca il proprio cluster, ci saranno conseguenze negative per le interazioni esterne, e il servizio si guaster\u00e0. <br \/>\nInoltre, non \u00e8 difficile ottenere il blocco della propria rete. Se l'ufficio del cliente dispone di una rete Wi-Fi, oppure se la funzionalit\u00e0 delle risorse \u00e8 monitorata attraverso vari strumenti, possiamo prendere l'indirizzo IP di questo sistema di monitoraggio o del cliente Wi-Fi e usarlo come fonte. Cos\u00ec, il servizio apparir\u00e0 disponibile, ma gli indirizzi IP target saranno bloccati. Ad esempio, pu\u00f2 essere bloccata la rete Wi-Fi della conferenza HighLoad, dove verr\u00e0 presentato un nuovo prodotto dell'azienda, il che comporterebbe determinati costi commerciali ed economici. <br \/>\nDurante i test non possiamo utilizzare l'amplificazione tramite memcached con risorse esterne, poich\u00e9 ci sono accordi per instradare il traffico solo verso indirizzi IP autorizzati. Pertanto, utilizziamo l'amplificazione tramite SYN e SYN-ACK, quando l'invio di un SYN provoca una risposta della macchina con due o tre SYN-ACK, moltiplicando cos\u00ec l'attacco da due a tre volte. <\/p>\n<h3>Strumenti<\/h3>\n<p>\nUno dei principali strumenti che utilizziamo per il carico a livello L7 \u00e8 Yandex-tank. In particolare, viene utilizzato un phantom come arma e ci sono diversi script per generare munizioni e analizzare i risultati. <br \/>\nPer analizzare il traffico di rete utilizziamo Tcpdump e per analizzare il server Nmap. Per generare carichi a livello L3&amp;4 utilizziamo OpenSSL e un po' della nostra magia con la libreria DPDK. DPDK \u00e8 una libreria di Intel che permette di lavorare con l'interfaccia di rete, bypassando lo stack Linux e aumentando cos\u00ec l'efficienza. Naturalmente, utilizziamo DPDK non solo a livello L3&amp;4, ma anche a livello L7, perch\u00e9 consente di generare un flusso di carico molto elevato, nell'ordine di milioni di richieste al secondo da un'unica macchina. <br \/>\nUtilizziamo anche determinati generatori di traffico e strumenti speciali che sviluppiamo per test specifici. Ricordando la vulnerabilit\u00e0 sotto SSH, il set di strumenti sopra menzionato non pu\u00f2 essere sfruttato. Se attacchiamo il protocollo di posta, utilizziamo strumenti di posta elettronica oppure semplicemente scriviamo script per questi.<\/p>\n<blockquote>\n<h3>Conclusioni<\/h3>\n<p>\nIn conclusione, vorrei dire:<\/p>\n<ul>\n<li>Oltre ai tradizionali test di carico, \u00e8 fondamentale eseguire anche test di stress. Abbiamo un esempio reale, quando un subappaltatore del partner ha effettuato solo test di carico. Questi hanno dimostrato che la risorsa reggeva il carico normale. Ma poi \u00e8 emerso un carico atipico, i visitatori del sito hanno iniziato ad utilizzare la risorsa in un modo leggermente diverso, e alla fine il subappaltatore ha ceduto. Pertanto, \u00e8 importante cercare vulnerabilit\u00e0 anche se siete gi\u00e0 protetti da attacchi DDoS.<\/li>\n<li>\u00c8 necessario isolare alcune parti del sistema dalle altre. Se avete un motore di ricerca, deve essere spostato su macchine separate, quindi nemmeno in Docker. Perch\u00e9 se il motore di ricerca o l'autenticazione falliscono, almeno qualcosa continuer\u00e0 a funzionare. Nel caso di un negozio online, gli utenti continueranno a trovare i prodotti nel catalogo, a passare dall'aggregatore, ad acquistare se gi\u00e0 autenticati, oppure ad autenticarsi tramite OAuth2.<\/li>\n<li>Non trascurate i vari servizi cloud. <\/li>\n<li>Utilizzate il CDN non solo per ottimizzare i ritardi di rete, ma anche come misura di protezione contro attacchi di esaurimento della banda e semplicemente flud in statica.<\/li>\n<li>\u00c8 necessario utilizzare servizi di protezione specializzati. Non potete difendervi da attacchi L3&amp;4 a livello di canale, perch\u00e9 probabilmente non avete una banda sufficiente. Anche le difese contro attacchi L7 sono improbabili, poich\u00e9 possono essere molto grandi. Inoltre, la scoperta di piccoli attacchi \u00e8 comunque prerogativa di servizi specializzati e algoritmi specifici. <\/li>\n<li>Aggiornate regolarmente. Questo riguarda non solo il core, ma anche il demone SSH, specialmente se sono esposti all'esterno. In linea di principio, bisogna aggiornare tutto, perch\u00e9 seguirne le vulnerabilit\u00e0 da soli \u00e8 difficile.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/variti\/blog\/448626\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u0431\u043e\u0442\u043e\u0432 \u0438 DDoS-\u0430\u0442\u0430\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 HighLoad++ 2018 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438, \u043a\u0430\u043a \u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u0430\u0442\u0430\u043a. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e: \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 CDN \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0439\u0442\u0435\u0441\u044c. \u041d\u043e \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u0432\u044b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u0441\u044c \ud83d\ude42 \u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23782,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31924","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47DDoS \u0432 \u043f\u043e\u043c\u043e\u0449\u044c: \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:44:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:44:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DDoS a supporto: come eseguiamo test di stress e di carico | ProHoster","description":"L'azienda Variti sta sviluppando.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47DDoS \u0432 \u043f\u043e\u043c\u043e\u0449\u044c: \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b | ProHoster","og:description":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:44:01+00:00","article:modified_time":"2019-10-31T18:44:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31924","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-08 20:27:18","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:46:57","updated":"2026-02-08 20:27:18","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=31924"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31924\/revisions"}],"predecessor-version":[{"id":157814,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31924\/revisions\/157814"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/23782"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=31924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=31924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=31924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}