Güvenli SSL kullanımı, Soru ve Cevapları

22-11-2007

Basitçe bu yazıda genel olarak geliştiricilerin ve bireylerin SSL hakkında yanlış bildikleri veya bilmedikleri, sık sordukları soru - cevapları paylaşmaya çalıştım. Özellikle web yazılımlarında yanlış implemantasyonlar görüyorum.

Herşeyden Önce, SSL nedir?

Özetle ve hepimizin anlayacağı şekilde SSL gidip - gelen datanın şifrelenmesini sağlar. Neden ki? Sertifika ne?, Asimetrik şifreleme ne? gibi sorular soruyorsanız PGP' ye Giriş makalesini okumanızı tavsiye ederim. O makalede bu konulara değinmeye çalışmıştım.

Şimdi SSL ile ilgili Sık Sorulan Sorular

Güvenlik uyarısı çıkartan SSL' lere güvenebilir miyim?

Hayır güvenemezsiniz. İçerideki mesaja doğru durum değişebilir ancak genelde bu mesajı almanızın anlamı birinin size MITM  (Man in the Middle) tarzı bir saldırı yaptığını belirtir. Yani biri sizin internet trafiğinizi izlemeye çalışıyor demektir. Hatta bu tip bir mesaj alırsanız bulunduğunuz ağdaki (network) sistemleri ve ARP mesajlarını kontrol edin.

Üye Girişi Formumu HTTP üzerine koysam ama formu HTTPS adresine göndersem bu güvenli olur mu?

Hayır olmaz! Bu klasik hatalardan biri. Saldırgan HTTP formu basitçe değiştirebilir, formu başka bir yere gönderebilir hatta daha iyisi Javascript ile siz formu göndermeden formun içeriğini çalabilir. (buna rağmen pasif sniffing' e karşı bu işe yarayacaktır). Ek olarak eğer 'beni hatırla' gibi bir fonksiyonaliteniz varsa bu daha da kötü bir duruma yol açacaktır.

Web Uygulamamın sadece Üye Giriş kısmını SSL Üzerinden yapsam yeterli midir?

Hayır değildir. Üye girişi sonrasındaki data şifreli olmayacağından aktif üyenin aktif oturumu (session) basitçe çalınabilir. Bundan sonra uygulamadaki diğer güvenlik detaylarına göre ilgili saldırga hesabı tamamen ele geçirebilir. Gmail' ın varsayılan ayarları mesela bu şekilde ve evet herkes e-maillarınızı okuyabilir hatta e-mail ayarlarınızı değiştirebilir! Gmail' ı SSL üzerinden kullanabilirsiniz.

Sitelerde SSL kullanımı nasıl olmalıdır?

Olaya güvenlik açısından bakarsanız sitenin her yeri ve her zaman SSL üzerinden olmalıdır! Ama maalesef işler genelde bu şekilde yürümüyor. Dolayısıyla gerçek dünyada her zaman bunu yapamazsınız ancak yapabildiğiniz yer de ve güvenliği kritik olan sistemlerde bu şekilde düşünmelisiniz.

Cookie' leri SSL üzerinden bağlantılarda nasıl kullanmak gerekir?

Bütük cookie' ler "secure" olarak işaretelenmelidir.Şunun gibi : Set-Cookie:TESTSSL:GIZLI;Path=/;secure

Hemen hemen tüm web dilleri buna destek vermektedir. Bu sayede tarayıcınız bu cookie' leri sadece SSL üzerinden gönderecek. Dolayısıyla aynı domain' de port 80' ye yapılan bağlantılar bu cookileri göndermeyecek. Normal şartlar altında gönderiliyorlar çünkü tarayıcılar cookie' leri gönderirken porttan bağımsızlar ve domain' e göre gönderiyorlar.

Kritik ve Phising saldırılarına açık sistemlerde ana sayfayı HTTP üzerinden yapmak kötü müdür?

Eve kötüdür. Çünkü ana sayfaya girmiş ve anasayfanın onları SSL' e yönlendiriyor olmasına alışkın kullanıcalar SSL i kontrol etme gereği duymamaya başlarlar. Bu sayede bir çok phising saldırısı da başarılı olur. Banka gibi kritik alt yapılar güvenli bir subdomain' de sadece port 443 den data kabul etmelidir. Port 80 yi dinlemeye gerek bile yok, hatta dinlememek gerekir. Doalyısıla https://kisisel.banka.com gibi bir adres ulaşım için işi görecektir.

Yazılımımda SSL desteğini nasıl güvenli implemente ederim?

Kendi yazılımızda SSL implemente ederken dikkat etmeniz en önemli şey geçerli olmayan SSL sertifikalarını kabul etmemektir. Eğer bu tip geçerli olmayan, vakti geçmiş vs. sertifikaları kabul ediyorsanız, yazılımınız SSL üzerinden bir servera bağlanıp bilgi gönderiyor olsa bile bu yapı güvensizdir. Çünkü MITM saldırılara hala açıktır.

SSL / Sertfika Güvenleri Nedir? Nasıldır?

Maalesef bu yazı bu konunun detaylarını anlatmaya yetmez ancak ben çok basit ve temel bir kaç noktaya değineceğim sizde durumu hemene anlayacaksınız. SSL sertifikaları belli başlı CA (certification authority) tarafından verilir. Bunun iki ana amacı var. Birincisi ana güvenli bağlantıyı sağlamak, ikincisi kimliğin tanımlanması.

Birincisi biraz daha teknik bir konu. Özetle tarayıcılar ve işletim sistemleri içerlerinde destekledikleri CA' lar ile geliyorlar. Dolayısıyla bu CA' lar ve bunlarında güvendikleri alt CA' lar sizin bilgisayarınız tarafından tanınabiliyor. Aksi takdirde bir SSL sitesine baplandığınızda onun sertifikasının gerçekten bu verisign gibi bir CA tarafından onaylanıp onaylanmadığından emin olamazdınız. Bu sistem ve tarayıcı ile gelenler bu sorunun giderilmesini sağlıyor. Asimetrik şifrelemedeki en önemli noktalardan biri budur. Gerçek bir güven noktası gerekmesi.

Bu noktada da güven noktası CA' lar ve sisteminiz işletim sistemi ve tarayıcılar ile gelen sertifikalar.

Kendi İmzaladığınız SSL' leri Kullanmak Güvenli midir?

Eğer bu sistem herkese açılacak ve fiziksel olarak sizin elinizin altında olan bir sistemlere ulaşıcaksa hayır güvenli değil. Gidin ve adam gibi bir sertifika alıp sisteminize güzel bir güvenlik getirin. Ama diyelim ki sadece iki bilgisayarınız ve internet üzerinden bunları birbirleriyle SSL üzerinden konuşturmak istiyorsunuz. O zaman kendi sertifikarlarınız oluşturup, iki sistemde yükledikten sonra bunu uygulayabilirsiniz ve evet bu güvenli bir implemantasyon olacaktır.

E-mail' da veya FTP' de SSL Kullanmamak bir sorun mudur?

Bunların hepsi çok büyük sorunlar, benzer protokollerde de bu sorunları listeleyebilirsiniz. Bugün hemen hemen her tip protokol' ün SSL üzerinden oaln implemantasyonu hazır ve çalışır durumda. Dolayısla özellikle FTP ve Email gibi sistemlerinizi kesinlikle SSL üzerinden çalıştırın. Eğer elinizdeki protokol SSL' i desteklemiyorsa SSH Tunneling gibi bir yöntem ile dataları SSL kanalına basitçe taşıyabilir ve güvenli şekilde iletişim kurabilirsiniz.

Kendi ürettiğimiz sertifikalar da ilk bağlantıları nasıl güvenli yapabiliriz?

Önceden dedik, güvenilir sertifikalar sistem ile birlikte geliyor ancak kendiniz de sertifika üretebilir ve kullanabilirsiniz. İlk bağlantıda kullandığınız yazılım size karşı sistemin fingerprint' ini göstermeli. Bu datayı fiziksel ve güvenlir kanallar ile onaylamanız ve onayladıktan sonrada yazılıma bunu hatırlamasını belirtmeniz gerekir. Bu durumda ileriki bağlantılarda bunu bir daha size sormayacaktır. Ancak eğer bir MITM saldırısı yaparsa bu soru tekrar yazılım tarafından size sorulacaktır. Tabii ki bu durumda bu sertifikayı kabul etmemeniz gerekiyor.

Recent Blog Posts

See all of the blog posts