SGE Blog Yayınları

Apache Web Sunuculara Http Güvenlik Başlıklarını Ekleme

Apache Web Sunuculara Http Güvenlik Başlıklarını Ekleme

yazan Hasan Fatih Şimşek -
Number of replies: 0

Belli başlı http güvenlik başlıkları vardır. Bunlar arasında

Content-Security-Policy - Yeni tarayıcılarda XSS önleyici header

X-XSS-Protection - Eski tarayıcılarda XSS önleyici header

X-Frame-Options - Clickjacking önleyici header

X-Content-Type-Options - XSS Content Sniffing önleyici header

Referrer-Policy - Kaynak siteden gelen parametrelerin aktarımı sonucu kullanıcının gizliliğini ihlal etmeyi engeller.

Strict-Transport-Security - Sslstrip önleyici header

Set-Cookie, Secure, HttpOnly, SameSite  - MITM, XSS ve CSRF saldırılarından çerez içeriğini koruyan header

gibi header'lar mevcuttur. Bu http güvenlik başlıklarının http response'da yer alabilmesi için önce bir apache modülü olan mod_headers'ın enable edilmesi gerekmektedir.

sudo a2enmod headers 
sudo service apache2 restart

Ardından apache'nin konfigurasyon dosyasına aşağıdaki satırlar eklenmelidir.

sudo gedit /etc/apache2/apache2.conf

Eklenecek Satırlar:

Header add Content-Security-Policy "style-src * 'unsafe-inline'; script-src * 'unsafe-inline'  
'unsafe-eval'; img-src *; connect-src: *; frame-src: *; object-src: *"
Header set X-XSS-Protection "1; mode=block" Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "no-referrer"
Header set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"

Header edit Set-Cookie ^(.*)$ "$1; HttpOnly; Secure; SameSite=strict"

sudo service apache2 restart

Böylece http response paketlerinde yukarıdaki header'lar yer alacaktır ve istemci taraflı güvenlik sağlanmış olacaktır.

Not: Header'ların değerlerini web uygulamanın gereksinimlerine göre gevşetmek veya sıkılaştırmak gerekmektedir. 

Uyarı

Eğer uygulama 404 gibi hata mesajları döndüğünde de güvenlik başlıkları http response'larda yer alsın istiyorsan apache2.conf dosyasına eklediğin satırlara aşağıdaki gibi always keyword'ü eklemelisin.

> sudo gedit /etc/apache2/apache2.conf

Eklenecek Satırlar:

Header always add Content-Security-Policy "style-src * 'unsafe-inline'; 
script-src * 'unsafe-inline' 'unsafe-eval'; img-src * data: 'unsafe-inline'"
Header always set X-XSS-Protection "1; mode=block" Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "no-referrer"
Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"

Böylece hata mesajı dönen http response'larda da güvenlik başlıkları gelecektir.

Not: Konfigasyon dosyasında always olmadığında telnet ile HEAD / HTTP/1.0 talebi sonrası http güvenlik başlıkları gelmişken HEAD / HTTP/1.1 talebi sonrası hata döndüğünden http talepleri gelmemiştir. Konfigurasyon dosyasına always keyword'leri eklendiğinde ise telnet ile hem HEAD / HTTP/1.0 talebi yaptığımızda hem de HEAD / HTTP/1.1 talebi yaptğımızda http güvenlik başlıkları gelmiştir.

Yararlanılan Kaynak

https://stackoverflow.com/questions/16385541/content-security-policy-invalid-command

https://www.keycdn.com/blog/http-security-headers/

https://stackoverflow.com/questions/39502968/apache-difference-between-header-always- set-and-header-set

https://serverfault.com/questions/880894/how-can-i-add-in-apache-referrer-policy-header

https://geekflare.com/httponly-secure-cookie-apache/

https://blog.appcanary.com/2017/http-security-headers.html#hsts

https://zaclee.net/apache/errors-apache/invalid-command-header

https://serverfault.com/questions/524966/how-do-i-get-apache2-to-parse-without-error- header-directives-in-a-htaccess

https://www.maketecheasier.com/securing-apache-ubuntu-2/




360 kelime