Sunucu Güvenliği İçin Yapılması Gerekenler
Sorumluluğun hangi katmanda kimde olduğu, ilk gün yapılması gereken sertleştirme adımları, güvenlik duvarı mantığı, sertifika yönetimi ve zamanla oluşan yapılandırma kayması.
İnternete açılan bir sunucu, açıldıktan kısa süre sonra otomatik tarama trafiğiyle karşılaşır. Bu taramalar belirli bir hedefe yönelik değildir; varsayılan ayarlarla bırakılmış her sunucuyu arar. Bu yüzden ilk gün yapılanlar, sonraki aylarda yapılacakların hepsinden daha belirleyicidir.
Sunucu kimin sorumluluğunda?
Sertleştirmeye başlamadan önce yanıtlanması gereken soru şu: bu sunucuda hangi katman size ait? Barındırma biçimine göre sorumluluk sınırı değişir ve bu sınırın yanlış varsayılması, en sık karşılaşılan güvenlik boşluğunu üretir.
- Paylaşımlı hosting: işletim sistemi ve sunucu yazılımı sağlayıcının sorumluluğundadır. Size kalan, uygulamanızın ve panel hesaplarınızın güvenliğidir.
- Yönetilmeyen sanal veya fiziksel sunucu: sağlayıcı yalnızca donanım ve ağ bağlantısını sağlar. İşletim sistemi güncellemesi, güvenlik duvarı, yedekleme ve izleme tamamen sizdedir.
- Yönetilen sunucu: kapsam sözleşmeye bağlıdır. Güncellemenin dahil olup olmadığını ve yedeğin gerçekten alınıp alınmadığını yazılı olarak doğrulayın.
En yaygın yanılgı, sağlayıcının anlık görüntü (snapshot) özelliğini yedekleme sanmaktır. Anlık görüntü, aynı altyapıda duran ve genellikle kısa süre saklanan bir kopyadır; hesabınız kapandığında veya sağlayıcı tarafında bir sorun çıktığında o da gider. Ayrı bir ortamda tutulan bir yedeğin yerini tutmaz.
Erişimi kısıtlayın
Saldırıların büyük bölümü karmaşık açıklardan değil, açık bırakılmış kapılardan geçer. İlk iş erişimi daraltmaktır:
- SSH erişimini parola yerine anahtar tabanlı hâle getirin ve parola ile girişi tamamen kapatın.
- Root kullanıcısıyla doğrudan girişi engelleyin; yetkili işlemler sudo üzerinden yapılsın.
- Yönetim portlarını yalnızca bilinen IP adreslerine açın; mümkünse VPN arkasına alın.
- Kullanılmayan servisleri kapatın — çalışmayan bir servis saldırıya uğrayamaz.
- Varsayılan parolaları değiştirin; bu, veritabanı ve panel hesapları için de geçerlidir.
Anahtar tabanlı SSH tek başına, sunucuya yönelik kaba kuvvet denemelerinin neredeyse tamamını işlevsiz bırakır. Parola denemek için yapılan binlerce girişim, denenecek bir parola alanı kalmadığında anlamsız hâle gelir.
Güvenlik duvarı: varsayılan reddetme
Güvenlik duvarı kurarken iki yaklaşım vardır. Birincisi her şeyi açık bırakıp tehlikeli olanları kapatmak. İkincisi her şeyi kapatıp yalnızca gerekeni açmak. Doğru olan ikincisidir.
Birinci yaklaşım er ya da geç bir şeyin gözden kaçmasıyla sonuçlanır; çünkü kapatılması gerekenlerin listesi sonsuzdur, açılması gerekenlerin listesi ise kısa ve bilinir. Tipik bir web sunucusunda dışarıya açık olması gereken port sayısı üçü geçmez.
Güncellemeler
Güvenlik güncellemelerini otomatik hâle getirin, ancak sunucu yeniden başlatma gerektiren güncellemeleri planlı bakım penceresine bırakın.
Burada sık yapılan bir hata var: otomatik güncelleme açık ama aylardır yeniden başlatılmamış bir sunucu, çekirdek güncellemelerini gerçekten uygulamamış olabilir. Paket güncellenmiştir ama çalışan sistem hâlâ eski sürümdedir. Bu yüzden yalnızca güncelleme çıktısına bakmak yanıltıcıdır; yeniden başlatma gerekip gerekmediği de kontrol edilmelidir.
Sertifikalar ve şifreli trafik
Sunucuya giden trafiğin şifrelenmesi artık istisna değil, varsayılan olmalıdır. Ücretsiz sertifika sağlayıcıları sayesinde bunun maliyet tarafı büyük ölçüde ortadan kalktı. Asıl mesele kurulum değil, süreklilik.
Ücretsiz sertifikalar kısa süreli verilir ve otomatik yenilenecek şekilde kurulur. Buradaki kırılgan nokta şudur: yenileme başarılı olsa bile, yeni sertifikanın devreye girmesi için ilgili servisin yeniden yüklenmesi gerekir. Bu adım eksik kaldığında sunucu diskinde geçerli bir sertifika durur ama ziyaretçiler süresi dolmuş uyarısı görür.
Bu yüzden yenilemenin kendisine değil, sonucuna bakan bir kontrol kurulmalıdır: sertifikanın bitiş tarihi dışarıdan izlenmeli ve süre belirli bir eşiğin altına indiğinde uyarı üretmelidir. Süresi dolmuş sertifika, işletmelerin yaşadığı en görünür ve en kolay önlenebilir kesintilerden biridir.
Yetkilendirme ve hesap disiplini
Her uygulamanın kendi kullanıcısıyla çalışması gerekir. Web sunucusunun root yetkisiyle çalıştığı bir yapıda, o uygulamada bulunan küçük bir açık tüm sunucunun ele geçirilmesine yol açar.
Aynı şekilde veritabanı kullanıcıları yalnızca kendi veritabanlarına erişebilmeli, geliştiricilere verilen erişimler proje bittiğinde kaldırılmalıdır. Erişim listesinin düzenli gözden geçirilmesi, sunucu güvenliğinin en çok ihmal edilen parçasıdır.
İzleme ve kayıt
Disk doluluğu, kaynak kullanımı ve başarısız giriş denemeleri izlenmelidir. Bir saldırı girişimi genellikle önce kayıtlarda görünür: aynı IP adresinden gelen yüzlerce başarısız giriş, bir şeylerin denendiğinin açık işaretidir.
Ancak kimsenin bakmadığı kayıt dosyası yalnızca yer kaplar. Kayıt tutmakla izleme farklı şeylerdir. En azından disk doluluğu ve servis erişilebilirliği için otomatik uyarı kurulmalıdır; bu, bakılmayan bir kayıt dosyasından çok daha değerlidir.
Yapılandırma zamanla bozulur
İlk gün özenle sertleştirilmiş bir sunucu, altı ay sonra aynı sunucu değildir. Bir entegrasyon için geçici olarak açılan port kapatılmayı bekler, bir sorunu çözmek için genişletilen yetki daraltılmayı unutur, test amacıyla kurulan bir servis çalışmaya devam eder. Bu birikime yapılandırma kayması denir ve saldırıların önemli bir kısmı özel bir açıktan değil, tam olarak bu birikimden faydalanır.
Çözüm, sunucuda yapılan her kalıcı değişikliğin kayıt altına alınmasıdır. Kaydın biçimi ikinci meseledir; bir metin dosyası da yeterlidir. Önemli olan iki bilginin yazılı olmasıdır: ne değiştirildi ve neden. 'Neden' yazılmadığında, aylar sonra o ayarı kimse geri almaya cesaret edemez.
Buna ek olarak geçici değişikliklerin bitiş tarihi belirlenmelidir. 'Şimdilik açalım' cümlesiyle açılan bir port, bir hatırlatma kurulmadığı sürece kalıcıdır.
Yedeği unutmayın
Güvenliğin son katmanı yedektir. Alınan tüm önlemlere rağmen bir sorun yaşandığında, çalışan bir yedek sizi tekrar ayağa kaldıran tek şeydir. Sunucu yedeği yalnızca veriyi değil, yapılandırmayı da kapsamalıdır; aksi hâlde geri dönüş, sistemi sıfırdan kurmak anlamına gelir.
Kurulum sonrası kontrol listesi
- SSH anahtar tabanlı, parola girişi kapalı, root girişi engelli.
- Güvenlik duvarı varsayılan olarak reddediyor, yalnızca gerekli portlar açık.
- Otomatik güvenlik güncellemesi açık, yeniden başlatma penceresi planlı.
- Her servis kendi kullanıcısıyla çalışıyor.
- Yedekleme kurulu ve geri dönüşü test edilmiş.
- Disk ve servis izleme uyarıları tanımlı.
- Sertifika bitiş tarihi dışarıdan izleniyor.
- Yapılan kalıcı değişiklikler gerekçesiyle birlikte kayıt altında.