Vodič za varnost in utrjevanje spletnega strežnika Nginx

Najboljše prakse glede varnosti Nginx.


Nginx je najhitreje rastoči spletni strežnik v panogi, trenutno pa ima tržni delež na drugem mestu.

Prvotno je bil izdan leta 2004, od takrat pa si je prislužil odličen ugled in bil uporabljen na največjih milijonih najbolj obremenjenih strani.

Za to obstaja razlog – Nginx je hitro utripa.

V tem članku bom govoril o nekaterih bistvenih vodilih za zagotovitev Nginx-a za proizvodno okolje. Torej, začnimo.

SSL / TLS

Izvedite SSL potrdilo

Prvi korak v spletni varnosti je uvesti SSL, tako da lahko dostopate do spletnih aplikacij s https in dodate sloj šifriranja v komunikaciji.

  • Uporabite OpenSSL za ustvarjanje CSR z 2048 bit in sha-2

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

  • Zgornji ukaz bo ustvaril CSR in datoteke s ključi ob trenutnem delu neposredno. Ne pozabite spremeniti imena datoteke .csr in .key.

Pridobite CSR s strani organa za potrdila in ko imate podpisano potrdilo, jih lahko implementirate v Nginx, kot je spodaj.

  • Prijava na strežnik Nginx
  • Pojdite v mapo conf, v kateri imate datoteko ssl.conf.

Opomba: Pri privzeti namestitvi v Linuxu boste imeli to datoteko pod /etc/nginx/conf.d.

  • Uredite datoteko in dodajte naslednje, kar bo Nginxu omogočilo poslušanje na 443 vratih

strežnik {
poslušajte 443 ssl;
ime strežnika bestflare.com;
ssl naprej;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Opomba: ne pozabite spremeniti poti spričevala in ključne datoteke.

  • Shranite konfiguracijo in znova zaženite Nginx. Cert SSL je uspešno izveden.

bestflare-ssl-cert

SSL / TLS Optimizacija

Če SSL ne pomeni, da je popolnoma varen, zato morate kot strokovnjak za spletno varnost uporabiti konfiguracijo, da zaščitite spletni strežnik.

Za začetek bi priporočal zagon Skeniranje SSL proti spletnemu mestu, da bi našli oceno in bistveno ranljivost.

ssl-labs-rating-c

Torej trenutna ocena SSL Labs „C“ cilj pa je narediti “A.”

Onemogoči šibke SSL / TLS protokole

SSL 3, TLS 1.0 in TLS 1.1 je ranljiv in dovolili bomo le močan protokol TLS 1.2.

  • Uredite datoteko ssl.conf in jo dodajte v blok strežnika

ssl_protocols TLSv1.2;

  • Shranite datoteko ssl.conf in znova zaženite Nginx

Onemogoči šibke šifrantne pakete

Šibki šifrantski programi lahko privedejo do ranljivosti, kot je logjam, zato moramo dovoliti samo močne šifre.

  • V strežniški blok v datoteki ssl.conf dodajte naslednje

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

  • Shranite datoteko in znova zaženite Nginx

Namestite verižno potrdilo

Če nimate verižnega certifikata, vpliva tudi na splošno oceno, zato se lahko pri brskanju v sodobnem brskalniku, kot je Chrome, prikaže napaka. Od organa morate pridobiti verižno potrdilo. Večinoma jih boste našli na njihovi spletni strani ali samo Google.

  • V spodnji certifikat spletnega mesta dodajte vsebino verižne verige. V mojem primeru bi bil /opt/cert/bestflare.pem

cert veriga

  • Shranite datoteko in znova zaženite Nginx

Varen Diffie-Hellman za TLS

Diffie-Hellman je manj varen, kot so verjeli. Ena najboljših praks, ki so jo na seznamu dodali v zadnjem času, je zavarovanje Diffie-vraga. Ustvari edinstveno DH GROUP in doda ssl_dhparam v datoteko ssl.conf.

  • Ustvarite edinstveno skupino DH z uporabo OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Trajalo bo nekaj minut in ustvarilo datoteko dhparams.pem v trenutnem delovnem imeniku
  • Kopirajte dhparams.pem v mapo cert
  • Spremenite ssl.conf in dodajte naslednje v strežniškem bloku

ssl_dhparam /opt/cert/dhparams.pem;

  • Shranite datoteko in znova zaženite Nginx

To bi moralo zadostovati za optimizacijo SSL / TLS in ponovno preizkusimo URL, da vidimo oceno.

ssllabs-a-ocena

Woo ho! Zdaj lahko vidite, da je “A” ocena SSLLabs. Dobro opravljeno!

Tu je popoln ssl.conf

Konfiguracija strežnika HTTPS
strežnik {
poslušajte 443 ssl;
ime strežnika bestflare.com;
ssl naprej;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers vklopljen;
ssl_ciphers "EGDH + ECDSA + AESGCM EECDH + aRSA + AESGCM ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Puščanje informacij

V privzeti namestitvi Nginx boste razkrili veliko občutljivih informacij, ki lahko hekerjem pomagajo, da se pripravijo na napad.

Če delate v okolju skladnosti PCI, se to šteje kot ranljivost za uhajanje informacij in mora popraviti element.

Če želite onemogočiti uhajanje informacij, morate izklopiti server_tokens. To sem razložil v svojem prejšnjem članku. Odstranite različico iz pasice glave strežnika v Nginxu

Varnost spletnih aplikacij

Privzeta konfiguracija Nginx ni popolna in ima lahko veliko ranljivosti, zato jih utrjujemo, da smo varni.

Onemogočite neželene metode HTTP

Večino časa potrebujete samo GET, HEAD & POST HTTP zahteva v vaši spletni aplikaciji. Dovoljenje TRACE ali DELETE je tvegano, saj lahko omogoči napad med sledenjem spletnemu mestu in potencialnemu hekerju lahko ukrade podatke o piškotkih.

  • Spremenite nginx.conf in dodajte naslednje pod blok strežnika

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

Shranite datoteko in znova zaženite Nginx. To bo pokazalo 405 Ni dovoljeno, če nekdo poskuša uporabiti TRACE, DELETE, PUT, OPTIONS.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Poskus 128.199.100.162…
Povezana s spletnim mestom bestflare.com.
Znak za izhod v sili je ‘^]’.
TRACE / HTTP / 1.1
Gostitelj: testiranje
HTTP / 1.1 405 Ni dovoljeno
Strežnik: nginx
Datum: Sat, 11. julij 2015 06:04:34 GMT
Vrsta vsebine: besedilo / html
Dolžina vsebine: 166
Povezava: tesno

Napad s klikanjem

V glavo HTTP lahko vstavite X-FRAME-OPTIONS, da preprečite napad s klikom.

To dosežemo tako, da v datoteko nginx.conf dodamo spodaj

Možnosti X-Frame add_header "SAMEORIGIN";

Zgornja glava bo brskalniku navodila, naj vire naloži SAMO iz istega izvora.

X-XSS zaščita

Vbrizgajte HTTP Header z zaščito X-XSS za ublažitev krizmačnega napada.

  • Spremenite datoteko nginx.conf in dodajte naslednje

add_header X-XSS-zaščita "1; način = blok";

  • Shranite konfiguracijsko datoteko in znova zaženite Nginx. Lahko uporabite Preizkus glave orodje za preverjanje po izvedbi.

Morda vas bodo zanimale tudi implementacije priporočenih varnih glavic OWASP, ki so razložene tukaj.

Izvedite mod WAF Security

Dodajte dodatno plast varnosti z uvedbo ModSecurity požarnega zidu spletne aplikacije z OWASP Core Rule Set.

Lahko pa uporabite tudi varnost v oblaku, kot je SUCURI pred strežnikom Nginx.

Posodobite Nginx

Nenazadnje morate posodobiti svoj Nginx, saj je veliko izboljšav delovanja, varnostnih popravkov in novih funkcij..

Upam, da vam bo to pomagalo pri varovanju Nginx-a.

Nato vas bo morda zanimalo, kako se tega naučiti sestavite Nginx za visoke zmogljivosti od nič.

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