Web Güvenliği - 2

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:47

 

Önceki makalede kimlik denetimini, belirli bir kaynağa erişim vermek veya kısıtlamak için yetkilendirme ile beraber kullanılan, kullanıcının tanımlanması olarak tarif etmiştik.

 

 

Kimlik Denetimi ve Yetkilendirme

Bir kullanıcının kimlik denetimini yapmak için birden fazla yol vardır ve bazen bir alışveriş sitesi örneğindeki gibi kullanıcılara, kaynaklara herhangi bir yetkilendirme olmadan da erişim izni vermek istersiniz. Bu makalede kimlik denetimi ve yetkilendirme konusunu sadece Microsoft Internet Information (IIS) üzerinde örneklendireceğim. Normalde Unix veya Linux üzerinde çalışan açık kaynaklı Apache sunucusunun da kimlik denetimi ve yetkilendirme sürecini tartışmak gerekebilirdi. Ancak sitemizin ve bizlerin .Net tabanlı çalıştığını düşünürsek IIS üzerinde konuşmak daha güvenilir olacaktır.

 

IIS ve Asp.Net’te Kimlik Denetimi ve Yetkilendirme

IIS ve Asp.Net, biz .Net geliştiricileri için 2 amiral gemidir. İkisi de zengin güvenlik özellikleriyle donatılmış özelliklere sahiptir. Genel olarak IIS ilk kontrolleri yapar ve kullanıcı bu ilk engelin üstesinden gelirse ve istenen kaynak, mesela bir ASPX sayfası gibi Asp.Net tarafından yönetiliyorsa Asp.Net güvenlik denetimi devreye girer.

 

Bir dosya’ya erişim izninin verilmesi veya verilmemesi ile ilgili son karar NTFS (New Technology File System - Yeni Teknoloji Dosya Sistemi) izinlerinin ve ilgili web.config dosyasındaki yetkilendirme kodlarının bir birleşimi tarafından verilir.

 

Dosyalar; okuma, değiştirme ve silme gibi spesifik işlemler için kısıtlanabilir veya izin verilebilir. Bu izinler Windows Explore, kod veya scriptler aracılığıyla programlamayla veya Active Directory kullanılıyorsa Group Policy (Grup Politikası) ile de ayarlanabilir. Web.config dosyası aracılığıyla ayarlanan izinler aşağıdaki gibi bir <authorization> öğesi eklenerek yapılandırılır:

 

<configuration>

<system.web>

<authorization>

<allow users="etkiAlaniAdi\kullanici1, kullanici2"/>

<deny users="*"/>

</authorization>

</system.web>

</configuration>

Burada kullanici1 adındaki bir etki alanı hesabına ve kullanici2 adındaki yerel bir hesaba erişim yetkisi verildiğini görüyoruz. Diğer tüm kullanıcılar ise yasaklanmış bulunuyor. Web.config dosyası, web uygulamasının köküne veya spesifik bir klasöre yerleştirilebilir.

 

Kısa olarak belirtmek gerekirse gelen ilk isteği IIS yönetir ve IP adresinin ve istemcinin etki alanının izin verilen listede olup olmadığını kontrol eder.

Daha sonra ise, kimlik denetimin olup olmadığını kontrol eder.

 

İstenen kaynak Asp.Net tarafından kontrol ediliyorsa, istemcinin kimlik denetimi yapılmış belgeleriyle birlikte Asp.Net çalışma sürecine aktarılır.

 

Aktarılma esnasında olumsuz bir duruma izin verilirse, tüm yetkilendirme istekleri için gerçek istemci belgeleri veya anonim erişim etkinleştirildiyse daha önce bahsedilen anonim hesap kullanılır. Eğer olumsuz bir durum yoksa, kullanılacak hesap Framework kurulum klasöründe bulunban .Net Framework machine.config dosyasında belirtilen hesap olur. Bu hesap, gerektiğinde değiştirilebilir, çok az ayrıcalığa sahip yerel bir hesaptır.

 

Web.config dosyalarında görebileceğiniz identity tagleri bundan ibarettir.

 

<identity impersonate="true">

 

Bu durumda istemci kimlik belgeleri kullanılır. Alternatif olarak belirli bir kullanıcı belirlenerek tüm isteklerin bu kullanıcıyla yetkilendirilmesi sağlanır.

 

<identity impersonate="true" name="domain\user" password="securePassword">

 

Dikkat: Kullanıcı adları düz metin halinde depolanıyorsa büyük bir güvenlik riski oluşur. Bu ayarları şifrelemek için Microsoft tarafından aspnet_setreg.exe adında bir araç sağlanmıştır. Bu araç hakkındaki her şeye makalenin sonundaki kaynaklar bölümünden ulaşabilirsiniz.

 

 

IIS ve Asp.Net’te Farklı Kimlik Denetimi Yöntemleri

Bu konuda öncelikle IIS’in durumuna ve ihtiyaçlarına göre doğru biçimde bir yapılandırma oluşturmalıyız. Bundan sonra da Asp.Net’i yapılandırıp özelleştirebiliriz. Şimdi ilk olarak IIS’i, ardından da Asp.Net kimlik denetimlerini detaylandırıyorum.

 

IIS Kimlik Denetimini Yapılandırmak

Bu konuda daha önce bahsettiğim anonim kimlik denetimi en yaygın olandır. Birçok site kullanıcılarının ana sayfaya veya diğer kısımlara bir kullanıcı adı ve parola olmadan erişmesine izin verir. Anonim kimlik denetimini etkinleştirmek için Web sitemizin Properties kısmından iletişim kutusunu açıp Directory Security sekmesini tıklayın. Authentication and Access Control Group’unda Edit buttonunu tıklayın ve Enable Anonymous Access onay kutusunu işaretleyin.

 

Bir başka seçenek ise gerektiğinde kullanıcı adının ve parolasının düz metin halinde gönderileceği anlamına gelen temel kimlik denetimi (basic authentication) bulunur. Bu seçenek SSL etkinleştirilmediği müddetçe zayıf bir seçimdir.

 

Son seçenek Passport Authentication (Pasaport kimlik denetimi)’ı etkinleştirmektir. Bu birçok site için kullanıcı adı ve parolalarının senkronize edildiği Microsoft tarafından barındırılan merkezi olarak yönetilen bir servistir. Passport etkin bir sitede imzalandığında, kullanıcının bu tip uygulamaların hepsi için kimlik denetimi yapılmış olur.

 

Passport’un devamı olan Windows CardSpace yakın zamanda Microsoft tarafından başlatılmış olan bir sistemdir. Ayrıntılarına makalenin sonundaki kaynaklar bölümünden ulaşabilirsiniz.

 

Kimlik denetimini kontrol etmek için Asp.Net kullanırken özellikle kamuya açık web siteleri için standart yaklaşım IIS’te anonim erişime izin vermektir.

 

Asp.Net Kimlik Denetimlerini Yapılandırmak

Asp.Net, 4 tane kimlik denetimini destekler; Forms, Windows, Passport ve hiçbiri veya özel. Bir kimlik denetimini ayarlamak için aşağıdaki öğeyi web.config dosyasına eklemek yeterli:

 

<authentication mode="Forms|Windows|Passport|None"></authentication>

 

Forms: Kullanıcıdan, kullanıcı tarafından oluşturulmuş web sayfası aracılığıyla bir kullanıcı adı ve parola girmesi istenir. Ayrıntılar genellikle bir veritabanıyla karşılaştırılır.

 

Windows: İstemcinin kimlik belgelerini kullanır ve daha önce bahsedildiği gibi normalde sadece şirket intranetleri gibi dahili sitelerde kullanılır.

 

Passport: Merkezi olarak yönetilen Microsoft Passport sistemidir.

 

None: Tamamen kendi özel kimlik denetimi sistemimizi kullanmak için bu kip kullanılır. Bundan sonra IIS kimlik denetimi devam etse de, Asp.Net daha fazla kontrol işlemi gerçekleşmez.

 

 

Web Güvenliği makaleleri burada bitmedi, mutlaka devamı olacaktır.

 

Tekrar görüşmek üzere, iyi çalışmalar dilerim.

 

 

Kaynaklar:

http://msdn2.microsoft.com/en-us/library/ms178477.aspx

http://msdn2.microsoft.com/en-us/library/aa480189.aspx

Web 2.0 Teknolojileri – Eric Van Der Vlist, Danny Ayers, Erik Bruchez, Joe Fawcett, Alessandro Vernet

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Articles | Software | Web | Web Security

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Şifahen değil acilen!

Anket

Yazılım geliştirirken en keyif aldığınız alan hangisi?




Sonuçlar

Son Yorumlar

Comment RSS

Calendar

<<  Ocak 2009  >>
PaSaÇaPeCuCuPa
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster

Ne Dinliyorum?

Kirpi - TearDrop (8 saat önce)
Kirpi - My Name Is Kirpi (8 saat önce)
Kirpi - The Song (8 saat önce)
Kirpi - Spell (8 saat önce)
Huseyin Karadayi - Bonus Track Funk Clarinet (String Mix) (8 saat önce)
Huseyin Karadayi - Sacred Gate (8 saat önce)
Huseyin Karadayi - Exotica (8 saat önce)
Huseyin Karadayi - Take Me Away / No Time To Waste (Vocal By Melis Sökmen) (8 saat önce)
Huseyin Karadayi - Eyes Don't Lie (Duet By Enoi & Funky C) (8 saat önce)
Huseyin Karadayi - This Way (Usy Groove) (8 saat önce)

Ne Okuyorum?


Haftanın Sözü


"Sukûnetim asaletimdendir;
Lâkin her lâfa verilecek bir cevabım var.
Bir bakarım lâf lâfmı diye,
Birde bakarım söyleyen adammı diye.."

Mevlânâ Celaleddin-i Belhi Rumi
(1207-1273)

Adanmış Hayatlar

"Zaten aşklar hep yalan dolan,
Sonu hep acı hüsran.
Bize her sevdadan geriye kalan
Sadece Galatasaray..
"

Son Dakika

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı

Ziyaretçi Sayısı