HSTS (HTTP Strict Transport Security) Nedir ve Nasıl Kurulur?

En sevdiğiniz kafede oturduğunuzu veya bir otel odasında olduğunuzu ve ücretsiz Wi-Fi hizmetini kullanmak istediğinizi düşünün. Bu gibi yerlerde Wi-Fi şifrelerinin kağıda (not defteri, broşür, kart vb.) basıldığını ve hiç değişmediğini hiç fark ettiniz mi?

Kötü niyetli hackerlar da  bu ortak ağlara kolaylıkla bağlanabilme olanağına sahip olabiliyorlar. Dolayısıyla bu; onların bağlı olduğunuz ağı izleyebilecekleri ve siz dahil o ağı kullanan herkesin verilerini görebilecekleri / çalabilecekleri programları kolaylıkla kullanabilecekleri anlamına geliyor.

Bu hacker, HTTP’den HTTPS’ye geçiş yapmak için 301 Redirect yönlendirmesine dayalı herhangi bir web sitesi için HTTP üzerinden ağ trafiğinizi yakalayabilir. Bu yöntem, hacker’ın SSL şifrelemenizi kaldırması ve kişisel verilerinizi çalması veya daha da kötüsü sahte bir giriş sayfası bile oluşturmasına olanak sağlayabilecek bir fırsat penceresi sunar.

Bu nedenle web siteniz sadece HTTPS üzerinden HTTP Strict Transport Security (HSTS) kullanmalıdır. Dolayısıyla bir SSL Sertifikası kullanıyor olmanız, HTTP’den HTTPS’e geçişte 301 yönlendirmesi kullanılıyorsa tam anlamıyla ağ güvenliğini sağlamayacaktır.

Bu yazımızda HSTS’i nasıl kullanabileceğinizi anlattık.

HSTS (HTTP Strict Transport Security) Nedir?

HTTP Strict Transport Security (HSTS), User-Agentlara ve web tarayıcılarına en baştan ve tarayıcıya geri gönderilen bir yanıt başlığı üzerinden bağlantılarını nasıl kullanacaklarını bildiren bir web sunucusu yönergesidir.

Bu, HSTS (HTTP Strict-Transport-Security) ilkesi, alan parametresini ayarlar. Bu bağlantıları HTTPS üzerinden çalışmaya zorlar ve herhangi bir kod parçasının HTTP üzerinden herhangi bir kaynağı yükleme çağrısını dikkate almaz. HSTS, web sunucunuz veya web barındırma hizmetiniz için güvenlik ayarları bakımından tam güvenliği sağlayabilecek yoldur.

Web Sitenizde Neden HSTS Kullanmalısınız?

Bunu evin veya işyerinden çıkarken kapıyı kapattıktan sora kilitlemeye benzetebilriz. Sonuçta web sitenizdeki veriler, sizin için fiziksel eşyalarınız veya maddi değeri olan her şey gibi değerli olabilir. Bu yüzden onları güvende tutmak / tutmaya çalışmak da önemlidir. Web sitenizi SSL ile korumak yeterli olmayacaktır, çünkü insanlar web sitenize “http://” üzerinden erişmenin bir yolunu bulabilir. HSTS (HTTP Strict-Transport-Security), tarayıcıları ve uygulama bağlantılarını varsa HTTPS kullanmaya zorlar. Böylece birisi sadece http://www veya http:// yazsa bile, http:// olarak gelen istekler, HSTS protokolüne göre direkt olarak HTTPS olarak alınır.

HTTPS, Google’da sıralama faktörlerinden biridir ve sayfa hızı ve mobil yanıt verme gibi diğer birçok faktörle birlikte bir “site kalitesi” puanı olarak kategorize edilir. Ayrıca Google Chrome tarayıcılarının da SSL kullanmayan web siteleri için, “Güvenli Değil” olarak bildirim verdiğini hatırlatalım. Kısacası Google da web’in güvenli olamasına yardımcı olmak istiyor.

http:// den https://’e 301 yönlendirmelerini ayarlamak, alan adınızı tamamen korumak için yeterli değildir. HTTP’nin güvensiz yönlendirmesi nedeniyle halen hackerlar için kullanabilecekleri bir sürü yöntem var.

$ curl --head http://www.facebook.com HTTP/1.1 301 Moved Permanently Location: https://www.facebook.com/

Hackerlar site çerezlerini, oturum kimliğini (genellikle bir URL parametresi olarak gönderilir) yakalayabilir veya web sitenizin birebir kopyası olan kimlik avı sitelerine yeniden yönlendirmeye zorlayabilir ki bu, en kötü senaryo.

Web sitenizde HSTS (HTTP Strict-Transport-Security) Header özelliğinin kullanımı, kötü niyetli kişilerin herhangi bir bilgiyi toplamasını neredeyse imkansız kılacaktır.

$ curl --head https://www.facebook.com HTTP/1.1 200 OK Strict-Transport-Security: max-age=15552000; preload

HSTS Uygulaması Ne Kadar Popüler?

Milyarlarca dolarlık şirket olan Google, 29 Temmuz 2016 tarihinde HSTS güvenlik politikasını resmen yürürlüğe koydu.

HSTS projesi ilk olarak 2009’un başlarında hazırlandı. Facebook, Google, Gmail, Twitter ve PayPal, bugün HSTS’yi uygulayan en önemli sosyal ağ ve ödeme portallarından sadece birkaçıdır.

Web Siteniz İçin HSTS Nasıl Kurulur?

İçerik yapınızda subdomain kullanıyorsanız, SADECE HTTPS’yi kapsayacak bir Wildcard Sertifikasına ihtiyacınız olacaktır. Aksi takdirde web siteniz, Herhangi bir SSL Sertifikası ile  de oldukça güvende olacaktır. SSL’in kurulu olduğundan ve doğru çalıştığından emin olun.

HSTS’nin SEO Açısından Faydaları

HSTS’nin sitede kullanımının SEO açısından pek çok avantajı ve faydası bulunmaktadır. HSTS kurulu olan bir sitede, kullanıcının yazdığı adres http içermesine rağmen, tıpkı https isteğiymiş gibi değerlendirerek isteği https ile açmaya çalışır. Dolayısıyla yönlendirmeler arasında geçen zamandan tasarruf edilerek performans anlamında pozitif etkisi olmaktadır. Bu; hem açılış sayfalarınızın hızını etkileyen bir faktör, hem de SEO puanınızı pozitif etkileyen bir uygulamadır.

HSTS Gereksinimleri

  1. Web sitenizin geçerli bir SSL Sertifikası olmalıdır. SSL’nizingeçerliliğini GlobalSign’in SSL Denetleyicisi’nden kontrol edebilirsiniz .
  2. TÜM HTTP bağlantılarını 301 Kalıcı Yönlendirme ile HTTPS’ye yönlendirin.
  3. Tüm subdomainler SSL Sertifikanızda yer almalıdır. Eğer varsa bir Wildcard Sertifikası satın almayı düşünün.
  4. HTTPS istekleri için temel etki alanındaki HSTS başlığını kullanın.
  5. MAX AGE en az 10886400 saniye veya 18 Hafta olmalıdır.
  6. Eğer varsa, includeSubDomains yönergesi belirtilmelidir!
  7. Ön yükleme yönergesi belirtilmelidir.

 

Apache Web Sunucusu İçin HSTS Kurulumu

Aşağıdaki kodu Apache web sunucusunda public_html veya httpdoc gibi en üst düzeydeki kök dizin klasöründeki .htaccess dosyasına ekleyebilirsiniz.

# Use HTTP Strict Transport Security to force client to use secure connections only Header always set Strict-Transport-Security "max-age=300; includeSubDomains; preload"

Lighttpd için HSTS Kurulumu

Bunu Lighttpd yapılandırma dosyasına /etc/lighttpd/lighttpd.conf dosyasına ekleyin

server.modules += ( "mod_setenv" ) $HTTP["scheme"] == "https" { setenv.add-response-header = ("Strict-Transport-Security" => "max-age=300; includeSubDomains; preload") }

NGINX için HSTS Kurulumu

NGINX için HSTS kurulumu kodlarını site.conf dosyanıza yazmalısınız.

add_header Strict-Transport-Security 'max-age=300; includeSubDomains; preload; always;'

IIS Sunucuları için HSTS Kurulumu

protected void Application_BeginRequest(Object sender, EventArgs e) { switch (Request.Url.Scheme) { case "https": Response.AddHeader("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload"); break; case "http": var path = "https://" + Request.Url.Host + Request.Url.PathAndQuery; Response.Status = "301 Moved Permanently"; Response.AddHeader("Location", path); break; } }

HSTS Ön Yüklemesi Nedir?

HSTS önyüklemesi; tarayıcıda yerleşik bir fonksiyondur, bu sayede global bir ana bilgisayar listesi web sitelerinde SADECE HTTPS kullanımını zorlar.

Bu liste Chrome, Firefox ve Safari tarafından kullanılmaktadır. Bu siteler, politikayı uygulamak için HSTS cevap başlıklarının yayınlanmasına bağlı değildir. Bunun yerine, tarayıcı etki alanı adının SADECE HTTPS kullanılmasını gerektirdiğinin farkındadır ve herhangi bir bağlantı veya iletişim gerçekleşmeden önce HSTS’yi öncelikli olarak kullanmaktadır..

Bu, bir hacker’ın HTTP üzerinden yönlendirmelerle müdahale etme ve kurcalama olanağını kaldırır. HSTS yanıt başlığına bu senaryoda hala ihtiyaç duyulmaktadır ve önceden yüklenmiş HSTS listelerini kullanmayan tarayıcılar için yerinde bırakılmalıdır.

Referanslar

HSTS neredeyse sekiz yıldan beri var. Bu HTTPS Yalnızca web altyapınızdaki politika, kötü niyetli kişileri dışarıda ve hassas verilerinizi güvende tutar. Web yöneticiniz veya web barındırma servisiniz tarafından kurulması sadece birkaç dakika sürer ve SSL puanınızı GlobalSign’ın SSL Checker ile artıracaktır  .

HSTS Referansları

  1. HTTP Strict Transport Security
  2. Google I/O 2014 – HTTPS Everywhere
  3. Bringing HSTS to www.google.com
  4. Strict Transport Security W3 List Archives