Web.Config Güvenlik Ayarları

Web.Config Güvenlik Ayarları ASP.NET uygulamalarının güvenlik ayarlarına "web.config" ile başlanır. Bu yazımızda XML biçimindeki bu dosyanın ayarlarının nasıl yapılacağını inceleyeceğiz. Yazar: Yunus Emre ALPÖZEN Yazıldığı Tarih: 01.02.2005 İstatistik: Bu makale 568 defa okundu. Zorluk Derecesi: 1 2 3 4 5 Anahtar Sözcükler: ASP.NET, Web.Config Ayarları, Güvenli ASP.NET uygulaması.. ASP.NET tarafında uygulamanızın güvenliği için yapılması gereken işlemleri şu şekilde sıralayabiliriz: “Web.config” ayarları doğru yapmak, İndirilmesini istemediğiniz dosya uzantılarını tanımlamak, Kendi hata sayfalarınızı kullanmak, Sistem yönetimini uygulamadan ayırmak, Güvenli kod ile geliştirmek, Uygulama sunucusunun güncellemeleri düzenli olarak yapmak“Web.config” dosyası bir ASP.NET uygulamasına ait tanımlamaların yapıldığı XML biçimindeki bir dosyadır. Bu dosyanın en önemli özelliği içerisinde belirtilen özellikler o klasör ve aksi belirtilmedikçe o klasörün altındaki tüm alt dizinler için geçerli olmasıdır. Yani her hangi bir klasör için özel bir ayar kullanmak isterseniz tek yapmanız gereken o klasör içine yeni bir web.config dosyası tanımlamanızdır. Burada sadece tek bir “web.config” dosyasına ait ayarları belirteceğiz. Bu “web.config” dosyasında kimlik denetim modu olarak form güvenliği seçilmiştir. Kimlik denetimi için “Forms” yerine “Windows”, “Passport” ya da “None” seçilebilirdi. “Windows” güvenliği kullanıcı bilgisayarlarının sunucuya girişlerini “Windows” üzerinden gerçekleşmesini sağlar. Ancak “Windows” üzerinde tanımlı olmayan kullanıcıların sisteme girişlerine izin veremezsiniz. Daha da önemlisi kullanıcıyı değil de, kullanıcı bilgisayarını kimlik denetiminden geçirdiğiniz için, kullanıcı bilgisayarına oturan her kişi sisteme kendisini o kullanıcı gibi tanıtabilir. O yüzden çok fazla önerilen bir kimlik denetim modu değildir. Passport, kullanıcılarınızın Microsoft Passport’ları ile sisteme giriş yapmaları için düşünülmüştür. Bu, her Microsoft Passport’u olan kullanıcı sisteminize girecek demek değildir. Sisteminizdeki kullanıcılar ile Microsoft Passport’ları arasında eşleme yapmalısınız. Güvenliği Microsoft Passport ile sağlamak özellikle İnternet üzerinde çalışan uygulamalar için ideal bir yöntemdir. Ancak hem Intranet hem de İnternet üzerinden çalışan bir sistem olması için burada “Form” güvenliği seçilmiştir. “Passport” kullanımı belki daha da güvenlidir. “None” ise önerilmeyen bir seçenektir. Her kullanıcının istediği sayfa girebileceğini ifade eder. Kendi özel güvenlik kontrolünüzü yapmanızı sağlar. Ama kullanılmaması daha doğrudur.“Web.config” dosyamızda yer alan Authorization elemanı ile hangi kullanıcılara izin vereceğiniz hangilerini engelleyeceğinizi tanımlarsınız. Burada kullanılan “*” tüm kullanıcıları, “?” ise sisteme giriş yapmamış kullanıcıları ifade eder. Burada sisteme giriş yapmış tüm kullanıcılara izin veriliyor ve sisteme giriş yapmamış tüm kullanıcılar rededilmektedir. “Web.config” dosyamızda geriye kalan özellikler genel tanımlamalardır. Güvenlik ile doğrudan ilgisi bulunmamaktadır.Sistemimizin çalışması sırasında bir çok dosya biçimini kullanabilmekteyiz. Örneğin, çokça değişmeyecek bazı bilgilerimizi XML dosya biçiminde saklayabiliriz. Ülkemizdeki tüm şehirleri tutan bir xml dosyamız olabilir. Bu dosya üzerinden bazı işlemlerimizi gerçekliyor olabiliriz. Kullanıcıların bu dosyaya erişimlerini engellemek için “web.config” dosyasına ve IIS üzerine ilgili tanımlamaları yapmamız gerekecektir. IIS üzerindeki ayarlar için, Start › Programs › Administrative Tools yolu ile “Internet Information Services” yönetim aracını çalıştırın. Uygulamanızı seçip sağa tıklayıp gelen menüden “Properties” ’i seçin. “Application Settings” sekmesindeki “Configuration” butonuna tıklayın. Yeni bir eşleme eklemek için “Add” butonuna tıklayın. Ardından gelen form’daki “Browse” ’ a tıklayarak windows dizini altındaki Microsoft.NETFramework dizinin altında yer alan iligi Microsoft .NET Framework versiyonununa ait dizindeki “aspnet_isapi.dll” dosyasını seçin. Extension kutucuğuna ilişki kurmak istediğiniz dosya uzantısını yazın(örnek, “.abc” ya da “.xml” gibi). “All Verbs” ve “Script Engine” seçeneğinin seçili olduğundan ve “Check that file exists” seçeneğinin seçili olmadığından emin olun. Tüm pencerelere OK diyerek kapatın. Ardından “web.config” dosyamıza şu satırları ekleyelim; Bu satırlar, bu uygulamadaki abc dosyalarının IIS üzerinden indirilemeyeceğini ifade eder.Sisteminizde oluşan hataları doğrudan kullanıcıya göstermek doğru bir yaklaşım değildir. Mümkün oldukça tüm hataları kullanıcılardan gizlemeliyiz. Kullanıcılara kendi özel sayfalarımızı göstermeliyiz. Bunun için “web.config” dosyasına şu satırları ekleyelim;Bu satırlar sistemimizde oluşan hataların tümünün “error.aspx” sayfasına yönlendirilmesini sağlayacaktır. Hata ile ilgili yapılması gereken işlemleri bu sayfada tanımlayabilirsiniz. Burada yer alan mode’un alabileceği üç değer vardır. “On” tüm hataların belirtilen sayfaya yönlendirilmesini sağlar. “RemoteOnly” ise uygulamanın çalıştığı sunucu dışındaki tüm bilgisayarlarda belirtilen sayfaya yönlendirilmeyi sağlar. Uygulamayı sunucu üzerinde çalıştırdığınız zaman karşılaştığınız hatalar doğrudan gösterilecektir. Bu yüzden “RemoteOnly” daha çok tercih edilen bir seçenektir. “Off” ise kullanıcılara doğrudan hatayı gösterecektir ki bu önerilmeyen bir seçenektir. Son Söz: Sisteminizin yönetimini ayrı bir uygulamada hatta ayrı bir sunucu üzerinden yapmalısınız. Bir çok uygulamada admin dizinin altındaki admin.aspx sayfasında sistem yönetimi yapılmaktadır. Bu da sisteminizin her türlü saldırıya açık olmasını sağlar. Kodlamanızdan kaynaklanan küçücük bir hata sisteminizin kırılmasına yol açabilir. Eğer ki ayrı bir sunucuya ayırma şansınız yoksa en azından ayrı bir uygulamaya ayırın. Uygulamanızın yönetimini yapabilmek için bu uygulamaya da erişim için de gerekirse IP bazında kontroller yaparak sisteminizi korumalısınız. Hiç bir zaman uygulamanızdan, yönetim uygulamasına geçiş yapılmasına izin vermemelisiniz.Bu ve önceki makalemizde çokça incelediğimiz kodlamadan kaynaklanan hataları mümkün olduğunca en aza indirgeyerek sisteminizi daha güvenli bir hale getirin. En ince detayına kadar uygulamanızın nasıl çalıştığını inceleyerek yapmaması gereken işleri yapmadığını kontrol etmelisiniz.Kendi uygulamanızla ilgili tüm ayarları yapmış olmanız bile sisteminizi yeterli derecede güvenli bir hale getirmez. Uygulamanın çalıştığı sunucunun tüm yama ve güncellemelerini takip etmelisiniz. Uygulama sunucusunun üzerinde gereksiz hiç bir program kurmamalı ve kurulu programların yeterince güvenilir kaynaklardan sağlandığına emin olmasınız. Uygulama sunucusunda yer alan tüm programların üretici firmalarının sitelerinden uygulamalardaki güncellemeleri takip etmelisiniz. Güvenilir bir sistem sahibi olmak kolay değildir, ancak biraz daha dikkatli olarak sisteminizi bir çok saldırıdan koruyabilirsiniz. İlgili Makaleler: Referanslar: MSDN Kütüphanesi .NET Framework General ReferenceYazar : Yunus Emre ALPÖZENe-Posta : yunus.alpozen et msakademik.net

Döküman Arama

Başlık :

Kapat