Scoprite come utilizzare il server web Nginx per bloccare alcuni attacchi DDoS grazie a una configurazione sicura. Questo approccio aiuterà il vostro server a proteggersi contro attacchi DDoS frequenti. Migliorando la configurazione di Nginx, potete proteggere il vostro server da diversi tipi di attacchi.
OuiHeberg offre una protezione Anti-DDoS gratuita contro alcuni attacchi mirati. Utilizzando i nostri server VPS o dedicati, beneficiate di una protezione Anti-DDoS senza costi aggiuntivi. Tuttavia, le capacità di mitigazione, i metodi impiegati e il filtraggio possono variare a seconda della località selezionata.
Prerequisiti
- Nginx: Assicuratevi che Nginx sia installato sul vostro server.
- Conoscenze di base: Dovete essere a vostro agio con i comandi base di Linux e sapere come accedere ai file di configurazione di Nginx.
- Server VPS o dedicato: Un server virtuale privato o dedicato, oppure una macchina virtuale sul vostro host locale.
- Protezione DDoS: Il vostro provider deve offrire una forma di protezione DDoS per poter mitigare attacchi più sofisticati.
- Linux: Qualsiasi distribuzione compatibile con Nginx.
Limitazioni
Questa guida non è una soluzione completa per difendersi da tutti gli attacchi DDoS. Probabilmente contribuirà a mitigare alcuni attacchi comuni e a mantenere operativo il vostro server. Tuttavia, per alcuni attacchi DDoS complessi, è necessario che il vostro provider offra una protezione DDoS adeguata per bloccarli e prevenirli. Questa configurazione non può proteggere da tutte le forme di attacco al vostro server; è progettata per prevenire e bloccare alcuni tipi di attacchi, ma non sarà efficace senza la protezione DDoS del vostro fornitore.
Avvertenza
OuiHeberg sconsiglia di applicare questa configurazione direttamente sul vostro server di produzione senza averla prima testata. Decliniamo ogni responsabilità per eventuali problemi che ciò potrebbe causare. Assicuratevi di seguire le buone pratiche in materia di sicurezza server ed effettuate backup prima di qualsiasi modifica, nel caso fosse necessaria una ripristino. Consultate la documentazione di Nginx relativa alla protezione DDoS per comprendere bene il funzionamento.
Rafforzare Nginx per prevenire gli attacchi DDoS
Per proteggere Nginx dagli attacchi DDoS e rafforzare la sua resistenza agli attacchi comuni, è necessario implementare diverse strategie di mitigazione e prevenzione. Ecco come configurare Nginx per migliorarne la sicurezza:
1. Aggiornare Nginx
Verificate di utilizzare la versione stabile più recente di Nginx per beneficiare delle ultime correzioni di sicurezza e miglioramenti.
2. Limitare le connessioni
Utilizzate il modulo limit_conn per limitare il numero di connessioni provenienti dallo stesso indirizzo IP. Questo aiuta a prevenire attacchi DDoS che tentano di saturare il vostro server con un gran numero di connessioni simultanee.
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;
# Altre configurazioni del server...
}
}
3. Gestione delle whitelist e blacklist degli IP
Utilizzate le direttive allow e deny per autorizzare indirizzi IP affidabili e bloccare quelli malevoli.
http {
# Autorizzare gli indirizzi IP di fiducia
allow 192.168.1.0/24;
deny all;
# Altre configurazioni del server...
}
4. Installare un firewall applicativo web (WAF)
Integrate moduli di terze parti come ModSecurity con Nginx per rilevare e bloccare il traffico HTTP malevolo.
5. Abilitare HTTPS
Utilizzate HTTPS per cifrare le comunicazioni tra i client e il server, prevenendo l'intercettazione dei dati e gli attacchi di tipo man-in-the-middle.
6. Disabilitare i moduli non utilizzati
Disabilitate i moduli Nginx di cui non avete bisogno per ridurre la superficie di attacco e ottimizzare le prestazioni.
./configure --without-http_autoindex_module --without-http_ssi_module
7. Ottimizzare la configurazione di Nginx
Regolate i parametri di configurazione di Nginx, come i processi di lavoro, le connessioni di lavoro e i timeout, in base alle risorse hardware del vostro server e al volume di traffico previsto.
8. Monitoraggio e logging
Esaminate regolarmente i log del server per individuare attività sospette e implementate sistemi di allerta per informare gli amministratori in caso di potenziali attacchi.
9. Utilizzare servizi di protezione DDoS
Valutate l'utilizzo di servizi o appliance specializzati nella protezione DDoS a monte di Nginx, come Cloudflare, AWS Shield o Akamai.
10. Eseguire backup regolari
Assicuratevi di eseguire frequentemente il backup dei dati essenziali per minimizzare gli impatti in caso di attacchi riusciti.
Ricordate che la sicurezza è un processo continuo. È essenziale rimanere aggiornati sulle ultime minacce e sulle migliori pratiche di sicurezza per proteggere efficacemente il vostro server dagli attacchi potenziali.
Configurazione di protezione DDoS per Nginx
Ecco una configurazione che potete aggiungere al vostro file nginx.conf per rafforzare la sicurezza:
# Definire una zona per tracciare le connessioni di ogni IP
http {
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
# Definire una zona per tracciare le richieste di ogni IP
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
server {
listen 80;
server_name esempio.com;
# Limitare il rate delle richieste
limit_req zone=req_limit_per_ip burst=20;
# Limitare il numero massimo di connessioni da un singolo IP
limit_conn conn_limit_per_ip 20;
# Rifiutare richieste con grandi body per mitigare alcuni tipi di attacchi
client_body_buffer_size 1k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
# Abilitare la compressione Gzip per risparmiare banda
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
# Aggiungere header di sicurezza per rafforzare la protezione
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;
# Bloccare User-Agent vulnerabili comuni
if ($http_user_agent ~* (wget|curl) ) {
return 403;
}
# Bloccare l'accesso ai file nascosti
location ~ /\. {
deny all;
}
# Bloccare l'accesso a determinati tipi di file
location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
deny all;
return 403;
}
# Mettere in whitelist il vostro IP per l'accesso all'amministrazione
location /admin {
allow vostro_ip_admin;
deny all;
}
# Vietare l'accesso a determinate directory
location ~ /(system|vendor) {
deny all;
return 403;
}
# Proxy per inoltrare le richieste al vostro server applicativo
location / {
proxy_pass http://vostro_server_backend;
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;
}
}
}
Questa configurazione esegue le seguenti azioni:
- Limitazione del rate: Limita ogni indirizzo IP a 10 richieste al secondo con un burst consentito di 20 richieste.
- Limitazione delle connessioni: Limita ogni indirizzo IP a un massimo di 20 connessioni simultanee.
- Limitazione della dimensione del body delle richieste: Limita la dimensione dei body delle richieste per mitigare attacchi che inviano grandi quantità di dati.
- Compressione Gzip: Abilita la compressione gzip per risparmiare banda.
- Header di sicurezza: Aggiunge header per rafforzare la sicurezza.
- Blocco dei User-Agent vulnerabili: Blocca le richieste provenienti da User-Agent comunemente utilizzati per attività malevole.
- Blocco dei file nascosti: Vietato l'accesso a file e directory nascosti.
- Whitelist per l'accesso admin: Consente solo al vostro indirizzo IP di accedere all'area di amministrazione.
- Divieto di accesso a determinate directory: Blocca l'accesso a directory sensibili come
systemevendor. - Proxy Pass: Inoltra le richieste al vostro server applicativo.
Assicuratevi di adattare questa configurazione alle vostre esigenze specifiche, in particolare i nomi di dominio, gli indirizzi del server backend e gli indirizzi IP per l'amministrazione. Inoltre, monitorate regolarmente i log del vostro server e regolate le configurazioni in base all'evoluzione delle minacce.
Come integrare questa configurazione in Nginx
Ecco i passaggi da seguire per aggiungere questa configurazione:
-
Individuate il file
nginx.conf: A seconda della vostra installazione, il filenginx.confpuò trovarsi in diverse posizioni, come/etc/nginx/nginx.conf,/usr/local/nginx/conf/nginx.confo/etc/nginx/sites-available/default. -
Aprite il file
nginx.conf: Utilizzate un editor di testo o un editor da linea di comando comenano,vimoemacsper aprire il file. -
Aggiungete la configurazione nel blocco
http: All'interno del bloccohttp, che definisce i parametri del server HTTP, inserite la configurazione fornita. Questo blocco si trova generalmente vicino all'inizio del filenginx.conf. -
Inserite la configurazione fornita: Incollate l'intera configurazione precedente all'interno del blocco
http. Assicuratevi di sostituire i valori predefiniti comeesempio.com,vostro_ip_adminevostro_server_backendcon le vostre informazioni specifiche. -
Salvate e chiudete il file: Dopo aver integrato la configurazione, salvate le modifiche e chiudete l'editor.
-
Verificate la configurazione di Nginx: Prima di riavviare Nginx, si consiglia di testare la configurazione per rilevare eventuali errori di sintassi eseguendo:
nginx -tSe tutto è corretto, verrà visualizzato un messaggio che indica che il test del file di configurazione è riuscito.
-
Riavviate Nginx: Per applicare le modifiche, riavviate Nginx con il comando:
sudo service nginx restartSe non utilizzate
systemd, potrebbe essere necessario utilizzare un altro comando per riavviare Nginx.
Seguendo questi passaggi, integrerete la configurazione proposta sul vostro server Nginx, rafforzandone così la sicurezza grazie alla protezione DDoS e ad altre misure di sicurezza. Questa guida vi aiuterà a prevenire gli attacchi DDoS su Nginx configurandolo correttamente.
OuiHeberg si impegna a offrirvi le migliori soluzioni per mettere in sicurezza i vostri servizi online. Non esitate a contattarci per qualsiasi domanda o ulteriore assistenza.
