Guida alla sicurezza e alla protezione del server Web Nginx

Best practice sulla sicurezza di Nginx.


Nginx è il web server in più rapida crescita nel settore e attualmente detiene la seconda posizione nella quota di mercato.

È stato inizialmente rilasciato nel 2004 e da allora ha guadagnato un’ottima reputazione e utilizzato nei primi milioni di siti più frequentati.

C’è una ragione per questo – Nginx lo è velocissimo.

In questo articolo, parlerò di alcune delle guide essenziali per proteggere Nginx per un ambiente di produzione. Quindi iniziamo.

SSL / TLS

Implementare il certificato SSL

Il primo passo nella sicurezza del Web è l’implementazione di SSL in modo da poter accedere alle applicazioni Web con https e aggiungere un livello di crittografia nella comunicazione.

  • Utilizzare OpenSSL per generare CSR con 2048 bit e sha-2

openssl req -nodes -new -sha256 -newkey rsa: 2048 -keyout bestflare.key -out bestflare.csr

  • Il comando sopra genererà CSR e file chiave attualmente funzionanti direttamente. Non dimenticare di cambiare il nome del file .csr e .key.

Ottieni il CSR firmato da un’autorità di certificazione e una volta che hai il certificato firmato, puoi implementarlo in Nginx come di seguito.

  • Accedi al server Nginx
  • Vai alla cartella conf dove hai un file ssl.conf.

Nota: nell’installazione predefinita su Linux, questo file sarà disponibile /etc/nginx/conf.d.

  • Modifica il file e aggiungi quanto segue, che consentirà a Nginx di ascoltare sulla porta 443

server {
ascolta 443 ssl;
nome_server bestflare.com;
ssl on;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Nota: non dimenticare di modificare il percorso del certificato e del file chiave.

  • Salvare la configurazione e riavviare Nginx. Un certificato SSL è implementato correttamente.

bestflare-ssl-cert

Ottimizzazione SSL / TLS

Avere SSL non significa che sia completamente sicuro ed è qui che come esperto di sicurezza Web, è necessario applicare una configurazione per proteggere il server web.

Per cominciare, consiglierei di eseguire un Scansione SSL contro il sito Web per trovare il punteggio e la vulnerabilità essenziale.

ssl-Labs-valutazione-c

Quindi l’attuale valutazione di SSL Labs è “C” e un obiettivo è renderlo “A.”

Disabilita i protocolli SSL / TLS deboli

SSL 3, TLS 1.0 e TLS 1.1 è vulnerabile e consentiremo solo un protocollo TLS 1.2 avanzato.

  • Modifica il file ssl.conf e aggiungilo sotto nel blocco server

protocolli ssl TLSv1.2;

  • Salvare il file ssl.conf e riavviare Nginx

Disabilita le suite di cifratura debole

Le suite di cifratura deboli possono portare a vulnerabilità come un logjam, ed è per questo che dobbiamo consentire solo cifrature forti.

  • Aggiungere quanto segue al blocco server nel file ssl.conf

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH EDH + aRS! ALTA! RC! ! MD5! EXP! PSK! SRP! DSS";

  • Salvare il file e riavviare Nginx

Installa certificato catena

Non avere un certificato a catena influisce anche sulla valutazione complessiva e questo può mostrare un errore durante la navigazione in un browser moderno come Chrome. È necessario ottenere un certificato a catena dall’autorità. Principalmente lo troverai sul loro sito Web o solo su Google.

  • Aggiungi il contenuto del certificato chain nel certificato del sito Web come di seguito. Nel mio esempio, sarebbe /opt/cert/bestflare.pem

CERT-chain

  • Salvare il file e riavviare Nginx

Diffie-Hellman sicuro per TLS

Diffie-Hellman è meno sicuro di quanto si credesse. Una delle migliori pratiche recentemente aggiunte in un elenco è quella di proteggere Diffie-hellman. La generazione unica di DH GROUP e l’aggiunta di ssl_dhparam nel file ssl.conf fa questo.

  • Generare Unique DH Group utilizzando OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Ci vorranno pochi minuti e genererà un file dhparams.pem su una directory di lavoro corrente
  • Copia dhparams.pem nella cartella cert
  • Modificare ssl.conf e aggiungere quanto segue nel blocco server

ssl_dhparam /opt/cert/dhparams.pem;

  • Salvare il file e riavviare Nginx

Questo dovrebbe essere sufficiente per l’ottimizzazione SSL / TLS e testiamo nuovamente l’URL per vedere la valutazione.

ssllabs-a-valutazione

Woo ho! Quindi ora puoi vederlo “UN” valutazione da parte di SSLLabs. Molto bene!

Ecco ssl.conf completo

# Configurazione del server HTTPS
server {
ascolta 443 ssl;
nome_server bestflare.com;
ssl on;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
protocolli ssl TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers su;
ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH EDH + aRS! ALTA! RC! ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Perdita di informazioni

Nell’installazione predefinita di Nginx avrai rivelato molte informazioni sensibili, che possono aiutare gli hacker a prepararsi per un attacco.

Se si lavora in un ambiente di conformità PCI, questa è considerata una vulnerabilità di perdita di informazioni e deve risolvere l’elemento.

Devi disabilitare server_tokens per disabilitare la perdita di informazioni. L’ho spiegato nel mio precedente articolo. Rimuovere la versione dal banner dell’intestazione del server in Nginx

Sicurezza delle applicazioni Web

La configurazione predefinita di Nginx non è perfetta e può presentare molte vulnerabilità, motivo per cui le induriamo per renderla sicura.

Disabilita i metodi HTTP indesiderati

Il più delle volte, devi solo OTTENERE, TESTA & POST richiesta HTTP nella tua applicazione web. Consentire TRACE o DELETE è rischioso in quanto può consentire l’attacco del monitoraggio su più siti e potenzialmente consentire a un hacker di rubare le informazioni sui cookie.

  • Modifica nginx.conf e aggiungi il seguente sotto blocco server

if ($ request_method! ~ ^ (GET | HEAD | POST) $)
{
ritorno 405;
}

Salvare il file e riavviare Nginx. Questo ora mostrerà 405 Non consentito se qualcuno sta cercando di usare TRACE, DELETE, PUT, OPTIONS.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Prova 128.199.100.162…
Collegato a bestflare.com.
Il carattere di escape è ‘^]’.
TRACE / HTTP / 1.1
Host: test
HTTP / 1.1 405 non consentito
Server: nginx
Data: sabato 11 luglio 2015 06:04:34 GMT
Tipo di contenuto: testo / html
Lunghezza contenuto: 166
Connessione: chiusa

Clickjacking Attack

Puoi iniettare X-FRAME-OPTIONS nell’intestazione HTTP per prevenire un attacco di clickjacking.

Ciò si ottiene aggiungendo di seguito nel file nginx.conf

add_header Opzioni X-Frame "SAMEORIGIN";

L’intestazione sopra indica a un browser di caricare SOLO le risorse dalla stessa origine.

Protezione X-XSS

Iniettare HTTP Header con protezione X-XSS per mitigare l’attacco di scripting tra siti.

  • Modificare il file nginx.conf per aggiungere quanto segue

add_header X-XSS-Protection "1; mode = block";

  • Salvare il file di configurazione e riavviare Nginx. Puoi usare il Test delle intestazioni strumento per verificare dopo l’implementazione.

Potresti anche essere interessato a implementare le intestazioni sicure consigliate da OWASP che sono spiegate qui.

Implementare Mod Security WAF

Aggiungi un ulteriore livello di sicurezza implementando il Web Application Firewall ModSecurity con OWASP Core Rule Set.

In alternativa, se si può prendere in considerazione l’utilizzo della sicurezza basata su cloud come Sucuri di fronte al server Nginx.

Mantieni Nginx aggiornato

Ultimo ma non meno importante, è necessario mantenere aggiornato Nginx in quanto vi sono molti miglioramenti delle prestazioni, correzioni di sicurezza e nuove funzionalità aggiunte.

Spero che questo ti aiuti a proteggere Nginx.

Successivamente, potresti essere interessato a imparare a costruire Nginx per alte prestazioni da zero.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map