Hypertext Strict Transport Security, Türkçe adıyla Sıkı Metin Taşıma Güvenliği tarayıcıları web siteleriyle güvenli HTTPS bağlantıları kurmaya zorlayan bir sistemdir.
Daha önceki bir yazımızda da yazdığımız gibi Google’ın 45 TLD’lerini HSTS ön yüklü listelere ekleme kararı vermişti nedeniyle Hypertext Strict Transport Security son zamanlarda duymaya başladığımız bir konu oldu. Konunun önemini düşününce, HSTS hakkında bilgi vermeye ve neden mevcut SSL’iniz için etkileyici bir tamamlayıcı olduğunu açıklamaya karar verdik.
HSTS Nedir?
Hypertext Strict Transport Security header ile yollanan bir web güvenliği standartıyken, bu sayede tarayıcıların belli bir siteyi ziyaret ederken güvenli HTTPS bağlantısı kurmasını sağlar. Böylece cookie çalınma girişimleri ve downgrade saldırıları da önlenir. Bu Strict-Transport-Security parametresiyle sağlanırken, tüm bağlantıların güvenli gerçekleşmesine dikkat eder, güvensiz HTTPS konusundaki olası ihmalleri önler. Header içinde bu parametrenin uygulanacağı bir zaman aralığı belirlenir.
HSTS bir IETF standart takip protokolüdür ve tam 5 yıl önce bugünlerde, 2 Ekim 2012 tarihinde RFC 6797 onayından sonra ortaya çıkmıştır.
HSTS ile İlgili Bir Güvenlik Riski Var
HSTS’in kendisiyle ilgili ise bir önemli güvenlik riski bulunuyor. STS parametreleri bir header formu şeklinde iletişime geçtiği için, ilk bağlantı sağlanırken ufak da olsa bir saldırı alma riski ortaya çıkıyor.
Bu dediğimiz gibi oldukça zor bir saldırı girişimi fakat yine de eğer hackerların elinde doğru araçlar varsa SSL şifrelemenizi kaldırabilir, verilerinizi çalabilir ve hatta phishing yapmayı dahi deneyebilirler. Yine de bu ihtimal küçük de olsa zaman zaman istismar edildiği oluyor ve önlemler almak şart. Bunun çözümü de HSTS Preload listeleri.
HSTS Preload Nedir?
HSTS Preload ile daha önceden HSTS yüklenmiş bir dizi web sitesinin listesini alırsınız. Bu sayede de ilk bağlantı denemelerinde downgrade saldırılarının ya da cookie çalınma riskinin önüne etkili bir şekilde geçer. Bir web tarayıcısı HSTS Preload listeli bir web sitesine ilk kez girdiğinde, zaten sadece güvenli bağlantı kurulacağını bilecektir.
HSTS Preload listesiyle ilgili tek problem ise üstesinden gelmenin biraz zaman almasıdır. Çünkü bu konuda tarayıcıların insafına kalırsınız ve yeni güncellemelerden önce listeye sizi de eklemeleri gerekir. Bazı tarayıcılarda bu birkaç haftalık bir süreç olurken, kimisinde ise aylar boyunca sürebiliyor. Artık bu TLD’lere sahip olan ve bir SSL sertifikasıyla güvenliği sağlanmış her site listeye varsayılan olarak alınıyor.
Önümüzdeki aylarda da listeye pek çok yeni alan adının gireceğini bekleyebiliriz.
Siteme HSTS Uygulamalı mıyım?
Evet, kesinlikle HSTS kullanmanızı öneriyoruz. Bir SSL sertifikanız olsa dahi hâlâ sitenizde açıklar oluşma ihtimali bulunuyor. Özellikle de orijinal HTTP sayfalarından 301 yönlendirmesi kullanarak HTTPS sürümlerine trafik gönderenler için risk var. Sitenizde HSTS sahibi olmamak ön kapınıza büyük bir kilit asmak fakat aynı zamanda kazara bir camı da açıkta bırakmak gibidir. Dolayısıyla girmenin hâlâ bir yolu vardır fakat bulmak için biraz daha uğraşmak gerekir.
Yani evet, HSTS kullanımını kesinlikle öneriyoruz. Sadece HSTS değil, aynı zamanda header kısmına ‘includeSubDomains’ ve ‘preload’ komutlarını da eklemenizi tavsiye ediyoruz.
Örneğin güzel bir HSTS headerı;
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
HSTS Uygulamadan Önce Nelere Dikkat Etmeli?
HSTS ekleyip uygun bir header ayarlamadan önce dikkat etmeniz gereken birkaç püf nokta var;
- Web sitenizde hâli hazırda bir SSL sertifikası bulunmalı.
- Eğer alt domainleriniz varsa bunları korumak için wildcard kullanmalısınız.
- 301 yönlendirmeleri kullanarak tüm HTTP sayfalarınızı HTTPS olanlara yönlendirmelisiniz.
- Google’a göre en iyi uygulama maksimum iki yıllık olmalı.
- SubDomain ve preload headerları da eklenmelidir.
Önemli Not: Sadece ‘preload’ eklemek sizi HSTS preload listesine almayacaktır. Bunun için aşağıda bahsedeceğimiz adımları izlemek gerekmektedir.
Microsoft IIS Sunucuları için HSTS Headerı
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; } }
Nginx İçin HSTS Headerı
add_header Strict-Transport-Security 'max-age=300; includeSubDomains; preload; always;'
Lighttpd İçin HSTS Headerı
server.modules += ( "mod_setenv" ) $HTTP["scheme"] == "https" { setenv.add-response-header = ("Strict-Transport-Security" => "max-age=300; includeSubDomains; preload") }
HSTS Preload Listesine Nasıl Kayıt Olunur?
Web sitenizi HSTS preload listesine katmak için şu resmi adımları uygulamanız gerekmektedir;
1. Geçerli bir sertifika edinin.
2. Aynı host üzerinden HTTP’den HTTPS’ye yönlendirmeleri gerçekleştirin.
3. Tüm subdomainleri HTTPS üzerinden uygulayın.
4. Asıl alan adında HTTPS istekleri için bir HSTS headerı uygulayın;
- max-age en az 18 haftalık olmalıdır (10886400 saniye)
- includeSubDomains talimatları belirlenmelidir.
- preLoad talimatları belirlenmelidir.
- HTTPS sitenizden ek bir yeniden yönlendirme yapıyorsanız, bu yeniden yönlendirmede de HSTS headerı olmalıdır.
Eğer bu gereksinimleri karşılıyorsanız, basitçe bu adrese gidin ve formu doldurarak sitenizi HSTS preload listesi için kayıt ettirin.
Ne Öğrendik?
İşte bugünün konusundan öğrendiklerimiz;
- Hypertext Strict Transport Security – HSTS tarayıcıların güvenli bağlantılar kurmasını sağlayan bir web sitesi headerıdır.
- Web siteleri downgrade saldırılarını ve çerez çalınmalarını engellemek için HSTS kullanmalıdır.
- İlk sefer gerçekleşecek bağlantılarda ortaya çıkan ufak riskleri ortadan kaldırmak için sitenizi HSTS preload listesine eklemenizi tavsiye ederiz.
Kaynak : https://www.cheapssl.com.tr/blog/hypertext-strict-transport-security-hsts-nedir.html