Cum de a rezista atacurilor ddos ​​cu nginx și nginx plus

Cum de a rezista atacurilor DDoS cu NGINX și NGINX Plus +14

  • 14.01.16 11:17 •
  • 1cloud •
  • # 275107 •
  • Habrahabr •
  • Traducere •
  • 5 •
  • 15200

- la fel ca Forbes, doar mai bine.







Introducere: ceea ce este DDoS


Negarea distribuite de atac de serviciu - «Distributed atac denial of service, cu scopul de negare a serviciului“ - este o încercare de a face orice serviciu, în mod normal, un site inaccesibil prin bombardarea traficul său din mai multe surse. Ca rezultat, serverul care o deservește, doar oprește funcționarea normală, fără a face față supraîncărcărilor.

Schema standard în acest caz este de a "tortura" sistemul cu atât de multe conexiuni noi și cere ca rețeaua să înceteze să facă față fluxului lor, sau devine atât de lent încât este imposibil să lucrați cu acesta.

Caracteristicile tehnice ale atacului DDoS


La nivelul aplicației, un atac DDoS este efectuat de programe speciale (bots) care pot exploata vulnerabilitățile dintr-un anumit sistem. De exemplu, un sistem care nu este dedicat gestionării unui număr mare de conexiuni concurente poate fi dezactivat prin crearea unui număr mare de astfel de "conexiuni". În stare activă, acestea pot fi suportate, din când în când, prin trimiterea unor cantități mici de trafic prin ele. O altă opțiune este de a umple sistemul cu un număr mare de solicitări sau de a face aceste solicitări destul de grele. Nu este vorba despre conexiuni reale, deci este foarte ușor să trimiteți un număr mare de cereri prin intermediul roboților și să creați rapid o mulțime de conexiuni noi.

Mai jos sunt caracteristicile tehnice ale atacurilor DDoS, prin care acestea pot fi recunoscute și, în funcție de care, să se facă față cu acestea:

NGINX și NGINX Plus capabile să combată atacurile DDoS


Multe caracteristici ale NGINX și NGINX Plus pot oferi un ajutor neprețuit atunci când se hotărăște cum să se facă față atacului DDoS. Funcționează în două direcții: gestionarea fluxului de intrare și monitorizarea distribuirii acestuia pe servere interne.

Limitarea frecvenței cererilor


Puteți ajusta frecvența cererilor de intrare prin NGINX și NGINX Plus la o valoare caracteristică utilizatorilor reali. De exemplu, considerați că utilizatorii merg la pagina dvs. de pornire la fiecare două secunde. Puteți seta echipamentul la această frecvență de solicitări pe pagină - 30 pe minut.

Limitarea numărului de conexiuni
Închiderea conexiunilor lente


Puteți închide conexiunile care transmit date prea rar, ceea ce poate fi un semn că obiectivul lor principal este să fie deschis pentru o perioadă lungă de timp și pentru a preveni conexiunile noi. Acest tip de program pentru atac este numit Slowloris. Directiva client_body_timeout controlează timpul de așteptare pentru NGINX între înregistrările din corpul clientului. Direcția client_header_timeout face același lucru pentru anteturi. Implicit, în ambele cazuri, sunt setate 60 de secunde. În următorul exemplu, acest interval este setat la 5 secunde.

Caching pentru a preveni saltul traficului


Puteți configura NGINX și NGINX Plus pentru a absorbi salturile de trafic în timpul unui atac prin cache și scrierea parametrilor, vor ignora cererile inverse. Acest lucru se poate face prin următoarele opțiuni:







Actualizări parametrilor proxy_cache_use_stale Nginx a raportat, că, atunci când este necesar să se actualizeze obiectele depășite din cache-ul, acesta trebuie să trimită doar o singură cerere, și pentru a menține accesul liber la astfel de facilități pentru clienți, în timp ce upgrade de la serverele interne nu este obținut.

Cheia definită de proxy_cache_key constă, de obicei, din variații încorporate (cheia implicită. $ Scheme $ proxy_host $ request_uri are trei variante). Dacă valoarea include $ query_string. atunci un atac care trimite un șir de interogări rare poate duce la cache-ul excesiv. Nu se recomandă includerea acestei opțiuni în cheie, dacă nu există o nevoie imediată.

Solicitați blocarea


Puteți configura NGINX și NGINX Plus pentru a bloca următoarele tipuri de interogări:

  • Solicită o adresă URL specifică, care poate fi expusă riscului.
  • Solicită în cazul în care anteturile User-Agent au o valoare care nu se potrivește cu traficul normal al clientului.
  • Cereri în care anteturile Referer pot fi definite ca fiind legate de un atac.
  • Cererile în care antetele rămase apar suspecte.

De exemplu, dacă decideți că un atac este vizat la adresa URL /foo.php, puteți bloca toate solicitările către pagină:


Dacă aflați că cererile de atac DDoS au valoarea foo sau bar în anteturile Agentului utilizator, le puteți bloca:


Prin același principiu, puteți lucra cu alte titluri care au valori care indică amenințarea atacului.

Restricționarea conexiunilor la servere interne


NGINX și NGINX Plus pot fi gestionate simultan cu mai multe conexiuni decât permite serverele interne. Cu ajutorul programului NGINX Plus, puteți limita numărul de conexiuni la fiecare dintre serverele interne. Să presupunem că doriți să limitați numărul de conexiuni la două servere interne ale grupului care deservește site-ul, 200:


Setul parametrilor max_conns stabilește pentru fiecare server numărul maxim de conexiuni deschise de NGINX Plus. Directiva privind coada de așteptare limitează numărul de cereri din coadă dacă toate serverele din grup au depășit limita. În aceeași linie, timpul pentru găsirea unei interogări în coadă este de 30 de secunde.

Atacuri pe bază de rază
Cum se pot descurca descărcări mari


Atacurile DDoS duc, de obicei, la o creștere critică a nivelului de încărcare. Pentru a citi despre cum să învățați NGINX și NGINX Plus și OS pentru a face față acestei probleme, faceți clic aici.

Detectarea unui atac DDoS


Până acum, am discutat despre modul în care NGINX și NGINX Plus pot fi folosite pentru a atenua consecințele unui atac DDoS. Dar este posibil să detectăm atacul folosind aceste servere? Modulul Status NGINX Plus oferă metrici de trafic metric detaliate care au fost distribuite serverelor interne. Acest instrument vă permite să recunoașteți condițiile anormale de trafic. NGINX Plus are funcția panoului de control al paginii site-ului, unde sunt afișate graficele stării actuale a sistemului său (pentru exemplu, a se vedea aici: demo.nginx.com/status.html). Acești indicatori sunt disponibili prin API, pot fi încorporați în propriul sistem de monitorizare sau de la terți și pot monitoriza modificările de trafic în timp, împiedicând astfel situațiile neobișnuite ale acestuia.


NGINX și NGINX Plus pot oferi un ajutor neprețuit atunci când se decide cum să renunțe la atacurile DDoS. În același timp, NGINX Plus are proprietăți suplimentare pentru a proteja împotriva atacurilor, prevenind apariția acestora.

De ce nu au scris despre codul 444
că pe baza sistemului de notare, vă puteți conecta și blog-ul prin ipset sau iptamber raw

setați $ add 1;
locație /index.php limit_except GET POST respinge toate;
>
set $ ban "";
dacă ($ http_referer = "")
dacă ($ request_method = POST)
dacă ($ query_string = "action = login")
dacă ($ ban = 111) acces_log / var / log / [133] nginx / ban IP;
retur 444;
>
proxy_pass 127.0.0.1: 8000;
>
Ei bine, valorile pentru scoruri pentru a înșuruba
nu un cuvânt despre reglarea kernelului ... deși acest lucru este direct la Nginx și nu se aplică subiectul poate fi evidențiat.

Directiva client_body_timeout controlează timpul de așteptare pentru NGINX între înregistrările din corpul clientului. Direcția client_header_timeout face același lucru pentru anteturi. Implicit, în ambele cazuri, sunt setate 60 de secunde. În următorul exemplu, acest interval este setat la 5 secunde.
Exact cu aceste valori. Este ușor să puneți clienții mobili sub cuțit.







Trimiteți-le prietenilor: