Vodič za sigurnost i otvrdnjavanje Nginx web poslužitelja

Najbolje prakse sigurnosti u Nginxu.


Nginx je najbrže rastući web poslužitelj u industriji i trenutno zauzima poziciju broj dva na tržišnom udjelu.

Prvobitno je objavljen 2004. godine, a od tada je stekao izvrsnu reputaciju i korišten je u najvećim milijunima najprometnijih mjesta.

Postoji razlog za to – Nginx je brzo plamti.

U ovom ću članku govoriti o nekim bitnim vodičima kako osigurati Nginx za proizvodno okruženje. Pa započnimo.

SSL / TLS

Provedite SSL certifikat

Prvi korak u web sigurnosti je implementacija SSL-a kako biste mogli pristupiti web aplikacijama putem https-a i dodati sloj šifriranja u komunikaciju.

  • Koristite OpenSSL za generiranje CSR-a s 2048 bita i sha-2

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

  • Gornja naredba generirat će CSR i datoteke s ključevima u trenutačnom radu izravno. Ne zaboravite promijeniti ime .csr i .key datoteke.

Pristupite CSR-u od strane certifikacijskog tijela i nakon što imate potpisan certifikat, možete ih implementirati u Nginx na sljedeći način.

  • Prijavite se na Nginx server
  • Idite u mapu conf u kojoj imate datoteku ssl.conf.

Napomena: U zadnjoj instalaciji na Linuxu, imate ovu datoteku pod /etc/nginx/conf.d.

  • Uredite datoteku i dodajte sljedeće što će Nginxu omogućiti preslušavanje na 443 priključku

poslužitelj {
slušati 443 ssl;
server_name bestflare.com;
ssl na;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Napomena: ne zaboravite promijeniti put certifikata i ključne datoteke.

  • Spremite konfiguraciju i ponovno pokrenite Nginx. SSL cert uspješno je implementiran.

bestflare SSL CERT

SSL / TLS optimizacija

Imati SSL ne znači da je potpuno siguran i to je ono što kao stručnjak za web sigurnost morate primijeniti konfiguraciju da biste osigurali webserver.

Za početak, preporučio bih pokretanje an SSL skeniranje protiv web lokacije kako bi se pronašao rezultat i bitna ranjivost.

SSL-laboratorija-ocjena-c

Dakle, trenutna ocjena SSL laboratorija je „C” a cilj je da bude “A.”

Onemogući slabe SSL / TLS protokole

SSL 3, TLS 1.0 i TLS 1.1 su ranjivi, a dopustit ćemo samo snažan TLS 1.2 protokol.

  • Uredite ssl.conf datoteku i dodajte je u blok poslužitelja

ssl_protocols TLSv1.2;

  • Spremite ssl.conf datoteku i ponovno pokrenite Nginx

Onemogući slabe šifarske palete

Slabi paketi šifri mogu dovesti do ranjivosti poput lože i zbog toga moramo omogućiti samo jake šifre.

  • Dodajte sljedeće u blok poslužitelja u datoteci ssl.conf

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM ! MD5! EXP! PSK! SRP! DSS";

  • Spremite datoteku i ponovno pokrenite Nginx

Ugradite lanac certifikata

Nema lančanog certifikata također utječe na ukupnu ocjenu i to može pokazati pogrešku prilikom pregledavanja u modernom pregledniku kao što je Chrome. Morate dobiti potvrdu lanca od vlasti. Uglavnom ćete ih pronaći na njihovoj web stranici ili samo Google.

  • Dodajte sadržaj certi lanca u potvrdu web stranice kao što je niže. U mom primjeru to bi bio /opt/cert/bestflare.pem

CERT lanac

  • Spremite datoteku i ponovno pokrenite Nginx

Sigurni Diffie-Hellman za TLS

Diffie-Hellman je manje siguran nego što se vjerovalo. Jedna od najboljih praksi u posljednje vrijeme dodana na popisu je osigurati Diffie-hellmana. Stvaranje jedinstvene DH GROUP i dodavanje ssl_dhparam u ssl.conf datoteku to čini.

  • Stvorite jedinstvenu DH grupu koristeći OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Trebat će nekoliko minuta i generirat će se datoteka dhparams.pem u trenutnoj radnoj mapi
  • Kopirajte dhparams.pem u mapu cert
  • Izmijenite ssl.conf i dodajte sljedeće u blok poslužitelja

ssl_dhparam /opt/cert/dhparams.pem;

  • Spremite datoteku i ponovno pokrenite Nginx

To bi trebalo biti dovoljno za SSL / TLS optimizaciju i neka ponovo testira URL da vidimo ocjenu.

ssllabs-a-klijenata

Woo ho! Sada možete vidjeti da je „A” ocjena SSLLabs. Dobro napravljeno!

Evo cjelovitog ssl.conf

Konfiguracija HTTPS poslužitelja
poslužitelj {
slušati 443 ssl;
server_name bestflare.com;
ssl na;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers uključen;
ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Curenje informacija

U zadanoj Nginx instalaciji imat ćete mnogo osjetljivih informacija koje mogu pomoći hakerima da se pripreme za napad.

Ako radite na PCI okruženju sukladnosti, to se smatra ranjivošću na curenju informacija i mora popraviti stavku.

Morate isključiti server_tokens da biste onemogućili istjecanje informacija. To sam objasnio u svom prethodnom članku. Uklonite verziju iz banera zaglavlja poslužitelja u Nginxu

Sigurnost web aplikacija

Zadana konfiguracija Nginx nije savršena i može imati brojne ranjivosti zbog čega ih očvrsnemo kako bismo je učinili sigurnom.

Onemogućite neželjene HTTP metode

Većinu vremena vam treba samo GET, GLAVA & POST HTTP zahtjev u vašoj web aplikaciji. Dopuštanje TRACE ili DELETE rizično je jer može dopustiti napad putem praćenja putem web lokacije i potencijalno omogućiti hakeru da ukrade podatke o kolačićima.

  • Izmijenite nginx.conf i dodajte sljedeće u blok poslužitelja

if ($ request_method! ~ ^ (GET | GLAVA | POST) $)
{
povratak 405;
}

Spremite datoteku i ponovno pokrenite Nginx. Ovo će se pokazati 405 Nije dopušteno ako netko pokušava koristiti TRACE, DELETE, PUT, OPTIONS.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Pokušaj 128.199.100.162…
Povezano s bestflare.com.
Znak bijega je ‘^]’.
TRACE / HTTP / 1.1
Domaćin: testiranje
HTTP / 1.1 405 Nije dopušteno
Poslužitelj: nginx
Datum: Sat, 11. srpnja 2015. 06:04:34 GMT
Vrsta sadržaja: tekst / html
Dužina sadržaja: 166
Veza: zatvori

Attack klikanja

Možete ubrizgati X-FRAME-OPTIONS u HTTP Header kako biste spriječili napad klikanja.

To se postiže dodavanjem dolje u datoteku nginx.conf

Dodati X-Frame-opcije "SAMEORIGIN";

Iznad gornjeg zaglavlja uputit će se preglednik da učita resurse SAMO iz istog podrijetla.

X-XSS zaštita

Ubrizgajte HTTP zaglavlje sa X-XSS zaštitom za ublažavanje napada skriptiranja na više stranica.

  • Izmijenite datoteku nginx.conf da biste dodali sljedeće

add_header X-XSS-zaštita "1; Način = blok";

  • Spremite konfiguracijsku datoteku i ponovno pokrenite Nginx. Možete koristiti Test zaglavlja alat za provjeru nakon implementacije.

Možda će vas zanimati i implementacija sigurnih zaglavlja OWASP, koja su ovdje objašnjena.

Uvedite mod sigurnosti WAF

Dodajte dodatni sloj sigurnosti primjenom ModSecurity vatrozida web aplikacije s OWASP Core Rule Setom.

Alternativno, ako razmislite o upotrebi sigurnosti utemeljene na oblaku poput Sucuri ispred Nginx servera.

Ažurirajte Nginx

Konačno, ali ne najmanje bitno, morate ažurirati svoj Nginx jer postoje mnoga poboljšanja performansi, sigurnosni popravci i nove značajke dodaju se..

Nadam se da će vam ovo pomoći da zaštitite svoj Nginx.

Dalje će vas možda zanimati kako naučiti izgradi Nginx za visoke performanse od nule.

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