📒  Încredere și securitate

Cum să preveniți atacul ddos asupra Nginx

Cum să preveniți atacul ddos pe nginx, aflați cum să blocați anumite atacuri DDoS cu serverul web Nginx cu această configurație de protecție nginx ddos, acest lucru va ajuta serverul dvs. să prevină și să blocheze anumite atacuri DDoS comune, cu configurația și întărirea Nginx puteți bloca unele atacuri în serverul dvs.

Alexhost oferă protecție Anti-DDoS gratuită împotriva anumitor atacuri, puteți utiliza serverele noastre VPS sau serverele dedicate, oferim protecție Anti-DDoS gratuită, însă capacitatea de atenuare, metodele, filtrarea vor fi diferite în funcție de locația aleasă.

Cerințe:
Nginx (trebuie să aveți Nginx instalat pe serverul dvs. actual)
Unele cunoștințe (este necesar să știți cum să utilizați comenzile de bază ale Linux și cum să accesați unele fișiere Nginx, se așteaptă know-how)
Server VPS sau Dedicated Server (puteți utiliza un VM în gazda dvs. locală)
Protecție DDoS (de la furnizorul dvs. de găzduire este necesară pentru a putea atenua atacurile DDoS mai complexe)
Linux (orice distribuție în care poate fi instalat Nginx)
Nginx (este posibil să fie necesar să citiți documentația Nginx pentru a testa și a verifica dacă este încă fiabil)

Limitări: Acest tutorial nu este un “bulletproof” pentru a proteja împotriva tuturor atacurilor DDoS, acesta va limita probabil atacul prin blocarea anumitor tipuri de atacuri comune și vă va ajuta serverul să fie online. Există unele limitări împotriva unor atacuri DDoS, va trebui ca furnizorul dvs. de găzduire să ofere un anumit tip de protecție DDoS pentru a bloca și preveni, această configurație nu poate proteja împotriva tuturor atacurilor împotriva serverului dvs. Această configurație previne și blochează unele atacuri, dar nu va bloca toate atacurile fără protecție DDoS din partea furnizorului dvs. de găzduire.

Avertisment: Alexhost nu vă recomandă să utilizați această configurație în serverul dvs. de producție, vă recomandăm să o testați înainte de a face ceva. Alexhost nu este responsabil pentru nici un fel de problemă pe care acest lucru ar putea crea sau nu. Practicați o bună securitate a serverului, înainte de a implementa ceva faceți o copie de rezervă a tot în cazul în care trebuie să restaurați. Vă rugăm să citiți documentația Nginx pentru protecția DDoS pentru a înțelege cum funcționează.

Preveniți atacurile DDoS prin întărirea Nginx

Configurarea Nginx pentru protecția DDoS și întărirea împotriva straturilor comune de atac implică implementarea diferitelor strategii pentru a atenua și preveni atacurile. Iată un ghid despre cum să configurați Nginx pentru a spori securitatea și să aflați Cum să preveniți atacul ddos pe nginx prin întărirea serverului dvs. web:

  1. Actualizați Nginx: Asigurați-vă că utilizați cea mai recentă versiune stabilă a Nginx pentru a beneficia de cele mai recente patch-uri de securitate și îmbunătățiri.
  2. Limitați conexiunile: Utilizați modulul limit_conn pentru a restricționa numărul de conexiuni de la o singură adresă IP. Acest lucru ajută la prevenirea atacurilor DDoS de la copleșirea serverului dvs. cu prea multe conexiuni simultane.

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;

    server {
        limit_req zone=req_limit_per_ip burst=5;
        # Alte configurații ale serverului...
    }
}

Lista albă/lista neagră de IP-uri: Utilizați directivele allow și deny pentru a introduce pe lista albă adresele IP de încredere și pentru a le bloca pe cele rău intenționate.
nginx

http {
    # Lista albă a adreselor IP de încredere
    allow 192.168.1.0/24;
    deny all;
    # Alte configurații ale serverului...
}

Implementați Web Application Firewall (WAF): Utilizați module terțe precum ModSecurity cu Nginx pentru a detecta și bloca traficul HTTP rău intenționat.

Activați HTTPS: Criptați comunicarea dintre clienți și server utilizând HTTPS pentru a preveni interceptarea datelor și atacurile man-in-the-middle.

Dezactivați modulele neutilizate: Dezactivați modulele Nginx inutile pentru a reduce suprafața de atac și a îmbunătăți performanța.
nginx

./configure --without-http_autoindex_module --without-http_ssi_module
  1. Reglarea configurației Nginx: Optimizați parametrii de configurare Nginx, cum ar fi procesele worker, conexiunile worker și timeout-urile, în funcție de capacitățile hardware ale serverului dvs. și de traficul preconizat.
  2. Monitorizare și logare: Monitorizați în mod regulat jurnalele serverului pentru activități suspecte și configurați sisteme de alertă pentru a notifica administratorii cu privire la potențialele atacuri.
  3. Implementarea serviciilor de protecție DDOS: Luați în considerare utilizarea unor servicii sau dispozitive specializate de protecție împotriva DDoS în fața Nginx, cum ar fi Cloudflare, AWS Shield sau Akamai.
  4. Copii de rezervă regulate: Asigurați backup-uri regulate ale datelor critice pentru a minimiza impactul atacurilor reușite.

Amintiți-vă că securitatea este un proces continuu și este esențial să rămâneți la curent cu cele mai recente practici și amenințări de securitate pentru a vă proteja eficient serverul împotriva atacurilor potențiale.

Configurarea protecției ddos Nginx:

#Definiți o zonă pentru a urmări conexiunile de la fiecare IP

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    # Definește o zonă pentru a urmări cererile de la fiecare IP
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    server {
        listen 80;
        server_name example.com;
        # Cerere de limitare a ratei
        limit_req zone=req_limit_per_ip burst=20;
        # Limitează numărul maxim de conexiuni de la un singur IP
        limit_conn conn_limit_per_ip 20;
        # Deny requests with large request bodies to mitigate against some types of attacks
        client_body_buffer_size 1k;
        client_header_buffer_size 1k;
        client_max_body_size 1k;
        large_client_header_buffers 2 1k;
        # Activează compresia Gzip pentru a economisi lățime de bandă
        gzip on;
        gzip_comp_level 5;
        gzip_min_length 256;
        gzip_proxied any;
        gzip_vary on;
        # Add security headers to enhance security
        add_header X-Content-Type-Options "nosniff";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Frame-Options "SAMEORIGIN";
        add_header Referrer-Policy "same-origin";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        # Block common vulnerable User-Agents
        if ($http_user_agent ~* (wget|curl) ) {
            return 403;
        }
        # Blocați accesul la fișiere ascunse
        locație ~ /\. {
            deny all;
        }
        # Blocați accesul la anumite tipuri de fișiere
        location ~* \\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
            refuză toate;
            return 403;
        }
        # Lista albă a IP-ului dvs. pentru accesul administrativ
        locație /admin {
            allow your_admin_ip;
            deny all;
        }
        # Refuzați accesul la anumite directoare
        locație ~ /(system|vendor) {
            refuză toate;
            return 403;
        }
        # Transmiteți cererile proxy către serverul dvs. de aplicații
        locație / {
            proxy_pass http://your_backend_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Această configurație face următoarele:

  1. Limitarea ratei: Limitează numărul de cereri de la fiecare adresă IP la 10 cereri pe secundă, cu o explozie de 20 de cereri.
  2. Limitarea conexiunii: Limitează numărul maxim de conexiuni de la fiecare adresă IP la 20.
  3. Limitarea dimensiunii corpului cererii: Limitează dimensiunea corpurilor de cerere pentru a atenua atacurile care trimit corpuri de cerere mari.
  4. Compresie Gzip: Activează compresia gzip pentru a economisi lățime de bandă.
  5. Antet de securitate: Adaugă antete de securitate pentru a spori securitatea.
  6. Blocarea agenților utilizatori vulnerabili: Blochează solicitările din partea agenților de utilizator vulnerabili comuni.
  7. Blocarea fișierelor ascunse: Blochează accesul la fișierele și directoarele ascunse.
  8. Whitelisting Admin Access: Permite accesul la zona de administrare numai de la adresa dvs. de IP.
  9. Negarea accesului la anumite directoare: Blochează accesul la directoare sensibile precum sistem și vânzător.
  10. Proxy Pass: Înaintează solicitările către serverul dvs. de aplicații.

Asigurați-vă că personalizați configurația în funcție de cerințele dvs. specifice, cum ar fi numele de domeniu, adresele serverului backend și adresele IP administrative. În plus, monitorizați în mod regulat jurnalele serverului dvs. și ajustați configurațiile după cum este necesar pentru a vă adapta la evoluția amenințărilor.

Configurația furnizată este menită să fie adăugată la fișierul nginx.conf sau inclusă din fișiere de configurare separate. Iată un ghid pas cu pas cu privire la locul de adăugare a configurației:

  1. Localizați fișierulnginx.conf: În funcție de instalarea Nginx, fișierul nginx.conf poate fi localizat în directoare diferite. Locațiile comune includ /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf sau /etc/nginx/sites-available/default.
  2. Deschideți fișierulnginx.conf: Puteți deschide fișierul utilizând un editor de text sau un editor de text cu linie de comandă precum nano, vim sau emacs.
  3. Adăugați configurația în cadrul bloculuihttp: În interiorul blocului http, care definește setările serverului HTTP, veți adăuga configurația furnizată. De obicei, veți găsi blocul http aproape de partea de sus a fișierului nginx.conf.
  4. Lipiți configurația furnizată: Lipiți întreaga configurație furnizată anterior în interiorul blocului http. Asigurați-vă că înlocuiți valorile de tip placeholder precum example.com, your_admin_ip și your_backend_server cu valorile reale.
  5. Salvați și ieșiți din fișier: După adăugarea configurației, salvați fișierul nginx.conf și ieșiți din editorul de text.
  6. Testați configurația Nginx: Înainte de a reporni Nginx, este o practică bună să testați configurația pentru erori de sintaxă.
  7. Puteți face acest lucru prin rularea următoarei comenzi:
    nginx -t

Dacă nu există erori de sintaxă, veți vedea un mesaj care indică faptul că testul fișierului de configurare a avut succes.

Reporniți Nginx: În cele din urmă, reporniți Nginx pentru a aplica modificările. Puteți face acest lucru cu următoarea comandă:
sudo service nginx restart

  1. Dacă nu utilizați un sistem cu systemd, este posibil să utilizați comenzi diferite pentru a reporni Nginx.

Urmând acești pași, veți adăuga configurația furnizată serverului dvs. Nginx, sporind securitatea acestuia cu protecție DDoS și alte măsuri de securitate, acest tutorial vă va ajutacum să preveniți atacul ddos pe nginx prin configurarea Nginx.