IIS 8 ile Gelen Yeni Özellikler (26.10.2016)
IIS Tarihine Genel Bakış
- IIS 1.0 Windows NT 3.51 ile birlikte ücretsiz eklenti olarak yayınlanmıştır.
- IIS 2.0 Windows NT 4.0 ile birlikte gelmiştir.
- IIS 3.0 Windows NT 4.0 Service Patch 2 ile beraber gelmiştir. Active Server Pages (ASP) dinamik web sayfası geliştirme yapısınıda bereberinde getirmiştir.
- IIS 4.0 Windows NT 4.0 "Option Patch" in parçası olarak gelmiştir.
- IIS 5.0 Windows 2000 ile tanıtılmıştır ve ek güvenlik doğrulama(authentication)
Metotları, yönetim araçlarında yenilikler ve MMC-tabanlı yönetim uygulaması, WebDAV protokol desteği ve ASP ile ilgili yeni geliştirmeleride beraberinde getirmiştir.
- IIS 5.1 Winodows XP Professional ile beraber gelmiştir ve özellik açısından IIS 5.0 ile hemen hemen aynıdır.
- IIS 6.0 Windows Server 2003 ile beraber gelmiştir ve aynı zamanda Windows XP Professional x64 versiyonunda da çalışmaktadır.
- En önemli özelliklerinden biri IPv6 ve yeni işlem modelidir, aynı zamanda güvenlik konusunda da iyleştirmeler yapılmıştır.
- IIS 6.0 ile beraber yeni kimlik doğrulama metodları tantılmıştır. Bunlar;
1- Anonymous authentication
2- Basic accsess authentication
3- Digest accsess authentication
4- Integrated windows authentication
5- UNC authentication
6- .Net passport authentication
7- Certificate authentication
- IIS 7.0, IIS’in en baştan yazılmış halidir ve mimari olarak bir çok yeniliği beraberinde getirmiştir. Windows Vista ve Windows Server 2008 ile beraber entegre olarak sunulmuştur.
IIS 7.0 modüler yapıda yazılmıştır ve modüllerden oluşur, bu yapı sayesinde güvenlik açısından daha iyleştirilmiş ve performans artışı sağlanmıştır. Siteler için komut satırı yönetim opsiyonları eklenmiştir ve .NET Framework için destek arttırılmıştır. Eş zamanlı istemci bağlantı sayılarına bakıldığında (Windows Vista Ultimate, Business and Enterprise Editions) versiyonlarında 10(Vista Home Premium) versiyonunda ise 3 eş zamanlı bağlantıya izin verir. Bunlardan sonra gelen ek istemci bağlantı istekleri sıraya alınır ancak engellenmez.
Yazılan web uygulamarı w3wp.exe isimli prosess tarafından taşınmaya devam etmektedir. Ancak bu prosesslerin mimarisi tamamen değişmiştir. Ayrıca Sitelerin yüklenmesi noktasında hiyerarşik bir yapı sunmuştur. Windows form tabanlı yönetim uygulaması gelmiştir. Yeni komut satırı opsiyonları eklenmiştir ve yönetim konsolu tamamen değiştirilmiştir.
Uzaktan yönetim ve IIS yöneticileri kavramına IIS 7.0, web sitesi ve hatta uygulama bazında farklı kullanıcılara farklı haklar verilmesini sağlamaktadır. Bunun için tanımlanacak kullanıcılar da domain user olmak zorunda değildir.
IIS üzerinde IIS yöneticileri oluşturulup hak tanımalamısı yapılandırılabilir. Uzaktan yönetimi yine IIS üzerinde çalışan bir web servis üzerinden HTTPS ile gerçekleştirilebilmektedir. Bu da güvenlkten ödün vermeden heryerden erişilebilirlik anlamına gelir .net framework için destek arttırılmıştır.
- IIS 7.5 Windows 7.0 ve Windows Server 2008 R2 ile beraber sunulmuştur.
IIS 7.5 geliştirilmiş WebDAV ve FTP modülleri ile birlikte sunulmuştur. Windows powershell versiyon 2.0 ile beraber otomatik yönetimsel işlemler programlanabilir. TLS 1.1 ve TLS 1.2 desteği sunulmuştur. Best Practices Analyzer aracı ile uygulama havuzları için işlem (prosess) izolasyonu sağlanmıştır.
WebDAV’dan kısaca bahsetmek gerekirse ; WebDAV (Web-based Distributed Authoring and Versioning) : Bir web sunucu üzerindeki dosyalara http protokolü üzerinden erişimi sağlayan http yamasıdır. Paylaşılan dosyalara özellikler eklememize yarar. (yazar adı, notlar gibi.) aynı zamanda versiyonlamaya yarar.
IIS 8.0 Yenilikleri
- Real CPU Throttling – CPU Kısıtlama
Real cpu throttling, application pool katmanında gerçek zamanlı cpu kısıtlamaya yarar, application pool belirtilen cpu yüzdesi kadar kullanım sağlar ve IIS üzerinde çalışan diğer application poollar için kullanılabilir cpu işlem gücü bırakılmış olur.
IIS 7,5 ve öncesinde real cpu throttling yapılabilmekteydi fakat belirtilen cpu kullanım yüzdesine ulaşıldığında o application için çalışan worker proses’ler kapatılıyordu (kill)
Bu durum çoğu senaryoda aslında kullanımını pek anlamlı kılmamaktaydı.
IIS 8.0 ile beraber farklı seçenekler sunulmuştur. Bunlar ;
I.NoAction : CPU limiti belirtilen değere ulaştığında herhangi bir aksiyon alınmaz ve CPU kullanımı belirtilen değerin üzerine çıkabilir.
II.KillW3wp : CPU limiti belirtilen değere ulaştığında WorkerProcess’ler öldürülür ve AppPool stop duruma geçer. Tekrar çalıştırmak için manuel start yapılması gerekir.
III.Throttle : CPU limiti belirtilen değere ulaştığında kullanımı bu değerde kısıtlar ve geçmesine engel olur.
IV.ThrottleUnderLoad : CPU limiti belirtilen değere ulaştığında Limit Interval süresi boyunca bu değeri geçmesine izin verir ve daha sonra CPU limiti değerinde kısıtlar.
2. Multicore Scaling – Çoklu Uygulama Çekirdek Desteği
Multicore scaling , IIS’in Non-uniform memory access (NUMA) (düzenli olmayan bellek erişimi) ile işlemci çekirdeklerinin Ram kullanımını en efektif kullanmasını sağlar.
(SMP) Symmetric Multi-Processor yani Simetrik Çoklu İşlemci mimarisi ölçeklenebilirlik sınırlarını aşmak için tasarlanmıştır. Sunucularda bellek erişimi, modern bir tasarıma sahiptir. SMP, her çekirdeğin kendi bus ve kendi I / O hub ’ına erişimi şeklinde çalışır. SMP de, çekirdekler paylaşılan veri yoluna erişim için birbirleri ile rekabetçi haldedir, Bu çok fazla CPU yada çekirdek sayısı olan sistemlerde iyi çalışmaz ve performans sorunu oluşturur.
NUMA ise birçok CPU’nun herhangi bir bellek veri yolu üzerinden sınırlama olmadan yüksek bağlantı hızı ile bu tür darboğazları hafifletmek için tasarlanmıştır.
NUMA’nın bu yeteneklerini kullanmak için IIS’8 ve 8.5’da multicore scaling, Windows Server 2012 ‘in bir parçası şeklinde gelmişir.
IIS 8’de NUMA kullanılarak aşağıdaki özelliklerden yararlanılabilir.
- Processor Affinity
- Affinity Mode
- Optimal NUMA selection
- Web Gardens
Bu özelliklere başka bir makalede değineceğim.
3. Dynamic Ip Restrictions – Dinamik IP Kısıtlamaları
Bu özellik IIS 8 ve 8.5’da DDOS saldırılarını engellemek üzere gelmiştir. DDOS saldırıları bilindiği üzere farklı bir çok IP’den tek bir uygulamaya erişim olarak adlandırılabilir. Bu tarz saldırılar sunucunun kaynaklarını doldurarak uygulamanın veya bazı servislerin cevap veremez duruma gelmesini hedefler.
Genelde Firewall’larda bulunan IPS, IDS ler ile engellenmektedir. IIS bu tarz saldırıları uygulama katmanında da engellemeye hedeflemiştir. Yeni bir özellik olduğu düşünüldüğünde Firewall’lar ile beraber kullanımı düşünülebilir. Küçük ve Orta seviye firmalar için alt yapı yatırımına ihtiyaç duymadan IIS’in dynamic ip restrictions özelliği kullanılabilir.
Bir IP’den gelen belirli sayıda erişim isteğini belirli süre engeleme şeklinde kullanılmaktadır.
Unutulmaması gereken bir konuda Proxy mode’dur.
Eğer host edilen site bir loadbalancer arkasında bulunuyorsa, source IP, loadbalancer’ın IP’si olarak görülür ve Proxy Mode açık değilse loadbalancer IP’si engellenerek hiç kimsenin siteye erişimi yapılamaz. İsteği yapan client IP’sinin source IP olarak algılanması isteniyorsa(X-Forwarded headers) Proxy Mode Enable yapılmalıdır.
Dynamic Ip Restrictions site bazında uygulanabildiği gibi, tüm siteleri kapsayacak şekilde IIS bazlı da yapılabilmektedir.
Dynamic Ip Restrictions IIS 8 de mevcut gelirken IIS7 ve 7.5’da sonradan yüklenen bir modül olarak kullanılmaktadır.
Dynamic Ip Restrictions’ı aşağıda görüldüğü üzere IIS 8’den sonra entegre olarak gelmektedir.
4. FTP Logon Attempt Restrictions – FTP Oturum Deneme Kısıtlamaları
IIS 8 ve öncesinde FTP kullanımı pek tercih edilmeyen bir servisti, bunun nedeni BrutForce ataklarına karşı açık olmasıydı. Kullanıcı adı ve şifre girişinin bulunduğu bir ftp sitesine yapılacak yanlış giriş isteği kısıtlanamamakta ve uygulamanın cevap veremez duruma gelmesine neden olmaktaydı.
4 yanlış giriş isteği sonrasında o IP’den yapılan erişimler 30 sn’ye engellenir. İstenirse sadece Log’a yazmasıda “Write to the log only” seçeneği ile sağlanabilir.
5.SNI/SSL Host Header Support - SSL Sunucu İsim Desteği
IIS 8 öncesinde IIS üzerinde host edilen tüm SSL kullanan siteler için birer IP adresi atanmak zorunluydu. IIS 8 ile beraber artık http’de olduğu gibi tek bir IP üzerinden birden fazla SSL’le sahip site çalıştırılabilmektedir. Özellikle hosting firmalar için önemli bir özellik olarak kullanılmaya başlanmıştır.
6. SSL Manageability Central Certificate Store – Merkezi SSL Sertiifika Depolama
IIS 8 ile gelen bu özellikle sunucu local’inde certification authority’de tutulan site SSL’leri artık IIS tarafında depolanır duruma getirilmiştir.
Özellikle Sharepoint ortamlarında yüksek sunucu sayılı farmlarda her site için tüm sunucu local’lerine SSL sertifika yüklenmek zorunluydu, bu da fazlasıyla bir iş ve takip zorluğu getirmekteydi. SSL Certifitate Store ile tüm SSL’ler merkezi bir yerde depolanıp diğer IIS’lerin kullanımı sağlanabilmektedir.
CCS(Central Certificate Store) IIS’e feature olarak yüklendikten sonra aşağıdaki modulden erişim yapılabilir.
Daha sonra sertifikaların saklanacağı yeri ayarlamamız gerekmektedir. Aşağıdaki gibi network path’i olduğuna dikkat edilmelidir. Ayriyetten web farm mevcutsa farm’da bulunan tüm sunucuların bu alana erişebiliyor olduğuna emin olunmalıdır.
Physical Path ayarlandıktan sonra bu path’e aşağıdaki gibi sertifika kopyalanır.
Daha sonra CCS’a sertifikanın geldiğini görebiliriz.
Artık aşağıdaki gibi sitelerimizde bu sertifikayı kullanabilmekteyiz.
7. Application Initialization Module – Uygulama başlangıç modülü.
Bu özellik IIS 7.5’da ek bir module olarak yüklenip kullanılabilmekteydi IIS 8 ile beraber artık tümleşik gelmektedir.
Application Initialization Module, bir sitenin ilk açılma süresinde tüm web uygulama kompanentlerini yüklerken gerekli olan süreyi can sıkıcı bir halden çıkarmak için geliştirilmiş olduğu söylenebilir.
IIS reset yada apppool recyle yapıldığında site bileşenlerinin app pool’u doldurmasında geçen sürede bir static html sayfasına yönlendirme yapabilmeyi sağlayabiliyor.
Yani site ilk çağırıldığında kullanıcının sitenin gelmesini beklemek yerine site şuanda yükleniyor lütfen bekleyin tarzında bir yazı görmesini mümkün kılmaktadır.
Application Initialization Module’u sitenize uygulamak için aşağıdaki adımlar izlenmelidir.
Öncelikle sitenizin kullandığı ApplicationPool’un Advanced Settings’inde StartMode’u AlwaysRunning olarak ayarlıyoruz.
Daha sonra sitemizin ilk açılışında yani application pool boş olduğunda gösterilmesi gereken statik sayfamızı hazırlıyoruz.
10 saniye sonra siteye yonlenecek olan htm dosya içeriği aşağıdaki gibidir.
<html>
<head>
<meta http-equiv="refresh" content="10;url=/" />
</head>
<body>
<h1>Redirecting in 3 seconds...</h1>
</body>
<html>
Sitenizin web.conf dosyasında eklenmesi gereken alanlar aşağıdaki gibidir.
<system.webServer>
<applicationInitialization>
remapManagedRequestsTo="Loading.htm"
skipManagedModules="true" >
<add initializationPage="/" />
</applicationInitialization>
</system.webServer>
Sitenizin kullandığı ApplicatipnPool doluyken yönlendirme sayfasına uğramadan direk site açılmaktadır.
Application Pool’u boşaltacak herhangi bir işlem yapıldığında (iireset yada app pool recycle gibi.) Application Initialization Module devreye girip yüklenme öncesinde gösterilecek static sayfaya yönlenmektedir. Bu sayfada belirtilen süre sonrasında (application pool’un dolma süresi olarak düşünülmelidir.) ana sitenize yönlenmektedir.
Böylelikle sitenin yüklenme aşamasında beyaz boş bir sayfa yerine oluşturduğunuz başka bir sitede kişileri bekletmesi daha hoş olacaktır.
Yararlı olması dileğiyle…
Taylan Bakırcıoğlu