Nginx Ghid de securitate și întărire a serverului web

Cele mai bune practici de securitate Nginx.


Nginx este serverul web cu cea mai rapidă creștere din industrie și, în prezent, deține poziția numărul doi în cota de piață.

A fost lansat inițial în 2004 și, de atunci, a câștigat o reputație excelentă și a fost folosit în cele mai aglomerate milioane de site-uri.

Există un motiv pentru asta – Nginx este aprind rapid.

În acest articol, voi vorbi despre câteva dintre ghidurile esențiale pentru securizarea Nginx pentru un mediu de producție. Deci, să începem.

SSL / TLS

Implementați certificatul SSL

Primul pas în securitatea web este implementarea SSL, astfel încât să puteți accesa aplicații web cu https și să adăugați un strat de criptare în comunicare.

  • Utilizați OpenSSL pentru a genera CSR cu 2048 biți și sha-2

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

  • Comanda de mai sus va genera CSR și fișiere cheie în funcție curentă direct. Nu uitați să schimbați numele fișierului .csr și .key.

Obțineți CSR semnat de o autoritate de certificare și odată ce aveți certificatul semnat, le puteți implementa în Nginx ca mai jos.

  • Autentificați-vă pe serverul Nginx
  • Accesați folderul Conf unde aveți un fișier ssl.conf.

Notă: În instalarea implicită pe Linux, veți avea acest fișier sub /etc/nginx/conf.d.

  • Editați fișierul și adăugați următoarele, care vor permite Nginx să asculte pe 443 port

Server {
asculta 443 ssl;
nume_ server bestflare.com;
ssl pe;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Notă: nu uitați să modificați calea certificatului și a fișierului cheie.

  • Salvați configurația și reporniți Nginx. Un certificat SSL este implementat cu succes.

bestflare-ssl-CertificatAcreditat

Optimizare SSL / TLS

Dacă SSL nu înseamnă că este pe deplin sigur și că, în calitate de expert în securitate web, trebuie să aplicați o configurație pentru a securiza serverul web.

Pentru început, aș recomanda rularea unui Scanare SSL împotriva site-ului web pentru a găsi scorul și vulnerabilitatea esențială.

ssl-laboratoare-evaluare-c

Deci, actualul rating SSL Labs este „C“ iar o țintă este să fie „A.”

Dezactivează protocoalele slabe SSL / TLS

SSL 3, TLS 1.0 și TLS 1.1 sunt vulnerabile și vom permite doar un protocol puternic TLS 1.2.

  • Editați fișierul ssl.conf și adăugați mai jos în blocul de server

ssl_protocoli TLSv1.2;

  • Salvați fișierul ssl.conf și reporniți Nginx

Dezactivați apartamentele slabe cu cifrare

Suitele de cifrare slabe pot duce la vulnerabilitate ca un logjam și tocmai de aceea trebuie să permitem doar cifrarea puternică.

  • Adăugați următoarele în blocul de server din fișierul 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 + aRSA LOW! ! MD5! EXP! PSK! SRP! DSS";

  • Salvați fișierul și reporniți Nginx

Instalați certificatul de lanț

Nefiind un certificat de lanț afectează, de asemenea, ratingul general, iar acest lucru poate afișa o eroare la navigarea într-un browser modern precum Chrome. Trebuie să obțineți un certificat de lanț de la autoritate. Mai ales veți găsi pe site-ul lor web sau doar pe Google.

  • Adăugați conținutul certificatului de lanț în certificatul site-ului ca mai jos. În exemplul meu, ar fi /opt/cert/bestflare.pem

CertificatAcreditat-chain

  • Salvați fișierul și reporniți Nginx

Diffie-Hellman securizat pentru TLS

Diffie-Hellman este mai puțin sigur decât se credea. Una dintre cele mai bune practici adăugate în ultima perioadă într-o listă este asigurarea lui Diffie-hellman. Generarea unică DH GROUP și adăugarea ssl_dhparam în fișierul ssl.conf face acest lucru.

  • Generați grupul DH unic folosind OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Va dura câteva minute și va genera un fișier dhparams.pem într-un director de lucru curent
  • Copiați dhparams.pem în folderul cert
  • Modificați ssl.conf și adăugați următoarele în blocul de server

ssl_dhparam /opt/cert/dhparams.pem;

  • Salvați fișierul și reporniți Nginx

Acest lucru ar trebui să fie suficient pentru optimizarea SSL / TLS și să testăm din nou adresa URL pentru a vedea evaluarea.

ssllabs-o-evaluare

O, vai! Acum, puteți vedea că este “A” rating de SSLLabs. Foarte bine!

Aici este complet ssl.conf

# Configurația serverului HTTPS
Server {
asculta 443 ssl;
nume_ server bestflare.com;
ssl pe;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
ssl_protocoli TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
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 + aRSA LOW! ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Scurgeri de informații

În instalarea implicită a Nginx, veți avea la dispoziție informații mult mai sensibile, care pot ajuta hackerii să se pregătească pentru un atac.

Dacă lucrați la un mediu de conformitate PCI, acesta este considerat drept vulnerabilitatea scurgerii de informații și trebuie să remedieze elementul.

Trebuie să folosiți serverul_tokens off pentru a dezactiva scurgerea informațiilor. Am explicat acest lucru în articolul meu anterior. Ștergeți versiunea din antetul serverului Banner din Nginx

Securitatea aplicațiilor web

Configurația implicită Nginx nu este perfectă și poate avea multe vulnerabilități, motiv pentru care le întărim pentru a le asigura.

Dezactivați metodele HTTP nedorite

De cele mai multe ori, ai nevoie doar de GET, HEAD & Solicitare POST HTTP în aplicația dvs. web. Permiterea TRACE sau DELETE este riscantă, deoarece poate permite atacul de urmărire între site-uri și poate permite unui hacker să fure informațiile cookie.

  • Modificați nginx.conf și adăugați următoarele în blocul de server

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

Salvați fișierul și reporniți Nginx. Acest lucru va arăta acum 405 Nu este permis dacă cineva încearcă să folosească TRACE, DELETE, PUT, OPTIONS.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Încercarea 128.199.100.162…
Conectat la bestflare.com.
Personajul de evacuare este ‘^]’.
TRACE / HTTP / 1.1
Realizator: testare
HTTP / 1.1 405 Nu este permis
Server: nginx
Data: Sat, 11 iulie 2015 06:04:34 GMT
Content-Type: text / html
Lungime de conținut: 166
Conexiune: închidere

Atacul cu clicuri

Puteți injecta X-FRAME-OPTIONS în antetul HTTP pentru a preveni atacul de clic.

Acest lucru este obținut prin adăugarea de mai jos în fișierul nginx.conf

add_header X-Frame-Options "SAMEORIGIN";

Mai sus antetul va instrui un browser să încarce DOAR resursele de la aceeași origine.

Protecție X-XSS

Injectați antetul HTTP cu protecție X-XSS pentru a atenua atacul de scripturi între site-uri.

  • Modificați fișierul nginx.conf pentru a adăuga următoarele

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

  • Salvați fișierul de configurare și reporniți Nginx. Puteți utiliza funcția Testul anteturilor instrument de verificare după implementare.

Ați putea fi, de asemenea, interesat de implementarea anteturilor sigure recomandate de OWASP, care sunt explicate aici.

Implementați WAF Mod Security

Adăugați un nivel suplimentar de securitate implementând ModSecurity Firewall Aplicație Web cu OWASP Core Rule Set.

Alternativ, dacă puteți lua în considerare utilizarea securității bazate pe cloud Sucuri în fața serverului Nginx.

Mențineți Nginx la zi

Nu în ultimul rând, trebuie să vă mențineți Nginx la zi, deoarece există multe îmbunătățiri ale performanței, se adaugă corecții de securitate și funcții noi..

Sper că acest lucru vă va ajuta să vă păstrați siguranța Nginx.

În continuare, este posibil să fiți interesat să înveți construiți Nginx pentru performanțe ridicate de la 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