IIS 8.5 Yönetimsel ve Güvenlik Yapılandırma Uygulamaları – Bölüm 2
IIS 8.5 ile web sunucularda yönetimsel ve güvenlik alanındaki en iyi uygulamalardan deneyimlerimizi paylaştığımız makale serimizin ikinci bölümünde de birlikteyiz. Bu ikinci bölümde de aşağıdaki kırmızı ile belirtilen maddeleri incelemeye devam edeceğiz :
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
Makalemin ilk bölümüne aşağıdaki link üzerinden erişebilirsiniz
İlk bölümde olduğu gibi ö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 ve makale yayınlama takvimimize göre makalemizde belli dönemlerde güncellemeyi hedeflediğimiz tekrar vurgulamak istiyorum. İlk bölümde de belirttiğimiz gibi bu makalemizde 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 Sunucu Günlüklerinin Yapılandırılması
Bu başlıkta IIS 8.5 web sunucularda en-iyi-yapılandırma deneyimleri (best-practice) referans alınarak uygulanan web sunucu günlüklerinin yapılandırma standartlarını bulacaksınız.
Web Sunucularda Varsayılan IIS Logging Konumunun Taşınması
IIS web sunucular üzerinde ihtiyaca göre standart log kayıtlarının tutulması amaçlı Logging özelliği aktifleştirilmelidir. Bu sayede sunucu, web sitesi ve web uygulaması seviyesinde olay kayıtları alınarak ilgili sistem ya da servise yapılan bağlantılarla ilgili standart log günlükleri tutulmalıdır.
Oluşan log günlükleri yukarıdaki şekilde de görüldüğü gibi varsayılan konumlarından farklı bir disk sürücüsü üzerine taşınmalıdır. Böylece log büyümelerinde sistem diskinin performansa ya da disk alanına negatif etki edebilecek riskler minimuma indirgenmiş olacaktır.
Web Sunucularda Advanced Logging Etkinleştirilmesi
IIS web sunucular üzerinde ihtiyaca göre ileri seviye log kayıtlarının tutulması amaçlı Advanced Logging özelliği aktifleştirilmelidir. Advanced Logging IIS 8.5 ile gelen ve standart günlük kayıtları yerine ihtiyaca göre özel alanlara ait bilgileri de günlüklemeyi sağlayan bir yetenektir. Bu sayede sunucu, web sitesi ve web uygulaması seviyesinde log tutma aktifleştirilerek ilgili sistem ya da servise yapılan bağlantılarla ilgili detaylı log günlükleri tutulmaktadır. Log kayıtları içerisinde standart alanların dışında ihtiyaca göre özel alanlar da tanımlanabilir (örneğin istemcinin ip adresi gibi.). İleri seviyede günlük tutma yapılandırması için IIS 8.5 web sunucular üzerinde “Logging” bileşeni kullanılarak ileri seviye günlükleme yetenekleri aktifleştirilebilir:
Yine yukarıdaki şekilde de görüldüğü üzere oluşan log kayıtları sistem diski dışında farklı bir disk sürücüsü üzerinde saklanmalıdır.
Böylece log büyümelerinde sistem diskinin performansına ya da disk alanına negatif etki edebilecek riskler minimuma indirgenmiş olacaktır.
Yukarıdaki gibi özel alanlar eklendikten sonra IIS günlük metin dosya isimlerinin sonuna “_x” ilavesini yapacaktır. “_x” ibaresi günlük dosyası içerisinde özel bir alana ait günlük bilgilerinin tutulduğunu gösterir.
ASP.NET Yapılandırmaları
IIS üzerinden yayınlanan web sitesi içeriğine göre ASP.NET yapılandırmalarında da belli standartlar uygulanmaktadır. ASP.NET yapılandırma standartlarının uygulanması için web sunucumuz üzerinde ASP.NET bileşeninin de kurulmuş olması gerekir. Aşağıda PowerShell cmdlet’ler ile bu bileşenin kurulu olup olmadığını sorgulayıp, sonrasında da kurulumunu yapıyoruz:
IIS konsolu içerisine ASP.NET yapılandırma ayarlarını içeren kategori gelmiş olacaktır.
Artık şimdi ASP.NET için gerekli en iyi yapılandırma deneyimlerini etkinleştirebiliriz.
Debug Yeteneğinin Kapatılması
Uygulama geliştiriciler kod geliştirme sürecinde debug özelliğini aktifleştirirler ve genelde bu özellik bu şekilde kalır. IIS sunucu üzerinde ASP.NET yapılandırma ayarlarında debug özelliği kapatılarak sunucu seviyesinde bu özellik kapatılmalıdır. Böylece:
Potansiyel tehlike olan son kullanıcılara detaylı debug çıktısı vererek uygulamalar hakkında bilgi sahibi olmaları engellenmiş olacaktır.
Kod-seviyesinde açılmış debug özellikleri için savunma mekanizması oluşturuyor.
Debug kapatılması önerilen bir en iyi uygulama yöntemlerindendir.
Bilgi sızmalarına karşı da önemli bir yapılandırmadır.
.NET Özel Hata Sayfalarının Açık Tutulması
ASP.NET uygulaması başarısız olursa “HTTP/1.x 500 Internal Server” hatasına neden olduğunda ya da IIS kategorisindeki “Request Filtering” kurallarına takıldığında bir hata mesajı üretilecektir. Bu durumda kullanıcıya anlaşılır bir hata mesajı sayfası üretmek ya da göstermek isterseniz bu ayar önemlidir. Bu özellik kapalı durumda ise kullanıcıya çok genelleyici bir mesaj görüntülenecektir. Bu özellik açıksa oluşan hataya göre özel mesajlar üretilebilir. IIS sunucular üzerinde bu özelliği açık tutmanızı da öneriyoruz.
Web Sunucu İçerik Yönetim Yapılandırmaları
IIS Web sunucular üzerinden yayınlanan içeriğin yönetimi için merkezi yönetim, otomatik senkronizasyon, güncelleme ve güvenlik standartlarının da mutlaka uygulanmasını öneriyoruz. Şimdi de bunları inceleyelim.
DFS(Distributed File System) İle Merkezi İçerik Dağıtımı
DFS (Distributed File System), Windows sunucu sistemlerinde dosya sunucular için içerik çoğaltmak amacıyla kullanılan bir servistir. Özellikle dosya sunucusu (file server) rolüne sahip sunucular üzerinde File Server rolü altından etkinleştirilebilen bir alt bileşendir. Windows 2000 işletim sisteminden bu yana Windows Server işletim sistemleri üzerinde aynı isimle gelen ve kullanılan bir bileşen. Windows 2008 domain fonksiyonel seviyesi ve sonrası active directory yapılarında da SYSVOL içeriğinin domain controller sunucular arasında replikasyonunu gerçekleştiren DFS Replication bileşeninin de altyapısını oluşturur. Web sunucular için içerik yönetimi de son derece önem arzeden ve sürekli güncel tutulması gereken bir konu. Sahip olduğunuz web sunucu altyapınızda da yük dengeleme mimarisinde yedekli olarak çalışan çok sayıda web sunucuya sahipseniz bunlar üzerinden yayınlanan içeriklerde herhangi bir değişiklik olduğunda bu değişikliğin tüm diğer web sunuculara da tek tek kopyalanması gerekir. Web sunucular üzerindeki bu içerik senkronizasyonunu ya da çoğaltmasını merkezi olarak tek bir sunucu üzerinden gerçekleştirip diğer tüm web sunuculara da DFS altyapısını kullanarak otomatik olarak dağıtabilirsiniz. Bu amaçla web sunuculara ait içerik her web sunucunun kendi üzerinde ayrı ayrı tutuluyorsa tüm web sunuculara aynı zamanda File Server ve DFS Replication rollerini kurup DFS altyapısını oluşturabilirsiniz.
Oluşturulacak DFS altyapısı ile web sunucular üzerinde web içeriklerinin bulunduğu dizinler belirlenen rol dağılımına göre otomatik olarak senkronize edilecektir. DFS topolojisinde yer alan web sunuculardan bir tanesini Primary (Master) olarak seçip, diğerlerini de Replica Member olarak yapılandırıyoruz.
Böylece Primary (Master) sunucu üzerinde bulunan web site içeriklerine ait yapılacak bir güncelleme sonrasında güncellenen içerik ile beraber, güvenlik ayarları, dökümanların nitelikleri, özellikleri ve güvenlik ayarları birlikte (encryption, permission, compression vb.) diğer DFS Replica Member sunuculara belirlenen peryotlarda otomatik olarak senkronize olacaktır.Yapılan içerik senkronizasyonu ya da çoğaltması ile ilgili olarak rutin rapor kayıtları çekilerek operasyonel geçmişe ait raporlarda alınabilir. Böylelikle web site içerik güncellemelerinde yeni kodlar ya da içerikle tek bir sunucuya yüklenecek buradan da otomatik olarak saniyeler içerisinde diğer sunuculara DFS altyapısı ile çoğaltılmış olacaktır.
Robocopy Aracı İle İçerik Senkronizasyonu
Web sunucular üzerinde bulunun içeriğin çoğaltılması ya da senkronizasyonu için kullanılabilecek ikinci seçenek de Robocopy aracı olabilir. Robocopy aracı günümüzde Windows sunucu işletim sistemleri üzerinde yerleşik olarak gelen ve ileri seviye özelliklere sahip dosya transferi aracıdır. Yukarıda DFS servisi kullanılarak yapılan içerik senkronizasyonunu doğrudan Robocopy ile de gerçekleştirebilirsiniz. Benim önerim sunucular arasında içerik senkronizasyonu için DFS altyapısını kullanmanız. Eğer aynı sunucu üzerinde farklı klasör lokasyonları arasında (aynı disk birimi içerisinde ya da farklı disk birimlerinde konumlandırılmış klasörler olabilir) dosya senkronizasyon ihtiyacınızı olursa da burda Robocopy aracını kullanmanızı öneririm. Bu senkronizasyonda kaynak klasörden hedef klasöre gönderilen içerikle beraber, güvenlik ayarları, doküman nitelikleri, özellikleri (encryption, permission, compression vb.) belirlenen peryotlarda çoğaltılmaktadır.
Ağ Katmanında Web Sunucular İçin Yük Dengelemesi
Organizasyonunuzda bulunan IIS web sunucuları yedekli ve yük paylaşımını esas alan mimari standartlara göre bir altyapıda konumlandırmalısınız. Yük dengeleme ve yük paylaşımını fiziksel yük dengeleme cihazları ile yapabileceğiniz gibi Windows Network Load Balacing bileşenini ya da IIS’in Application Request Routing (ARR) bileşenini de kullanabilirsiniz. Benim önerim bu amaçla da IIS Web sunucu farm’ı içerisinde bulunan tüm sunucuların önünde fiziksel olarak yine yedekli mimaride çalışan yük dağıtım ve dengeleme cihazları (Load Balancer) konumlandırılmasıdır. Eğer fiziksel yük dengeleme cihazınız yoksa ya da bütçeniz müsait değilse de IIS’in ARR bileşeni ile bu yük dengelemeyi gerçekleştirmeniz olacaktır. (ARR’ın yük dengeleme dışında gelen isteklerin yönetilmesi ve yönlendirilmesi konularında ileri yetenekleri de mevcuttur.) Yük dengeleme cihazları üzerinde dışardan gelen bağlantının gitmek istediği hedef adrese göre tüm web sunucu tanımları yapılandırılmalı, sunucuların yük dağılımına göre otomatik olarak uygun sunucuya trafik yönlendirilmelidir. IIS web sunuculardan herhangi birinde yaşanacak bir kesinti ya da erişilememe durumunda yük dengeleme cihazı gelen istekleri diğer sunuculara yönlendirerek servis sürekliliğini de sağlamış olacaktır.
Dış Dünyaya Açık Web Sunucu Active Directory Domain Yapılarının Ayrılması
Sahip olduğunuz organizasyon bünyesinde bulunan active directory yapısını dış dünyaya servis veren IIS web sunucuları için kesinlikle kullanmamanız öneriyoruz. Dış dünyaya açık web sunucular için DMZ ağında tamamen izole bir active directory domain yapısı kurulmasını özellikle tavsiye ediyoruz. Bu oluşturulacak DMZ domainde belirlenen domain güvenlik standartları etkinleştirilerek web sunuculara uygulanmalıdır. DMZ ağında oluşturulacak active directory domain yapısında çalışan domain controller sunucular da yine birden fazla sayıda yedekli mimaride kurulmuş olmalıdır.
Diğer Yapılandırmalar
Buraya kadarki kısımda genel olarak dosya sunucular üzerinde uygulanmasını önerdiğimiz başlıkları ayrı ayrı inceledik. Bu başlık altında da genel olarak diğer uygulanması gereken standartları maddeler halinde bahsediyor olacağız:
IIS sunucularınızın periyodik olarak düzenli yedeklerini alın. Günlük ya da iki günde bir system state ve web içerik yedeklerini ihmal etmeyin. Özellikle yama geçişleri ya da yazılım güncellemeleri öncesinde de yine sunucunun son durumdaki bir yedeğini, eğer sanal ortamda ise de snapshot (checkpoint) kopyasını alın.
Sistem yöneticisi dışındaki hesaplar için IIS sunucular üzerinde minimum yetkileri tanımlayın. Böylece bu kullanıcıların web sunucular üzerine yazma ya da script çalıştırma gibi farklı zafiyetlere neden olabilecek aksiyonlarını engellemiş olacaksınız.
Yukarıda da belirttiğimiz gibi web trafiğinin ve verilerinizin güvenliği için SSL servisini mutlaka aktifleştirin. Özellikle bilgi girişi yapılan form vb. sayfalar için SSL’siz kullanım yapmamanızı tavsiye ediyoruz. Kullandığınız SSL güvenlikli servislere ait dijital sertifikaların bakımı, yedeklenmesi ve periyodik güncellemelerini, yenilemelerini kesinlikle ihmal etmeyin.
Basic authentication temel kimlik doğrulaması kullanılan tüm web servisleri için mutlaka SSL güvenliğini devreye alarak trafiği güvenli hale getirin. Aksi halde kullanıcı hesabınızdan verilerinize kadar herşey açık metin olarak kolaylıkla ele geçirilecektir.
Web siteleri üzerinde verilen delegasyon kurallarında varsayılan yetkilerin üzerinde yetkiler vermemeye mümkün olduğunca dikkat edin.
Web sunucularınızın sistem, performans, uygulama sağlığı, ağ bağlantıları ve servis ağacına ait sağlık durumlarını düzenli olarak profesyonel bir ürün ya da platform ile proaktif olarak izleyin. Böylece meydana gelebilecek olumlu ya da olumsuz durumların önceden farkında olarak gerekli aksiyonları ya da önlemlerinizi almış olursunuz. Bu konuda Microsoft System Center platformu içerisindeki System Center 2012 R2 Operations Manager (SCOM) ürünü ihtiyacınıza cevap verecektir. SCOM ile gelen yönetim paketlerini (management pack) kullanarak web sunucularınızın detaylı izlenmesini proaktif bir deneyimle gerçekleştirebilirsiniz.
Web sunucular üzerinde dönemsel olarak gerçekleştirilen operasyonel faaliyetler ya da zaman alan işlemler için yine Microsoft System Center platformu içerisindeki System Center 2012 R2 Orchestrator ürünü ile ya da PowerShell script çözümleri hazırlayarak bu rutin işleri mutlaka otomasyona bağlayın. Böylece günün birinde IIS günlüklerinden dolayı disk alanınızın kalmadığı ya da sunucu yama geçişlerinde atlanan bir prosedür ya da sunucudan dolayı oluşabilecek güvenlik zafiyetlerinden kaynaklı başınıza gelebilecek itibar ya da zaman kayıplarının önüne önceden geçmiş olacaksınız.
ÖZETLE :
İki bölümden oluşan bu makale serimizle 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 yapılandırmalarını sizlerle paylaştık. Umarım faydalı olmuştur. Bir sonraki makalemizde görüşmek dileğiyle, esenkalın.
Mesut ALADAĞ.
Microsoft MVP, MCT, P-TSP
www.cozumpark.com | www.mesutaladag.com