Kako implementirati sigurnosna HTTP zaglavlja za sprečavanje ranjivosti?

Znate li da se većina sigurnosnih ranjivosti može ispraviti primjenom potrebnih zaglavlja u zaglavlju odgovora?


Sigurnost je bitna koliko i sadržaj i SEO vaše web stranice, a tisuće web stranica mogu se hakirati zbog pogrešne konfiguracije ili nedostatka zaštite. Ako ste vlasnik web stranice ili inženjer zaštite i želite zaštititi svoju web stranicu Clickjacking, ubrizgavanje koda, MIME tipovi, XSS, itd. napadi, tada će vam ovaj vodič pomoći.

U ovom ću članku govoriti o raznim HTTP zaglavljima za implementaciju na više web poslužitelja, mrežni rub & CDN pružatelji usluga za bolju zaštitu web stranica.

Bilješke:

  • Prije izmjene savjetujemo vam da uzmete sigurnosnu kopiju konfiguracijske datoteke
  • Neka zaglavlja možda nisu podržana u svim preglednicima provjerite kompatibilnost prije provedbe.
  • Za implementaciju tih zaglavlja u Apacheu moraju biti omogućeni mod_headers. Osigurajte da sljedeći redak nije komentiran u datoteci httpd.conf.

LoadModule headers_module module / mod_headers.so

  • Nakon implementacije možete upotrijebiti internetski alat sigurnih zaglavlja za provjeru rezultata.

Koristite WordPress ?: možda želite pokušati koristiti Dodatak HTTP Headers, koja se brine za te zaglavlja i puno više.

X-XSS-zaštitu

Zaglavlje X-XSS-zaštite može spriječiti neku razinu XSS (cross-site-scripting) napada, a to je kompatibilno s IE 8+, Chromeom, Operom, Safarijem & Android.

Google, Facebook, Github koriste ovo zaglavlje, a većina savjetodavnih stručnjaka će zatražiti da to implementirate.

Postoje četiri moguća načina konfiguriranja ovog zaglavlja.

Vrijednost parametraZnačenje
0XSS filtar onemogućen
1XSS filtar je omogućio i sanitirao stranicu ako se otkrije napad
1; mode = blokOmogućen je XSS filter i spriječio prikazivanje stranice ako se otkrije napad
1; izvještaj = http: //example.com/report_URIOmogućen je XSS filter i prijavio kršenje ako je otkriven napad

Let’s implementirati 1; mode = blok na sljedećim web poslužiteljima.

Apache HTTP poslužitelj

U httpd.conf web poslužitelja Apache dodajte sljedeći unos

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

Ponovno pokrenite apache da biste potvrdili

Nginx

U blok http dodajte sljedeće u nginx.conf

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

Ponovno pokretanje Nginx-a potrebno je da se to odrazi na zaglavlje odgovora na vašoj web stranici.

MaxCDN

Ako koristite MaxCDN, tada je dodavanje zaglavlja jednostavno i u pokretu.

Idite na Pravila o ivicama >> kliknite “Novo pravilo” i na padajućem izborniku odaberite “Dodaj X-XSS-zaštitu zaglavlja”.

edgerules

Microsoft IIS

  • Otvorite IIS Manager
  • Odaberite web mjesto za koje ste trebali omogućiti zaglavlje
  • Idite na “Zaglavlja HTTP odgovora.”
  • Kliknite “Dodaj” pod akcijama
  • Unesite ime, vrijednost i kliknite U redu

IIS-x-XSS-zaštitu

  • Ponovo pokrenite IIS da biste vidjeli rezultate

HTTP stroga sigurnost u prometu

Zaglavlje HSTS (stroga sigurnost HTTP-a) kako bi se osigurala da se sva komunikacija iz preglednika šalje putem HTTPS-a (HTTP Secure). Ovo sprečava HTTPS klikove putem upita i preusmjerava HTTP zahtjeve na HTTPS.

Prije implementacije ovog zaglavlja, morate osigurati da je sva stranica vaše web stranice dostupna putem HTTPS-a, a ostale će biti blokirane.

Zaglavlje HSTS podržano je na svim glavnim najnovijim verzijama preglednika kao što su IE, Firefox, Opera, Safari i Chrome. Postoje tri parametra konfiguracije.

Vrijednost parametraZnačenje
max-ageTrajanje (u sekundama) za upućivanje preglednika da su zahtjevi dostupni samo preko HTTPS.
includeSubDomainsKonfiguracija vrijedi i za poddomene.
preloadUpotrijebite ako želite da vaša domena bude uključena u HSTS popis za predbilježbu

Uzmimo, primjer, konfiguraciju HSTS-a u trajanju od jedne godine, uključujući predbilježbu za domenu i poddenu.

Apache HTTP poslužitelj

HSTS možete implementirati u Apache dodavanjem sljedećeg unosa u datoteku httpd.conf

Set zaglavlja: Stroga-Transport-Sigurnost "max dobi = 31536000; includeSubDomains; preload"

Ponovno pokrenite apache da biste vidjeli rezultate

Nginx

Da biste konfigurirali HSTS u Nginxu, dodajte sljedeći unos u nginx.conf pod server (SSL) direktivom

add_header Strict-Transport-Security ‘max-age = 31536000; includeSubDomains; preload ‘;

Kao i obično, morat ćete ponovo pokrenuti Nginx da biste ga potvrdili

CloudFlare

Ako koristite Cloudflare, tada možete omogućiti HSTS u samo nekoliko klikova.

  • Prijavite se na CloudFlare i odaberite mjesto
  • Idite na karticu “Kripto” i kliknite “Omogući HSTS.”

CloudFlare-hsts-config

Odaberite postavke koje su vam potrebne, a promjene će se primijeniti u pokretu.

Microsoft IIS

Pokrenite IIS Manager i dodajte zaglavlje tako što ćete otvoriti “HTTP zaglavlja odgovora” za dotično web mjesto.

IIS-hsts

Ponovo pokrenite web mjesto

X-Frame-Options

Za prevenciju koristite zaglavlje X-Frame-Options Clickjacking ranjivost na vašoj web stranici. Implementacijom ovog zaglavlja upućujete preglednik da ne ugrađuje vašu web stranicu u frame / iframe. To ima određena ograničenja u podršci preglednika, pa morate provjeriti prije nego što ga implementirate.

Možete konfigurirati sljedeća tri parametra.

Vrijednost parametraZnačenje
SAMEORIGINOkvir / iframe sadržaja dopušten je samo s istog podrijetla web mjesta.
DENYSpriječite bilo koju domenu da ugrađuje vaš sadržaj koristeći frame / iframe.
DOPUSTITE-ODDopusti kadriranje sadržaja samo na određenom URI-u.

Pogledajmo kako implementirati „DENY“Tako da nijedna domena ne ugrađuje web stranicu.

apaš

Dodajte sljedeći redak u httpd.conf i ponovno pokrenite web poslužitelj da biste potvrdili rezultate.

Zaglavlje uvijek dodaje opcije X-Frame DENY

Nginx

U nginx.conf dodajte sljedeće pod direktivu / blok poslužitelja.

Dodati X-Frame-opcije “DENY”;

Ponovno pokrenite za provjeru rezultata

F5 LTM

Napravite iRule sa sljedećim i povezan s odgovarajućim virtualnim poslužiteljem.

kada HTTP_RESPONSE {

HTTP :: umetak zaglavlja "X okvira OPCIJE" "DENY"

}

Ne morate ništa ponovno pokretati, promjene su vidljive u zraku.

WordPress

Ovo zaglavlje možete implementirati i putem WordPress-a. U wp-config.php datoteku dodajte sljedeće

zaglavlje (‘X-Frame-Options: DENY);

Ako vam nije ugodno za uređivanje datoteke, tada možete upotrijebiti dodatak kako je ovdje objašnjeno ili spomenuto.

Microsoft IIS

Dodajte zaglavlje tako da otvorite “Zaglavlja HTTP odgovora” za odgovarajuću web lokaciju.

IIS-X-Frame-Options

Ponovno pokrenite web mjesto da biste vidjeli rezultate.

X-Content-Type-Opcije

Spriječiti MIME vrste sigurnosnog rizika dodavanjem ovog zaglavlja u HTTP odgovor web stranice. Ovaj zaglavlje upućuje preglednik da razmatra vrste datoteka kako su definirane i onemogućava njuškanje sadržaja. Postoji samo jedan parametar koji morate dodati “nosniff”.

Pogledajmo kako reklamirati ovo zaglavlje.

apaš

To možete učiniti dodavanjem donjeg retka u datoteku httpd.conf

Nos za postavljanje zaglavlja X-Content-Type-Options

Ne zaboravite ponovo pokrenuti web-poslužitelj Apache da bi se konfiguracija aktivirala.

Nginx

Dodajte sljedeći redak u datoteku nginx.conf pod blok poslužitelja.

add_header nosnif X-Content-Type-Options;

Kao i obično, morate ponovo pokrenuti Nginx za provjeru rezultata.

Microsoft IIS

Otvorite IIS i idite na zaglavlja HTTP odgovora

Kliknite Add i unesite naziv i vrijednost

IIS-MIME vrste

Kliknite U redu i ponovno pokrenite IIS da biste potvrdili rezultate.

Priključivanje javnog ključa HTTP-a

Smanjite čovjeka u sredini (MITM) rizik napada napinjanjem potvrde. To je moguće s HPKP (HTTP prikvačivanje javnog ključa) zaglavlje.

Možete prikvačiti javni ključ ili trenutni certifikat korijenskog certifikata. U vrijeme pisanja teksta, HPKP trenutno radi u Firefoxu i Chromeu i podržava SHA-256 hash algoritam.

Postoje četiri moguće konfiguracije parametara.

Vrijednost parametraZnačenje
Izvješće-uri =”URL”Izvijestite na određeni URL ako provjera PIN-a ne uspije. Ovo nije obavezno.
pin-SHA256 =”sha256key”Ovdje odredite igle
max = dobiPreglednik pamti vrijeme u kojem je web mjestu dostupno samo pomoću jedne od prikvačenih tipki.
IncludeSubDomainsTo se primjenjuje i na poddomeni.

Pogledajmo primjer zaglavlja HPKP-a s facebook.com

public-key-igle-izvješće samo: max-age = 500; pin-SHA256 ="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18 ="; pin-SHA256 ="r / mIkG3eEpVdm + z / ko / = cwxzOMo1bk4TyHIlByibiA5E"; pin-SHA256 ="q4PO2G2cbkZhZ82 + JgmRUyGMoAeozA + = BSXVXQWB8XWQ"; Izvješće-uri = http: //reports.fb.com/hpkp/

Ako je to nešto što trebate implementirati na svoju web stranicu, tada se uputite na vodič za implementaciju napisao Scott Helme.

Politika sigurnosti sadržaja

Spriječite XSS, klikanje, ubrizgavanje koda napada implementacijom zaglavlja politike sigurnosti sadržaja (CSP) u HTTP odgovor svoje web stranice. CSP uputiti preglednik da učita dopušteni sadržaj za učitavanje na web mjestu.

svi preglednici ne podržavaju CSP, pa morate provjeriti prije nego što ga implementirate. Postoje tri načina na koja možete postići zaglavlja CSP-a.

  1. Politika sigurnosti sadržaja – razina 2 / 1.0
  2. X-Content-Security-Policy – zastarelo
  3. X-Webkit-CSP – zastarelo

Ako i dalje upotrebljavate zastareli dokument, razmotrite nadogradnju na najnoviju.

Za implementaciju CSP-a moguće je više parametara, a možete se na njih obratiti OWASP za ideju. No, prođimo kroz dva najčešće korištena parametra.

Vrijednost parametraZnačenje
Zadana-srcUčitajte sve iz definiranog izvora
skripta-srcUčitajte samo skripte iz definiranog izvora

Sljedeći primjer učitavanja svega istog podrijetla u razne web poslužitelje.

apaš

Nabavite sljedeće u datoteci httpd.conf i ponovno pokrenite web poslužitelj kako biste postali učinkoviti.

Postavljena zaglavlje-politika-sigurnosna politika "default-src ‘samo’;"

Nginx

U blok poslužitelja dodajte sljedeće u datoteci nginx.conf

add_header Content-Security-Policy "default-src ‘samo’;";

Microsoft IIS

Idite na zaglavlja HTTP odgovora za svoju web lokaciju u IIS Manageru i dodajte sljedeće

IIS-CSP

X-Dopuštena više domena-politika

Koristite Adobe proizvode kao što su PDF, Flash itd.? Ovo zaglavlje možete implementirati da biste naveli preglednik kako postupati sa zahtjevima preko više domena. Primjenom ovog zaglavlja ograničavate učitavanje sredstava web lokacije s drugih domena kako biste izbjegli zlouporabu resursa.

Na raspolaganju je nekoliko opcija.

VrijednostOpis
nijedannije dopuštena politika
majstor samodopuštaju samo glavnu politiku
svisve je dopušteno
po-sadržaja samoDopusti samo određenu vrstu sadržaja. Primjer – XML
po-FTP-samoprimjenjivo samo za FTP poslužitelj

apaš

Ako ne želite dopustiti nijedno pravilo.

Zaglavlje je postavljeno X-Dopušteno-Cross-Domain-Pravila "nijedan"

Trebali biste vidjeti zaglavlje poput sljedećeg.

Nginx

A, recimo da trebate implementirati samo master-master, a zatim dodajte sljedeće u nginx.conf u blok poslužitelja.

add_header X-Dozvoljeno-Cross-Domain-Pravila samo za master;

I rezultat.

Preporuka-politika

Želite kontrolirati politiku preporuke vaše web lokacije? Postoje određene prednosti privatnosti i sigurnosti. No ne podržavaju sve opcije svi preglednici, stoga pregledajte svoje zahtjeve prije implementacije.

Referrer-Policy podržava sljedeću sintaksu.

VrijednostOpis
bez upućivanjaPodaci preporuke neće biti poslani sa zahtjevom.
bez upućivanja-kad-nizbrdicaZadana postavka gdje se referent šalje na isti protokol kao HTTP na HTTP, HTTPS na HTTPS.
nesiguran-urlpuni URL bit će poslan sa zahtjevom.
istog podrijetlaPreporuka će biti poslana samo za isto mjesto.
strogi-podrijetlaposlati samo ako je protokol HTTPS
strogi-podrijetlu kada-cross-podrijetlacijeli URL će biti poslan preko strogog protokola poput HTTPS-a
podrijetlopošaljite izvorni URL u svim zahtjevima
podrijetlu kada-cross-podrijetlaposlati POTPUNI URL na istom podrijetlu. Međutim, pošaljite samo izvorni URL u drugim slučajevima.

apaš

Ako želite postaviti ne-preporuku, možete dodati sljedeće.

Pravilo preporuke postavljeno zaglavlje "bez upućivanja"

A nakon ponovnog pokretanja trebali biste imati zaglavlja odgovora.

Nginx

Recimo da trebate implementirati isto podrijetlo, pa morate dodati sljedeće.

add_header pravila preporuke istog podrijetla;

Nakon konfiguriranja trebali biste imati rezultate u nastavku.

Očekivati-CT

Novo zaglavlje koje je još u statusu eksperimenta upućuje preglednik na potvrdu veze s web poslužiteljima radi transparentnosti certifikata (CT). Ovaj Googleov projekt ima za cilj popraviti neke nedostatke u sustavu SSL / TLS certifikata.

Sljedeće tri varijable dostupne su za Expect-CT zaglavlje.

VrijednostOpis
max-ageU sekundi, koliko dugo bi preglednik trebao predmemorirati pravila.
primijenitiNeobvezna direktiva za provođenje politike.
Prijavi-uriPreglednik za slanje izvješća na navedeni URL kada nije primljena važeća transparentnost certifikata.

apaš

Pretpostavimo da želite primijeniti ovo pravilo, prijaviti i predmemorirati 12 sati, a zatim morate dodati sljedeće.

Zaglavlje skupa Expect-CT ‘primijeniti, max-age = 43200, izvještaj-uri ="https://somedomain.com/report"’

I, evo rezultata.

Nginx

Što ako želite izvijestiti i spremiti u predmemoriju 1 sat?

add_header Očekujte-CT ‘max-age = 60, report-uri ="https://mydomain.com/report"„;

Izlaz bi bio.

Značajka-politika

Upravljajte značajkama preglednika kao što su geolokacija, puni ekran, zvučnik, USB, automatska reprodukcija, zvučnik, vibracija, mikrofon, plaćanje, vr itd. Kako biste omogućili ili onemogućili unutar web aplikacije.

apaš

Recimo da trebate onemogućiti značajku punog zaslona i da biste to učinili možete dodati sljedeće u httpd.conf ili apache2.conf.

Zaglavlje uvijek postavlja značajku-politiku "puni ekran ‘nijedan’ "

Što je sa dodavanjem više značajki u jednom retku?

I to je moguće!

Zaglavlje uvijek postavlja značajku-politiku "puni ekran ‘nijedan’; mikrofon ‘nema’"

Ponovno pokrenite Apache HTTP da biste vidjeli rezultat.

Gornji kôd uputit će preglednik da onemogući puni ekran i mikrofon.

Nginx

Uzmimo još jedan primjer – onemogućite značajku vibriranja.

add_header Pravila o značajkama "vibrirati ‘nijedan’;";

Ili onemogućite geolokaciju, kameru i zvučnik.

add_header Pravila o značajkama "geolokacija ‘nijedan’; kamera ‘nijedna’; govornik ‘nijedan’;";

Evo rezultata nakon ponovnog pokretanja Nginx-a.

Sva konfiguracija Nginx ide pod blok http u nginx.conf ili bilo koju prilagođenu datoteku koju koristite.

Zaključak

Osiguravanje web stranice je izazovno, a nadam se da primjenom gore navedenih zaglavlja dodate sloj sigurnosti. Ako imate poslovnu stranicu, razmislite i o upotrebi oblaka kao WAF Sucuri kako biste zaštitili svoje mrežno poslovanje. Dobra stvar SUCURI-ja je to što nudi sigurnost i performanse, oboje.

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