IIS 8.5 Yönetimsel ve Güvenlik Yapılandırma Uygulamaları – Bölüm 1
İki bölümden oluşacak bu makale serimizde organizasyonlarda her geçen gün yaygınlaşan Microsoft Internet Information Server (IIS) web ve ftp sunucu sistemleri üzerinde yönetimsel ve güvenlik alanlarında uygulanan en iyi uygulama kriterleri hakkında bilgi sahibi olacaksınız. Genel olarak önerilerimizi Windows Server 2012 R2 ile gelen IIS 8.5 versiyon arayüzünde inceliyor olsak da aynı standartlar IIS 7.0 ve sonrası tüm versiyonlar için geçerli olacaktır. Güvenlik teknolojilerindeki yeniliklere göre makalemizde belli dönemlerde güncellemeyi hedefliyoruz. Bu makalede belirtilen yöntemler en iyi uygulama deneyimleri ve gerçek hayattan uygulamalardan elde edilen tecrübeleri paylaşmak amacına yönelik bir içeriktir. Bu öneriler oluşabilecek güvenlik riskleri ya da zaafiyetlerini en aza indirgemeyi amaçlamakla birlikte güvenlik açıkları ya da problemlerinizin tamamen yok olacağı garanti edilmemektedir.
Web sunucusu üzerindeki yönetimsel ve güvenlik alanındaki en iyi yapılandırma prensiplerini aşağıdaki şekilde de görüldüğü gibi fiziksel katmandan başlayarak ele alıp ağ katmanı, kullanıcı katmanı ve verinin korunması katmanı olarak farklı seviyelerde ele alıyor olacağız.
Böylece çok katmanlı bir savunma yaklaşımı ile web sunucular üzerindeki yönetimsel ve güvenlik standartlarını değişen teknoloji ve kullanıcı deneyimleri de göz önüne alınarak daha da iyileştirmenizi hedefliyoruz.
Makalemiz içerisinde en iyi yapılandırma adımlarını aşağıdaki alanlarda inceliyoruz:
Kurulum
Temel Yapılandırmalar
Güvenlik Yapılandırmaları
ASP.NET Yapılandırmaları
Günlük Dosyalarının Yapılandırılması
İçerik Yönetim Yapılandırmaları
Yük Dengeleme Yapılandırmaları
Web Sunuculara Özel İzole Active Directory Yapılandırmaları
Diğer Yapılandırmalar
Bu makalemizde bahsi geçen belirli ticari marka isimleri kendi özgün sahiplerine aittir.
Kısaltmalar
IP |
Internet Protocol |
XST |
Cross Site Tracing |
IIS |
Internet Information Server |
XHR |
XML HTTP Request |
HTTPS |
Hyper Text Transfer Protocol Secure |
HTTP |
Hyper Text Transfer Protocol |
FTP |
File Transfer Protocol |
CGI |
Common Gateway Interface |
PHP |
PHP Hypertext Processor |
ASP |
Active Server Pages |
JSP |
Java Server Pages |
UML |
Unified Modeling Language |
B2B |
Business to Business |
SOAP |
Service Oriented Application Protocol |
SQL |
Structured Query Language |
LDAP |
Lightweight Directory Access Protocol |
XML |
eXtensible Markup Language |
URL |
Unified Resource Locator |
XSS |
Cross Site Scripting |
Kurulum
Bu başlıkta IIS 8.5 web sunucularda kurulum alanındaki en-iyi-yapılandırma deneyimleri (best-practice) paylaşılacaktır:
IIS rolünü domain controller ya da additional domain controller sunucular üzerinde aktifleştirmemelisiniz. Bunun birinci nedeni özellikle web sunucularda sıklıkla kullanılan yerel hesapların (local account) domain controller rolüne sahip sunucular üzerinde bulunmamasıdır.
IIS web sunucu rolü ile domain controller rolünün aynı sunucu üzerinde olması da güvenlik hesabı seçeneklerinizi önemli oranda sınırlandırmaktadır.
Web servislerinden dolayı web sunucu üzerinde oluşan bir güvenlik zaafiyet vakası tüm domain yapısını hatta tüm ağ yapınızı etkileyecektir.
Web sunucular üzerine sadece gerekli olan modülleri ve bileşenleri kurmalısınız. IIS 8.5 ile kırkın (40) üzerinde modül içermektedir. İhtiyacınız olan modülü kolaylıkla ilave edebilir, kullanılmayan modülleri de kaldırabilirsiniz. Sadece ihtiyacınız olan modülleri yükleyerek potansiyel saldırı ya da ataklara karşı saldırı gelebilecek yüzeyi de daraltmış olacaksınız.
Peryodik olarak IIS modüllerini gözden geçirerek kullanılmayan ya da istenmeyen modülleri kaldırın. Bu bir önceki maddede bahsettiğimiz gibi sizin saldırı gelme riski olan alanı mümkün olan en aza indirgeyecektir.
Yüksek hacimli IIS kurulumları için (özellikle çok katmanlı uygulamalarda) SQL Server, Exchange Server gibi yoğun kaynak ihtiyacı olan ürünleri IIS sunucular dışında ayrı sunucularda konumlandırın.
Antivirüs, antimalware gibi güvenlik yazılımlarınızı güncel tutun.
IIS kurulumu sonrasında sistem sürücüsü altında oluşan “Inetpub” klasörünü ve diğer web sitelerine ait içerik klasörlerini farklı bir sürücüye taşıyın. Böylece hem sistem diskinde oluşabilecek disk alanı darboğazlarının önüne geçmiş hem de güvenlik etkilerini en aza indirgemiş olacaksınız. Inetpub içeriğinin taşınması için APPCMD.exe ve XCOPY araçlarını kullanabilirsiniz. Bu konuyu ayrı bir makalede ele alıyor olacağız.
Temel Yapılandırmalar
Bu başlıkta IIS 8.5 web sunucularda en-iyi-yapılandırma deneyimleri (best-practice) referans alınarak uygulanan temel yapılandırma standartlarını bulacaksınız.
Web İçeriğinin Sistem Diski Haricinde Bir Konumda Saklanması
IIS üzerinden yayınlanan servislere ait içerikler sistem diski dışında bir disk bölümünde saklanmalıdır. Bu sayede :
Web içerikleri sistem bölümünden izole bir alanda saklanmış olur.
Web içeriğinin sistem alanındaki yer kullanması ya da tüketiminin önüne geçilmiş olur.
Web içeriğinden oluşan I/O yükünün sistem dosyalarının performansı ve veri bütünlüğü açısından oluşabilecek riskler de en aza indirgenmiş olacaktır.
Ayrıca web içeriğinden oluşabilecek gizlilik ve hassas durumlar da ortadan kaldırılmış olur.
Web Siteleri Üzerinde Host Header Tanımlama Standardı
IIS üzerinden yayınlanan tüm web siteleri üzerinde Host Header tanımlaması yapılmalıdır.
Bu sayede :
Aynı ip adresi ve port numarasından çoklu web site yayını yapılabilir.
DNS rebinding saldırılarına karşı koruma sağlanmış olmaktadır.
IP-tabanlı taramalarda IIS üzerinde host edilen uygulamanın tanımlanması da kolaylıkla sağlanmış olacaktır.
Web Siteleri Üzerinde Directory Browsing Kapatılması
IIS üzerinden yayınlanan site yapılandırmalarında “directory browsing” özelliği kapatılmalıdır.
Bu sayede :
Web site içeriklerinin browser tabanlı web istemcileri üzerinden görülmesi engellenmiş olacaktır.
Web site içerisindeki özel bir dosya içeriğine doküman listesinden erişim riski azaltılmış olacaktır.
Web site içeriğindeki hassas dökümanlara kontrolsüz erişim engellenmiş olacaktır.
Web Siteleri ve Uygulamaları Tarafından Bağımsız Application Pool Kullanımı
Application Pool kimlikleri (Identity) web sunucuları üzerindeki w3wp.exe isimli iş süreçlerini çalıştırmaya yetkili hesap ya da otoritelerdir. Web siteleri ve uygulamaları üzerinde application pool ataması yaparken her web site ya da uygulama için benzersiz, farklı application pool tanımlanmasına özen gösterilmelidir. Bu sayede :
Web site ya da uygulamalarının birbirlerinden farklı uygulama havuzları kullanmaları sağlanmış olacaktır.
Web site ya da uygulamada meydana gelecek bir kilitlenme, duraklama ya da kaynak problemi diğer web site ya da uygulamaları etkilemeyecektır.
Yoğun-kaynak ihtiyacı olan web site ya da uygulamalarının farklı uygulama havuzları kullanmalarıyla sunucu ve servisin performansı da artırılmış olacaktır.
Uygulamaların erişilebilirlik seviyesi de artırılmış olacaktır. Herhangi bir uygulama havuzunda oluşan bir sorundan sadece o uygulama havuzunu kullanan web sitesi ya da servisleri etkilemiş olacak, diğerleri hizmet kesintisi ya da duraklama yaşamayacaktır.
Web site ve uygulamaları farklı uygulama havuzlarında barındırıldıkları için uygulama seviyesinde yetkisiz erişim riski de azaltılmış olacaktır.
Web site ve uygulamaları farklı uygulama havuzlarında barındırıldıkları için kullanılmayan bir uygulama havuzunu istenildiği zaman durdurmak diğer servislerde kesintiye neden olmayacaktır.
Güvenlik Yapılandırmaları
Bu başlıkta IIS 8.5 web sunucularda en-iyi-yapılandırma deneyimleri (best-practice) referans alınarak uygulanan güvenlik yapılandırma standartlarını bulacaksınız.
Windows Kimlik Doğrulamasın Genişletilmiş Koruma Özelliği
IIS web sunucuları üzerinde Windows authentication kimlik doğrulaması aktif ise mutlaka genişletilmiş koruma özelliği olan “Extended Protection” da açmanızı öneriyoruz.
Windows Authentication kullanılabilmesi için Web Server rolü altındaki bileşenlerden kurulmuş olması gerekir. Aşağıda PowerShell ile bu gereksinim kontrol edip yüklüyoruz.
Anonim Kimlik Doğrulamasını Doğru Yapılandırın
IIS web sunucuları üzerinde Anonymous authentication kimlik doğrulaması ile birlikte diğer kimlik doğrulama yöntemlerini aktif etmemeye mümkün olduğunca dikkat edin. Çünkü çalıştığı modüle bağlı olarak çoğu durumda öncelikli olarak Anonymous authentication kimlik doğrulaması devreye gireceği için diğer kimlik doğrulamalarında sorunlara neden olacaktır.
Diğer yandan sunucu dizinlerine ve kaynaklarına anonim kimlik erişim hesabına yetki vermeyiniz. Sunucuya yapılacak dosya yükleme ya da yazma işlemleri için anonim hesabı dışındaki hesapları özellikle kullanmanızı tavsiye ediyoruz.
Default Application Pool Kimliğinin Minimum Yetkiye Sahip Principal Hesabına Atanması
Application Pool kimlikleri (Identity) web sunucuları üzerindeki w3wp.exe isimli iş süreçlerini çalıştırmaya yetkili hesap ya da otoritelerdir. Bu sayede :
Doğru ve geçerli kimlik bilgisinin tanımlanması web uygulaması ya da servisinin fonksiyonel olarak doğru çalışmasını da garanti altına almaktadır.
Aynı zamanda web uygulaması ya da servisinin gerekli en az yetkili hesapla çalıştırılarak, gereğinden fazla yetkili hesap kullandırmayarak oluşabilecek güvenlik riskleri ve zafiyetleri de en aza indirgenmiş olacaktır.
Bu aksiyon web site içeriğinde yapılabilecek zararları ya da manipülasyonları da engellemiş olacaktır.
Web Siteleri ve Uygulamaları Tarafından Kullanılan Application Pool Kimliğinin Benzersiz Olmasına Dikkat Edilmesi
Application Pool kimlikleri (Identity) web sunucuları üzerindeki w3wp.exe isimli iş süreçlerini çalıştırmaya yetkili hesap ya da otoritelerdir. Web siteleri ve uygulamaları üzerinde application pool kimlikleri tanımlanırken her web site ya da uygulama için benzersiz, farklı kimlikler tanımlanmasına özen gösterilmelidir. Bu sayede :
Doğru ve geçerli kimlik bilgisinin tanımlanması web uygulaması ya da servisinin fonksiyonel olarak doğru çalışmasını da garanti altına alınmaktadır.
Aynı zamanda web uygulaması ya da servisinin gerekli en az yetkili hesapla çalıştırılarak, gereğinden fazla yetkili hesap kullandırmayarak oluşabilecek güvenlik riskleri ve zafiyetleri de en aza indirgenmiş olacaktır.
Bu aksiyon web site içeriğinde yapılabilecek zararları ya da manipülasyonları da engellemiş olacaktır.
Web site ya da web uygulamasının ilgili alanına sadece ilgili kimlik bilgisi ile minimum yetki seviyesinde erişim sağlanması garanti altına alınmış olacaktır.
Bu sayede her uygulama havuzunun (application pool) benzersiz bir kimlikle çalışması sağlanmış olacaktır.
Anonymous User Kimliği Olarak Application Pool Kimliğinin Yapılandırılması
IIS sistemleri üzerinde uygulama havuzları için farklı uygulama kimlikleri kullanılabilir. IIS web site ya da uygulaması üzerindeki application pool kimlik yapılandırmasında anonymous kullanıcı hesabı tanımlanmamışsa application pool isimli kimliğini kullanması şeklinde yapılandırma yapılabilir. Bu durumda IIS üzerinde ihtiyaç duyulan hesap kimliği de minimum sayıya indirgenmiş olacak, hesap yönetimi de kolaylaşacaktır. Önerilen Application Pool Identity’nin Anonymous User Identity olarak yapılandırılmasıdır. Bu yapılandırma minimum yetki ile servislere erişimin yapılmasını sağlarken, site yönetimini de kolaylaştıracaktır.
Web Sitesi Dynamic IP Address Kısıtlanması
IIS web sunucular üzerinde ihtiyaca göre ip adresi, network adresi ya da domain bilgisine göre erişim kısıtlamaları yapılmalıdır. Bu sayede :
Yetkisiz kişi ve sistemlerin web sitesine erişimi engellenmiş olur.
Dinamik olarak tanımlanan kapsamda olan sistemler kısıtlama kapsamına girmektedir.
DDOS saldırıları engellenmiş olacaktır.
Dynamic ip kısıtlaması için web sunucu üzerinde Web-IP-Security isimli IP and Domain Restrictions bileşeninin kurulu olması gerekir. Standart web server kurulumunda bu özellik kurulu gelmez. Yüklemek için aşağıdaki şekilde görülen PowerShell komutlarını işletmek gerekecektir.
Bu işlemden sonra IIS konsolu içerisinde IP and Domain Restrictions görünmüş olacaktır.
IP Address and Domain Restrictions kısıtlamaları aşağıdaki seviyelerde uygulanabilir:
IIS Sunucu seviyesinde
Web Site seviyesinde
Web Application seviyesinde
Üst seviyeden uygulanan kısıtlamalar miras yoluyla alt seviyelere geçmektedir.
IP Address and Domain Restrictions simgesi üzerine çift tıklayınca gelen aşağıdaki ekranda sağ kısımda gelen Actions menüsü kullanılarak izin verilecekler için Allow Entry, yasaklanacaklar için de Deny Entry seçenekleri kullanılır. Spesifik IP adresi için kısıtlama ya da izin verme uygulanabileceği gibi IP adres aralığı ya da IP Subnet tanımı da yapılabilir.
Bu ekranda tanımlanmamış diğer adresler için geçerli olacak aksiyon ayarını da Edit Feature Settings ile belirleyebilirsiniz:
Yukarıdaki şekilde de görülen ekranda “Access for unspecified clients” ile tanımlanmamış istemciler için erişim durumu izin verilsin derseniz Allow yasaklansın derseniz de Deny seçeneklerinden uygun olanı liste kutusundan seçebilirsiniz. Yine bu ekranda “Enable domain name restrictions” kutucuğu işaretlenerek domain bazında da Allow Entry ya da Deny Entry tanımlanabilir, ilgili seçenekler Add Allow Entry ya da Add Deny Entry seçeneklerinden uygun olana tıklayınca gelecektir.
FTP Sitesi Erişiminin Kısıtlanması
IIS web sunucular üzerinde FTP hizmetlerinde ihtiyaca göre ip adresi, network adresi ya da domain bilgisine göre erişim kısıtlamaları yapılmalıdır. Bu sayede :
Yetkisiz kişi ve sistemlerin ftp sitesine erişimi engellenmiş olacaktır.
Dinamik olarak tanımlanan kapsamda olan sistemler kısıtlama kapsamına girmiş olacaktır.
Yetkisiz kişiler tarafından FTP içeriği görüntülenmesi ya da içerik yüklenmesi engellenmiş olacaktır.
Brute force ataklar bloklanmış olacaktır. Böylece yerel Administrator hesabının ele geçirilip saldırı yapılmasının da önüne geçilmiş olacaktır.
Yetkisiz kullanıcıların web site içeriğini kapsayan ftp alanına zararlı yazılımlarla oluşturabileceği riskler engellenmiş olacaktır.
FTP User Isolation yöntemi kullanılarak kullanıcıların FTP alanında sadece kendilerine izin verilen klasör alanına erişmeleri, yetkisiz alanlara erişmeleri engellenmiş olacaktır.
FTP Sitesine erişimde kullanıcı hesabı seviyesinde filtreleme ve sınırlandırma yapılarak yetkisiz kullanıcıların ftp sitesine erişimleri yasaklanmış olacaktır.
FTP Request Filtering yeteneği ihtiyaca göre kullanılarak FTP alanında belirtilen uzantılar dışında içerik yüklenmesi engellenmiş olacaktır.
Web Sitesi Global Authorization Rule İle Erişim Kısıtlanması
IIS 7.0 ile gelen URL Authorization sayesinde dosya sistemi yerine URL-bazlı yetkilendirme kuralları ile web sitesi koruması sağlanmalıdır. Authorization kuralları sunucu, web sitesi, web application, virtual directory ya da dosya seviyesinde uygulanabilir. URL authorization kuralları .NET modülleri, statik sayfalar, ASP sayfaları gibi tüm içeriklere gelen istekler için etkilidir. Bu kapsamda web servisi ve uygulamasına göre sunucu seviyesinde URL Authorization kuralları uygulanarak içerikle beraber hedefe taşınmaktadır. Böylece :
İçeriğin konumu değişse de yukardan aşağıya yetkilendirme kuralları miras olarak aktarılarak sürekli etkinliğini korunacaktır. Bu sayede uygulanan kısıtlamalar konum-bağımsız etkinliğini koruyacaktır.
Şu anki ve gelecekteki web içeriğine erişimde belirlenen kurallar dışında erişimin yapılması engellenmiş olacaktır.
İstek dışı ve yetkisiz erişimlerin yapılması engellenmiş olacaktır.
Web Sitesi Form Kimlik Doğrulamasında SSL Zorlanması
IIS üzerinden yayınlanan web sitesi içeriğine göre form-tabanlı kimlik doğrulaması kullanılan site ya da sayfalar üzerinde SSL erişim zorunluluğu getirilmelidir. Böylece forma girilen bilgilerin kriptolanarak web sunucuya güvenli mimaride iletilmesi sağlanacaktır. SSL sonlandırması uygulamaya göre bazı senaryolarda Load-Balancer aygıtı üzerinde gerçekleştirilebilir. IIS sunucularda gerçekleşen SSL sonlandırmalarında da Load-balancer (yük dengeleme) cihazı gelen isteklere SSL optimizasyon uygulaması sağlanabilir.
ÖZETLE :
İki bölümden oluşan bu makale serimizin ilk bölümünün sonuna geldik. İkinci bölümde de IIS sunucularımız üzerinde aşağıdaki maddeler için yönetimsel ve güvenlik alanında en iyi uygulama standartlarını paylaşmaya devam edeceğiz:
ASP.NET Yapılandırmaları
Günlük Dosyalarının Yapılandırılması
İçerik Yönetim Yapılandırmaları
Yük Dengeleme Yapılandırmaları
Web Sunuculara Özel İzole Active Directory Yapılandırmaları
Diğer Yapılandırmalar
Hoşçakalın.
Mesut ALADAĞ.
Microsoft MVP, MCT, P-TSP
www.cozumpark.com | www.mesutaladag.com