Как да внедрите HTTP заглавките за сигурност за предотвратяване на уязвимости?

Знаете ли, че повечето уязвими места за защита могат да бъдат коригирани чрез прилагане на необходимите заглавия в заглавката на отговора?


Сигурността е толкова важна, колкото съдържанието и SEO на вашия уебсайт, а хиляди уебсайтове се хакват поради неправилна конфигурация или липса на защита. Ако сте собственик на уебсайт или инженер по сигурността и искате да защитите уебсайта си от Clickjacking, инжектиране на код, типове MIME, XSS, и т.н. атаки, тогава това ръководство ще ви помогне.

В тази статия ще говоря за различни HTTP хедъри, които да се реализират в множество уеб сървъри, мрежова граница & CDN доставчици за по-добра защита на уебсайтове.

Забележки:

  • Препоръчваме ви да вземете резервно копие на конфигурационния файл, преди да направите промени
  • Някои от заглавките може да не се поддържат във всички браузъри, така че проверете съвместимостта преди внедряването.
  • Mod_headers трябва да бъдат активирани в Apache, за да внедрят тези заглавия. Уверете се, че следният ред е некомментиран във файла httpd.conf.

LoadModule headers_module модули / mod_headers.so

  • След внедряването, можете да използвате онлайн инструмент за сигурни заглавки, за да проверите резултатите.

Използване на WordPress ?: може да искате да опитате да използвате Плъгин за HTTP хедъри, което се грижи за тези хедъри и много повече.

X-XSS-защита

Заглавката на X-XSS-Protection може да предотврати някакво ниво на XSS (кръстосани скриптове) атаки и това е съвместимо с IE 8+, Chrome, Opera, Safari & андроид.

Google, Facebook, Github използват това заглавие и повечето консултантски услуги за проникване ще ви помолят да го приложите.

Има четири възможни начина да конфигурирате това заглавие.

Стойност на параметъразначение
0XSS филтърът е деактивиран
1XSS филтърът е активирал и санирал страницата, ако бъде открита атака
1; режим = блокXSS филтърът е активиран и предотвратява изобразяването на страницата, ако бъде открита атака
1; доклад = HTTP: //example.com/report_URIXSS филтърът е активиран и съобщи за нарушението, ако бъде открита атака

Нека изпълним 1; режим = блок в следните уеб сървъри.

HTTP сървър на Apache

Добавете следния запис в httpd.conf на вашия уеб сървър Apache

Комплект заглавки X-XSS-защита "1; режим = блок"

Рестартирайте апаша, за да проверите

Nginx

Добавете следното в nginx.conf под http блок

add_header X-XSS-защита "1; режим = блок";

Нужно е да се рестартира Nginx, за да се отрази това в заглавката на отговора на вашата уеб страница.

MaxCDN

Ако използвате MaxCDN, след това добавянето на заглавие е лесно и в движение.

Отидете на Edge Rules >> щракнете върху „New Rule“ и изберете „Add X-XSS-Header Header“ от падащото меню.

edgerules

Microsoft IIS

  • Отворете IIS Manager
  • Изберете сайта, за който трябва да активирате заглавката
  • Отворете „HTTP Headers Response“.
  • Кликнете върху „Добавяне“ под действията
  • Въведете име, стойност и щракнете върху Ок

IIS-х-XSS защита

  • Рестартирайте IIS, за да видите резултатите

HTTP Строга сигурност на транспорта

HSTS (HTTP Strict Transport Security) заглавка, за да се гарантира, че цялата комуникация от браузър се изпраща през HTTPS (HTTP Secure). Това предотвратява HTTPS щракване през подсказки и пренасочва HTTP заявки към HTTPS.

Преди да внедрите това заглавие, трябва да се уверите, че цялата страница на вашия уебсайт е достъпна през HTTPS, иначе те ще бъдат блокирани.

Заглавката на HSTS се поддържа във всички основни последни версии на браузър като IE, Firefox, Opera, Safari и Chrome. Има три параметъра конфигурация.

Стойност на параметъразначение
макс възрастПродължителност (в секунди), за да каже на браузъра, че заявките са достъпни само през HTTPS.
includeSubDomainsКонфигурацията е валидна и за поддомейна.
натоварванетоИзползвайте, ако искате вашият домейн да бъде включен в HSTS списък за предварително зареждане

Затова нека вземем пример с конфигуриране на HSTS за една година, включително предварително зареждане за домейн и поддомен.

HTTP сървър на Apache

Можете да внедрите HSTS в Apache, като добавите следния запис във файла httpd.conf

Комплект заглавки Строга транспортна сигурност "макс възраст = 31536000; includeSubDomains; натоварването"

Рестартирайте апаш, за да видите резултатите

Nginx

За да конфигурирате HSTS в Nginx, добавете следващия запис в nginx.conf под директивата на сървъра (SSL)

add_header Strict-Transport-Security ‘max-age = 31536000; includeSubDomains; презареждат “;

Както обикновено, ще трябва да рестартирате Nginx, за да потвърдите

Cloudflare

Ако използвате Cloudflare, тогава можете да активирате HSTS само с няколко кликвания.

  • Влезте в Cloudflare и изберете сайта
  • Отидете в раздела „Криптовалута“ и кликнете върху „Активиране на HSTS“.

cloudflare-hsts-конфигурационния

Изберете настройките, които са ви необходими, и промените ще се прилагат в движение.

Microsoft IIS

Стартирайте IIS Manager и добавете заглавката, като отидете на „HTTP Headers Response“ за съответния сайт.

IIS-hsts

Рестартирайте сайта

X-Frame-Options

Използвайте заглавката на X-Frame-Options, за да предотвратите Clickjacking уязвимост на вашия уебсайт. Реализирайки това заглавие, вие инструктирате браузъра да не вгражда вашата уеб страница в frame / iframe. Това има някои ограничения в поддръжката на браузъра, така че трябва да проверите, преди да го внедрите.

Можете да конфигурирате следните три параметъра.

Стойност на параметъразначение
SAMEORIGINFrame / iframe на съдържанието е разрешено само от един и същ произход на сайта.
DENYПредотвратете всеки домейн да вгражда съдържанието ви с помощта на frame / iframe.
ДОПУСКА-ОТПозволете рамкиране на съдържанието само на определен URI.

Нека да разгледаме как да приложим „DENY“Така че нито един домейн не вгражда уеб страницата.

Apache

Добавете следния ред в httpd.conf и рестартирайте уеб сървъра, за да проверите резултатите.

Заглавката винаги добавя опции за X-Frame DENY

Nginx

Добавете следното в nginx.conf под директива / блок на сървъра.

Опции за X-Frame на add_header „DENY“;

Рестартирайте, за да проверите резултатите

F5 LTM

Създайте iRule със следния и свързан със съответния виртуален сървър.

когато HTTP_RESPONSE {

HTTP :: вмъкване на заглавка "X-рамка ВАРИАНТИ" "DENY"

}

Не е нужно да рестартирате нищо, промените се отразяват във въздуха.

WordPress

Можете да получите това заглавие и чрез WordPress. Добавете следното във файл wp-config.php

хедър (‘Опции за X-Frame: DENY);

Ако не ви е удобно да редактирате файла, тогава можете да използвате плъгин, както е обяснено тук или споменато по-горе.

Microsoft IIS

Добавете заглавката, като отидете на „HTTP Headers Response“ за съответния сайт.

IIS-х-Frame-опции

Рестартирайте сайта, за да видите резултатите.

X-Content-Type-Options

Предотвратявам MIME въведете риск за сигурността, като добавите това заглавие към HTTP отговора на вашата уеб страница. Имайки това заглавие, инструктира браузъра да разгледа типовете файлове като дефинирани и да забрани смъркането на съдържание. Има само един параметър, който трябва да добавите „nosniff“.

Нека да видим как да рекламираме това заглавие.

Apache

Можете да направите това, като добавите долния ред във файла httpd.conf

Носов номенклатура на X-Content-Type-Options

Не забравяйте да рестартирате уеб сървъра Apache, за да активирате конфигурацията.

Nginx

Добавете следния ред във файла nginx.conf под блок сървър.

add_header X-Content-Type-Options-Options;

Както обикновено, трябва да рестартирате Nginx, за да проверите резултатите.

Microsoft IIS

Отворете IIS и отидете на HTTP Headers Response

Кликнете върху Добавяне и въведете име и стойност

IIS-мим типове

Щракнете върху OK и рестартирайте IIS, за да проверите резултатите.

Закрепване на публичния ключ на HTTP

Сведете до минимум мъжа в средата (MITM) риск от атаки чрез фиксиране на сертификат. Това е възможно с HPKP (HTTP закрепване на публичен ключ).

Можете да прикрепите публичния ключ на коренния сертификат или незабавния сертификат. По време на писането, HPKP понастоящем работи в Firefox и Chrome и поддържа SHA-256 хеш алгоритъм.

Има четири възможни конфигурации на параметри.

Стойност на параметъразначение
доклад-URI = “URL”Докладвайте на посочения URL адрес, ако проверката на щифта не успее. Това не е задължително.
ПИН-SHA256 = “sha256key”Посочете щифтовете тук
макс възраст =Браузър, за да запомни времето за секунди, до който сайтът е достъпен само с помощта на един от прикрепените клавиши.
IncludeSubDomainsТова е приложимо и за поддомейн.

Да видим пример за заглавие на HPKP от facebook.com

публичен ключ игли-доклад само за: макс възраст = 500; ПИН-SHA256 ="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18 ="; ПИН-SHA256 ="R / mIkG3eEpVdm + U / ко / cwxzOMo1bk4TyHIlByibiA5E ="; ПИН-SHA256 ="q4PO2G2cbkZhZ82 + JgmRUyGMoAeozA + = BSXVXQWB8XWQ"; доклад-URI = HTTP: //reports.fb.com/hpkp/

Ако това е нещо, което трябва да внедрите на вашия уебсайт, тогава се насочете към ръководство за изпълнение, написано от Скот Хелм.

Политика за защита на съдържанието

Предотвратяване на XSS, щракване, инжектиране на код атаки чрез прилагане на заглавието на политиката за сигурност на съдържанието (CSP) в HTTP отговора на вашата уеб страница. CSP инструктирайте браузъра да зарежда разрешено съдържание за зареждане на уебсайта.

всичко браузърите не поддържат CSP, така че трябва да проверите, преди да го внедрите. Има три начина да постигнете заглавия на CSP.

  1. Политика за защита на съдържанието – ниво 2 / 1.0
  2. X-Content-Security-Policy – оттеглена
  3. X-Webkit-CSP – оттеглен

Ако все още използвате остарял, може да помислите за надграждане до най-новия.

Възможни са множество параметри за внедряване на CSP и можете да се обърнете към тях OWASP за идея. Все пак, да преминем през двата най-използвани параметри.

Стойност на параметъразначение
подразбиране-SRCЗаредете всичко от определен източник
скрипт-SRCЗареждайте само скриптове от определен източник

Следващият пример за зареждане на всичко от един и същ произход в различни уеб сървъри.

Apache

Вземете следното във файла httpd.conf и рестартирайте уеб сървъра, за да влезете в сила.

Задаване на заглавки Политика за защита на съдържанието "default ‘src’ аз ‘;"

Nginx

Добавете следното в сървърния блок във файл nginx.conf

add_header-Content-Security-Policy "default ‘src’ аз ‘;";

Microsoft IIS

Отидете на HTTP Headers Response за вашия сайт в IIS Manager и добавете следното

IIS-CSP

X-Разрешена-различни домейни-Политики

Използвате продукти на Adobe като PDF, Flash и т.н.? Можете да внедрите това заглавие, за да инструктирате браузъра как да обработва заявките през кръстосан домейн. Реализирайки това заглавие, ограничавате зареждането на активите на вашия сайт от други домейни, за да избегнете злоупотреба с ресурси.

Има няколко възможности.

стойностописание
нито единне се допуска политика
майстор-единственопозволяват само основната политика
всичковсичко е позволено
от-само със съдържаниеРазрешаване само на определен тип съдържание. Пример – XML
по FTP-единственоприложимо само за FTP сървър

Apache

Ако не искате да разрешите никое правило.

Задаване на заглавки X-Permissions-Cross-Domain-Policies "нито един"

Трябва да видите заглавката, както следва.

Nginx

И нека да кажем, че трябва да внедрите само master след това добавете следното в nginx.conf под сървърния блок.

add_header X-Permissions-Cross-Domain-Policies-master-only;

И резултатът.

Referrer-политика

Искате да контролирате референтната политика на вашия сайт? Има определени ползи за поверителност и сигурност. Не всички опции обаче се поддържат от всички браузъри, така че прегледайте вашите изисквания преди внедряването.

Referrer-Policy поддържа следния синтаксис.

стойностописание
не-референтИнформацията за реферала няма да бъде изпратена заедно със заявката.
не-референт-кога-понижаванеНастройката по подразбиране, при която референтът се изпраща към същия протокол като HTTP към HTTP, HTTPS до HTTPS.
опасна-URLпълен URL адрес ще бъде изпратен със заявката.
от един и същи произходПрепращането ще бъде изпратено само за същия сайт на произход.
строга произходизпращайте само когато протокол е HTTPS
строга-произход-при-кръстосано произходпълният URL адрес ще бъде изпратен по строг протокол като HTTPS
произходизпратете първоначалния URL адрес във всички заявки
произход, когато кръстосано произходизпратете ПЪЛЕН URL адрес при същия произход. Изпращайте обаче само оригинален URL адрес в други случаи.

Apache

Можете да добавите следното, ако искате да зададете no-referer.

Позиция на заглавката "не-референт"

И след рестартирането, трябва да имате в заглавките на отговорите.

Nginx

Нека да кажем, че трябва да внедрите същия произход, така че трябва да добавите следното.

add_header политика за препоръки със същия произход;

След като конфигурирате, трябва да имате резултатите по-долу.

Очаквайте-CT

Ново заглавие, което все още е в експериментален статус, е да инструктира браузъра да валидира връзката с уеб сървърите за прозрачност на сертификата (CT). Този проект от Google има за цел да отстрани някои недостатъци в системата на сертификати SSL / TLS.

Следните три променливи са налични за Expect-CT заглавие.

стойностописание
макс възрастЗа секунди, за колко време браузърът трябва да кешира правилото.
наложатНезадължителна директива за прилагане на политиката.
Доклад-URIБраузър за изпращане на отчет до посочения URL адрес, когато валидна прозрачност на сертификата не е получена.

Apache

Да допуснем, че искате да наложите това правило, да докладвате и кеш за 12 часа, след което трябва да добавите следното.

Набор заглавки Expect-CT ‘приложете, max-age = 43200, report-uri ="https://somedomain.com/report"”

И, ето резултатът.

Nginx

Какво става, ако искате да докладвате и кеширате за 1 час?

add_header Expect-CT ‘max-age = 60, report-uri ="https://mydomain.com/report"”;

Резултатът ще бъде.

Feature-политика

Контролирайте функциите на браузъра като геолокация, цял екран, високоговорител, USB, автоматична игра, високоговорител, вибрация, микрофон, плащане, VR и др., За да активирате или деактивирате в уеб приложение.

Apache

Нека да кажем, че трябва да деактивирате функцията на цял екран и за да направите това, можете да добавите следното в httpd.conf или apache2.conf.

Заглавката винаги задава функция-политика "цял екран „няма“ "

Какво ще кажете за добавяне на няколко функции в един ред?

Това също е възможно!

Заглавката винаги задава функция-политика "цял екран „няма“; микрофон „няма“"

Рестартирайте Apache HTTP, за да видите резултата.

Горният код ще инструктира браузъра да деактивира цял екран и микрофон.

Nginx

Да вземем друг пример – деактивирайте функцията за вибрация.

add_header Политика за функция "вибрира ‘няма’;";

Или деактивирайте геолокацията, камерата и високоговорителя.

add_header Политика за функция "геолокация „няма“; камера „няма“; говорител „няма“;";

Ето изхода след рестартиране на Nginx.

Цялата конфигурация на Nginx преминава под http блок в nginx.conf или всеки потребителски файл, който използвате.

заключение

Сигурността на уебсайт е предизвикателна и се надявам, че прилагайки горните заглавия, вие добавяте слой сигурност. Ако управлявате бизнес сайт, тогава може да помислите и за използване на cloud-WAF като SUCURI за да защитите вашия онлайн бизнес. Хубавото на SUCURI е, че предлага сигурност и производителност, и двете.

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