Web sunucusu güvenliğini güçlendirmek, tek bir ayarı açmaktan ibaret değildir; sunucunun saldırıya açık yüzeyini ve olası bir ihlalin etkisini kontrollü biçimde azaltmayı amaçlayan sürekli bir süreçtir. Hardening (güvenlik sıkılaştırması) olarak da bilinen bu çalışma; işletim sistemini, web sunucusunu, ters proxyyi, uygulama çalışma zamanını, dosyaları ve ağ erişimini ayrı güvenlik katmanları olarak ele alır.

Başarılı bir plan önce neyin korunacağını ve hangi trafiğin gerçekten gerekli olduğunu belirler. Bundan sonra güncelleme, en az yetki, erişim sınırlama, sistem kayıtları, test ve geri alma için açık kurallar gerekir; tek bir ürün bu görevlerin tümünü karşılamaz.

Web Sunucusu Güvenliğini Güçlendiren Temel Kararlar

  • Korunacak hizmetleri, verileri, yönetim yollarını ve kabul edilemez sonuçları içeren bir tehdit modeli oluşturun.
  • İşletim sistemi, web sunucusu, ters proxy, uygulama çalışma zamanı ve eklentiler için destek ve güncelleme durumunu kaydedin.
  • Yalnız gerekli portları, hizmetleri, modülleri ve istek yöntemlerini açık bırakın; diğerlerini kaldırın veya kapatın.
  • Sunucu süreçlerini en az yetkiyle çalıştırın; içerik, yükleme dosyaları, yapılandırma dosyaları, özel anahtarlar ve sistem kayıtları için ayrı dizinler kullanın.
  • Güvenlik duvarı, TLS, WAF ve sistem kayıtlarını farklı riskleri yöneten katmanlar olarak planlayın.
  • Her değişikliği gerçek kullanımı temsil eden bir ortamda test edin, kademeli uygulayın ve doğrulanmış geri alma adımlarını hazır tutun.

Güvenlik Planında Tehdit Modeli

Sıkılaştırma planı sunucunun gerçek kullanımına göre hazırlanır. Yalnız statik dosya sunan bir site ile kullanıcı girişi, dosya yükleme, yönetim paneli ve harici servis bağlantıları bulunan bir uygulamanın riskleri aynı değildir. Güvenlik kontrolü seçmeden önce hizmetin işlevini, internete açık noktaları ve güven sınırlarını belgelemek gerekir. İstek yolu, uygulama özellikleri veya tehdit durumu değiştiğinde planı yeniden gözden geçirin.

Varlıklar ve Güven Sınırları

Envanter yalnız alan adı ve web sunucusu adından oluşmaz. İşletim sistemi, sanal makineler veya konteynerler, ters proxy, uygulama çalışma zamanı, veritabanı bağlantısı, sertifika anahtarları, yükleme dizinleri, yedekler ve yönetim hesapları da planın parçasıdır.

  • İnternetten doğrudan hangi bileşene bağlantı geliyor?
  • TLS hangi katmanda sonlandırılıyor ve kaynak sunucuya trafik nasıl ulaşıyor?
  • Yönetim erişimi kimlere, hangi ağlardan ve hangi kimlik doğrulama yöntemiyle veriliyor?
  • Web süreci hangi dosyaları okuyabiliyor, yazabiliyor veya çalıştırabiliyor?
  • Bir bileşen ele geçirilirse saldırgan hangi diğer sistemlere erişebilir?

Saldırı Yolları ve Olası Etkiler

Bilinen yazılım açıkları, ele geçirilmiş yönetim hesabı, hatalı dosya izni, kötü amaçlı yükleme, isteklerle sunucu kaynaklarının tüketilmesi ve proxy başlıklarına yanlış güvenilmesi ayrı saldırı yollarıdır. Her saldırı yolu, oluşma ihtimali ve yol açabileceği veri kaybı, içerik değişikliği veya hizmet kesintisiyle birlikte değerlendirilir. En görünür tehdit her zaman en yüksek önceliği almaz; en geniş yetkiye veya en uzun kesintiye yol açacak senaryolar da hesaba katılır.

Web İsteğinin İzlediği Yol ve Katmanların Sorumlulukları

Web isteğinin izlediği yol, hangi kontrolün nerede uygulanacağını belirler. Aşağıdaki matris, katmanların temel sorumluluklarını birbirine karıştırmadan planlamaya yardımcı olur.

KatmanKontrol Edilecek KonuSıkılaştırma Hedefi
Ağ ve güvenlik duvarıİzin verilen giriş ve çıkış trafiğiYalnız gerekli adres ve portlarda giriş veya çıkış bağlantısına izin vermek
Ters proxy veya yük dengeleyiciTLS sonlandırma, kaynak sunucu erişimi ve istemci bilgilerinin hangi proxylerden kabul edileceğiKaynak sunucuyu doğrudan erişimden ayırmak ve yalnız güvenilir proxylerden gelen bilgileri kabul etmek
Web sunucusuDinlenen adres ve portlar, sanal hostlar, modüller ve web içeriği diziniGereksiz işlevleri kaldırmak ve içerik erişimini sınırlamak
Uygulama çalışma zamanıHesap, soket veya port, dosya ve dış ağ izinleriUygulamanın yalnız gereken kaynaklara ulaşmasını sağlamak
WAFKural seti, izleme, engelleme ve istisna yönetimiŞüpheli HTTP isteklerini belirlemek ve uygun kurallarla sınırlamak
Sistem kayıtları ve yedeklerKayıt türleri, saklama, bütünlük ve geri yüklemeOlayı inceleyebilmek ve sistemi önceki güvenilir durumuna döndürebilmek

Ters proxy kullanılan yapılarda kaynak sunucunun yalnız proxy katmanından trafik kabul etmesi çoğu durumda saldırı yüzeyini daraltır. Kaynak sunucu, istemci IP adresi gibi iletilen bilgileri yalnız güvenilir proxylerden geldiğinde kullanmalıdır. Güvenlik kuralları, internetten gelen rastgele başlıkları kimlik veya erişim kararı verirken kullanmaz.

Yazılımları Güncel Tutma ve Gereksiz Bileşenleri Kaldırma

Güncelleme yönetimi ile gereksiz bileşenleri kaldırma aynı hedefi destekler: bilinen açıklardan ve kullanılmayan işlevlerden doğan saldırı yollarını azaltmak. Bu çalışma yalnız web sunucusu paketini değil, ona bağlı bütün yazılım zincirini kapsar.

Apache ve Nginx güvenliği aynı temel hedeflere dayanır, ancak modül adları, yapılandırma söz dizimi ve desteklenen seçenekler ürüne ve sürüme göre değişir. Planın genel yapısı üründen bağımsız kalabilir, ancak uygulama adımlarını kullanılan işletim sistemi ile web sunucusunun güncel resmi belgeleriyle eşleştirin.

Desteklenen Bileşenlerin Envanteri

Envantere işletim sistemini, web sunucusunu, modülleri, kriptografi kitaplıklarını, uygulama çalışma zamanını, paket depolarını, ters proxyyi ve WAF bileşenlerini ekleyin. Her kayıtta güncel sürümü ve sorumlu ekibi belirtin; desteği biten veya güvenlik güncellemesi almayan bileşenleri yükseltin, değiştirin ya da geçici olarak yalıtın.

Normal güncellemeler ile acil güvenlik değişiklikleri için ayrı akışlar belirleyin. Güncelleme sonrasında yalnız kurulum sonucuna bakmayın; paket sürümünü, hizmetin yeniden başladığını, yapılandırmanın yüklendiğini ve temel işlevlerin çalıştığını da doğrulayın.

Gereksiz Hizmet ve Modüllerin Kapatılması

Varsayılan kurulumla gelen her özellik üretim ortamında gerekli değildir. Kullanılmayan proxy işlevlerini, betik çalıştırma desteğini, dizin listelemeyi, örnek uygulamaları, durum sayfalarını, uzaktan yönetim servislerini ve geliştirme araçlarını kaldırın veya kapatın. Kaldırılamayan bileşenlerin devre dışı kaldığını yapılandırma denetimiyle izleyin.

Bu adım tek seferlik değildir. Yeni bir uygulama özelliği veya eklenti eklerken hangi modülün neden açıldığını, değişikliği kimin onayladığını ve bileşen artık gerekmediğinde nasıl kaldırılacağını kaydedin.

Yalnız Gerekli Ağ Erişimine İzin Verme

Güvenlik duvarı yalnız gerekli trafiğe izin verir. Web hizmetinin kullandığı portlar dışındaki yönetim portlarını genel internete kapatın. Yönetim erişimini mümkünse ayrı bir ağ, VPN, yönetim geçidi veya açıkça tanımlanmış kaynak adreslerle sınırlandırın. Sunucunun dışarı yaptığı bağlantıları da uygulamanın gerçek gereksinimleriyle sınırlandırın.

Sabit çıkış IP adresine dayalı izin listesi kullanılıyorsa IP Adresim, kullanılan bağlantının dışarıdan görülen adresini kontrol etmeye yardımcı olabilir. Tarayıcı ile sunucu yönetim bağlantısının aynı ağ çıkışını ve aynı adres ailesini (IPv4 veya IPv6) kullandığını ayrıca doğrulayın; farklı VPN, proxy veya yönlendirme ayarlarında kaynak adresleri aynı olmayabilir. Dinamik IP adresi kullanan bağlantılarda bu yöntem tek başına kalıcı erişim kontrolü sayılmaz; kilitlenme riskine karşı alternatif bir yönetim yolu gerekir.

En Az Yetki ve Dosya Erişimi

En az yetki ilkesi, her kullanıcıya ve sürece yalnız görevini yapması için gereken izinlerin verilmesidir. Web sunucusu veya uygulama süreci ele geçirildiğinde, bu sınırlama saldırganın yapılandırmaya, anahtarlara, sistem kayıtlarına ve diğer uygulamalara erişimini daraltabilir.

Hizmet ve Yönetim Hesaplarını Ayırma

Web isteklerini işleyen süreçleri ayrı ve ayrıcalıksız bir hizmet hesabıyla çalıştırın. Ürünün ana süreci başlatma veya port açma için daha yüksek yetki gerektiriyorsa bu yetkiyi istek işleyen süreçlere taşımayın. Dağıtım yapan hesap, sistem kayıtlarını inceleyen hesap ve sunucunun günlük yönetimini üstlenen hesap aynı olmak zorunda değildir. Uygulama çalışma zamanı ayrı bir süreçse yalnız gerekli yerel sokete, porta ve dosyalara erişebilen farklı bir hesap kullanılabilir.

Yönetim erişiminde güçlü kimlik doğrulama, kişiye özel hesaplar ve kayda alınabilen işlemler kullanın. Paylaşılan yönetici parolaları, sürekli tam yetkiyle çalışma ve web sürecine etkileşimli oturum açma hakkı verilmesi etki alanını gereksiz büyütür.

İçerik, Yüklenen Dosyalar, Özel Anahtarlar ve Sistem Kayıtlarını Ayırma

Yayımlanan içeriği çoğu durumda web süreci için salt okunur tutun. Kullanıcı yüklemelerini ayrı bir dizinde tutun; bu alanda betik veya ikili dosya çalıştırmayı engelleyin ve boyut, tür, kota ile saklama kurallarını uygulamanın gereksinimine göre belirleyin.

Yapılandırma dosyalarını ve özel anahtarları web içeriği dizininin dışında tutun; bu dosyalara yalnız ihtiyaç duyan sürecin erişmesine izin verin. Sistem kayıtlarını web sürecinin değiştiremeyeceği veya silemeyeceği bir hedefe aktarın; en azından merkezi bir kopya, bütünlük kontrolü ve doluluk takibi kullanın.

TLS, Güvenlik Duvarı ve WAF Arasındaki Görev Ayrımı

Katmanlı güvenlik, aynı kontrolü farklı adlarla tekrarlamak değildir. TLS aktarım sırasında gizlilik ve bütünlük sağlar, güvenlik duvarı ağ akışını sınırlar, WAF ise uygulamaya giden HTTP trafiğini kurallara göre inceler. Bu katmanlardan hiçbiri diğerinin görevini tam olarak üstlenmez. HTTP yanıtındaki güvenlik başlıkları da ayrı bir kontrol alanıdır; başlıkların doğru olması, işletim sistemi ve dosya izinlerinin de güvenli yapılandırıldığını göstermez.

TLS Sonlandırma Noktası

Sertifika ve özel anahtarın hangi bileşende tutulacağı, yenilemenin nasıl izleneceği ve kaynak sunucuya giden bağlantının nasıl korunacağı web isteğinin izlediği yola göre belirlenir. Ters proxy ile kaynak sunucu arasındaki ağ güvenilir değilse bu bağlantıda da uygun kimlik doğrulama ve şifreleme kullanın.

Protokol ve şifreleme seçeneklerini kullanılan ürünün güncel resmi belgelerine ve geçerli standartlara göre seçin. TLS, ağ üzerinden dinleme ve değiştirme riskini azaltır; hatalı yetkilendirmeyi, zayıf parolayı veya yazılabilir içerik dizinini düzeltmez.

ModSecurity'nin WAF Katmanındaki Rolü

ModSecurity, HTTP istek ve yanıtlarını kurallara göre inceleyebilen açık kaynaklı bir WAF motorudur. OWASP Core Rule Set gibi kural kümeleri yaygın saldırı kalıplarını tespit etmeye yardımcı olabilir, ancak uygulamadaki açığı kapatmaz ve güvenli kod, güncelleme, kimlik doğrulama veya dosya izinlerinin yerine geçmez.

WAF devreye alınırken gerçek kullanımı temsil eden trafikte oluşan kayıtları, geçerli isteklerin yanlışlıkla engellendiği durumları (yanlış pozitifleri), istisnaları ve performans etkisini izleyin. Engelleme kurallarını kademeli olarak etkinleştirin; her istisnanın kapsamını ve gerekçesini kaydedin.

İzleme ve Alarm Eşikleri

Sistem kayıtlarını toplamak tek başına izleme değildir. Hangi olayların kaydedileceğini, kayıtların nerede korunacağını, incelemeyi kimin yapacağını ve hangi alarmların müdahale gerektirdiğini önceden belirlemek gerekir.

  • Erişim ve hata kayıtlarıyla birlikte yönetim oturumlarını, kimlik doğrulama hatalarını, yapılandırma değişikliklerini, WAF olaylarını ve hizmet yeniden başlatmalarını kaydedin.
  • Sunucunun saatini güvenilir kaynaklarla eşitleyin ve kritik sistem kayıtlarının ayrı bir hedefte kopyasını tutun.
  • Beklenmeyen 4xx veya 5xx artışı, tekrarlanan erişim reddi, sıra dışı istek yöntemleri, yükleme hacmi, işlem çökmesi, disk doluluğu ve yapılandırma bütünlüğü için alarm eşikleri tanımlayın.
  • Parolaları, oturum belirteçlerini, özel anahtarları, gereksiz istek gövdelerini ve kişisel verileri sistem kayıtlarına yazmayın; saklama süresini olay inceleme ihtiyacıyla sınırlandırın.

Alarm eşiklerini normal trafik davranışına göre ayarlayın. Çok hassas eşikler sürekli yanlış alarm üretirken, yalnız yüksek hacimli olaylara bakan eşikler yavaş ilerleyen kötüye kullanımı kaçırabilir.

Değişiklik, Test ve Geri Alma Akışı

Sıkılaştırma değişiklikleri güvenliği artırmayı amaçlasa da yanlış yapılandırma hizmet kesintisine, istemci uyumsuzluğuna veya yönetim erişiminin kaybolmasına yol açabilir. Bu nedenle değişiklik yönetimi güvenlik planının ayrılmaz parçasıdır.

  1. Mevcut portları, süreçleri, modülleri, izinleri, sertifika durumunu ve temel trafik değerlerini başlangıç noktası olarak kaydedin.
  2. Yapılandırmayı sürümlü biçimde saklayın; içeriğin, anahtarların, sistem kayıtlarının ve diğer sistem verilerinin yedekten geri yüklenmesini test edin.
  3. Geri almayı başlatacak koşulları, sorumlu kişiyi, önceki yapılandırmayı yükleme adımlarını ve değişiklik sonrası doğrulamayı önceden yazın.
  4. Yapılandırma söz dizimi, hizmet başlangıcı, TLS bağlantısı, uygulama işlevleri, yükleme, yönetim erişimi ve sistem kayıtlarının oluşması için beklenen sonuçları belirleyin.
  5. Değişikliği üretime yeterince benzeyen bir test ortamında, gerçek işlevleri temsil eden isteklerle bu sonuçlara göre doğrulayın.
  6. Üretime geçişi mümkünse küçük bir sunucu grubunda veya sınırlı trafikle başlatın; hata oranı, gecikme, kaynak tüketimi ve WAF olaylarını izleyin.

Geri alma işlemi, güvenlik açığı bulunan eski duruma süresiz dönmek için kullanılmaz. Bir yama veya kural işlev bozukluğuna yol açarsa geri dönülecek sürümün riskini değerlendirin. Bilinen bir açığı yeniden erişime açmadan önce etkilenen bileşeni yalıtın veya açığın kullanılmasını engelleyen geçici bir koruma uygulayın. Bu koruma altında hizmeti doğrulayıp düzeltilmiş değişikliği yeniden hazırlayın.