Sunucu Güvenliği Nasıl Sağlanır? Linux Sunucu İçin Temel Adımlar

Sunucu güvenliği tek bir araçla değil katmanlarla sağlanır. Yeni bir Linux sunucuda ilk gün yapılacaklar, güvenlik duvarı, SSH, güncelleme, erişim, izleme ve yedek için uygulanabilir kontrol listesi.

Piküp Medya Editör Ekibi· İçerik ve SEO editörlüğüSon güncelleme: 5 dk okumaWeb & Yazılım
Veri merkezinde sunucu rafları arasında laptopla kontrol yapan teknisyen

Sunucu güvenliği tek bir üründen değil, birbirini tamamlayan katmanlardan oluşur: güncel yazılım, yalnız gereken portların açık olduğu bir güvenlik duvarı, parola yerine anahtarla SSH girişi, herkese yalnız işi kadar yetki, düzenli izlenen kayıtlar ve sunucudan ayrı tutulan, geri yüklemesi denenmiş yedekler. Bu katmanlardan biri eksikse diğerleri açığı tam kapatmaz.

Aşağıdaki sıra, bir KOBİ'nin web sitesini ya da uygulamasını barındırdığı tipik bir Linux sanal sunucu (VPS) için yazıldı. Önce kurulumun ilk gününde yapılacakları, ardından sürekli uygulanması gereken rutinleri bulacaksınız.

Sunucular en çok nereden saldırı alır?

İnternete açık her sunucu, kurulduğu andan itibaren otomatik tarayıcıların hedefidir. Bu tarayıcılar kimseyi özel olarak seçmez; açık SSH portlarını, varsayılan parolaları ve yaması yapılmamış bilinen açıkları arar. Sık gördüğümüz sorunların çoğu da bu yüzden karmaşık saldırılardan değil, basit ihmallerden çıkar:

  • Parolayla açık bırakılmış SSH ya da yönetim paneli girişi
  • Güncellenmemiş işletim sistemi, içerik yönetim sistemi, eklenti veya kütüphane
  • İnternete açık bırakılmış veritabanı, önbellek ya da yönetim portu
  • Ayrılan çalışanların hâlâ geçerli olan hesapları ve anahtarları
  • Sunucuyla aynı yerde duran, bu yüzden saldırıda onunla birlikte kaybedilen yedekler

Yeni bir sunucuda ilk gün ne yapılmalı?

İlk kurulumda yapılan ayarlar, sonradan düzeltmeye çalışılanlardan çok daha kolaydır. Şu sırayı öneriyoruz:

  1. Sistemi güncelleyin. Sağlayıcının verdiği imaj çoğu zaman birkaç hafta ya da ay eskidir. İlk iş paket listesini yenileyip tüm güncellemeleri uygulayın.
  2. Kişisel bir yönetici hesabı açın. Günlük işleri root yerine, gerektiğinde yetki yükselten (sudo) kişisel bir hesapla yapın. Böylece kimin ne yaptığı kayıtlarda ayrışır.
  3. SSH'ı anahtara geçirin. Kendi bilgisayarınızda bir SSH anahtar çifti oluşturup açık anahtarı sunucuya ekleyin. OpenSSH'ın varsayılan ayarında parolayla giriş (PasswordAuthentication) açıktır; anahtarla girişi doğruladıktan sonra bunu kapatın ve root'un doğrudan girişini (PermitRootLogin) de tamamen kapatın.
  4. Güvenlik duvarını açın. Gelen trafiği varsayılan olarak reddedin; yalnız SSH, HTTP (80) ve HTTPS (443) gibi gerçekten kullanılan portlara izin verin.
  5. Otomatik güvenlik güncellemelerini doğrulayın. Ubuntu Server'da unattended-upgrades paketi varsayılan olarak kurulu ve etkindir, ama yalnız güvenlik güncellemelerini uygular ve varsayılan ayarda sunucuyu kendiliğinden yeniden başlatmaz. Çekirdek güncellemeleri için planlı bir yeniden başlatma zamanı belirleyin.
  6. Deneme saldırılarını yavaşlatın. Fail2ban gibi bir araç, kayıtlarda tekrar eden başarısız girişleri görüp ilgili IP adresini belirli bir süre engeller.

SSH ayarını değiştirirken mevcut oturumu kapatmadan ikinci bir pencerede yeni ayarla giriş yapabildiğinizi test edin. Aksi hâlde kendinizi sunucunun dışında bırakabilirsiniz.

Güvenlik duvarı ile WAF arasındaki fark ne?

Ağ seviyesindeki güvenlik duvarı hangi portlara kimin ulaşabileceğine karar verir. Bulut sağlayıcıların panelindeki güvenlik grupları ile sunucunun kendi üzerindeki güvenlik duvarını birlikte kullanmak, birinde yapılan yanlış ayarın diğerinde yakalanmasını sağlar.

Web uygulaması güvenlik duvarı (WAF) ise açık bırakmak zorunda olduğunuz 80 ve 443 portlarından gelen isteklerin içeriğine bakar; SQL enjeksiyonu ya da siteler arası betik (XSS) gibi bilinen saldırı kalıplarını engellemeye çalışır. WAF faydalıdır ama yamasız bir eklentinin yerini tutmaz; uygulama katmanındaki açığı kapatmanın asıl yolu güncellemedir.

Veritabanı (MySQL, PostgreSQL), Redis ve benzeri servislerin portları internete hiç açılmamalı. Bu servisleri yalnız sunucunun kendisinden ya da özel ağdan erişilebilir şekilde yapılandırın.

Güncellemeleri nasıl yönetmek gerekir?

İşletim sistemi güncellemeleri işin yarısıdır. Web sitelerinde açıkların büyük kısmı uygulama katmanında, yani içerik yönetim sisteminde, eklentilerde, temalarda ve npm ya da Composer ile gelen kütüphanelerde çıkar. Bunları da bir takvime bağlayın:

  • Güvenlik yamalarını mümkün olan en kısa sürede, diğer güncellemeleri planlı bir bakım penceresinde uygulayın.
  • Büyük sürüm geçişlerini önce test ortamında deneyin.
  • Kullanmadığınız eklenti ve temaları devre dışı bırakmakla yetinmeyip kaldırın.
  • Kritik açık duyurularını takip edin. Türkiye'de Ulusal Siber Olaylara Müdahale Merkezi (USOM) güvenlik duyuruları yayımlar; kullandığınız yazılımların kendi güvenlik bültenlerine de abone olun.

Erişim yönetimi nasıl kurulur?

En az yetki ilkesi basittir: her kişi ve her servis yalnız işini yapmasına yetecek kadar erişime sahip olur. Uygulamada bu şu demektir:

  • Paylaşılan root parolası ya da ortak hesap kullanılmaz; herkesin kendi hesabı ve kendi anahtarı olur.
  • Ekipten ayrılan kişinin anahtarı aynı gün kaldırılır. OpenSSH'ın AllowUsers ayarıyla SSH'a girebilecek kullanıcıları açıkça sınırlayabilirsiniz.
  • Plesk, cPanel gibi yönetim panellerinde ve sağlayıcı hesabında iki adımlı doğrulama açılır; mümkünse panel yalnız belirli IP adreslerinden erişilebilir olur.
  • Uygulama parolaları ve API anahtarları kod deposuna yazılmaz; ortam değişkeni ya da gizli anahtar yöneticisinde tutulur.

Neyi izlemelisiniz?

Kayıt tutulmayan bir sunucuda bir sorun olduğunu çoğu zaman site çöktüğünde fark edersiniz. En azından şu sinyalleri izleyin: başarısız ve başarılı girişler, yeni eklenen kullanıcı ya da anahtar, beklenmedik şekilde yükselen işlemci kullanımı, dolmakta olan disk, sunucudan dışarıya giden olağan dışı trafik. NIST'in genel sunucu güvenliği rehberi de kayıt tutmayı ve bu kayıtları düzenli incelemeyi temel güvenlik faaliyetleri arasında sayar.

Birden fazla sunucunuz varsa kayıtları merkezi bir yerde toplamak ve kritik olaylar için e-posta ya da mesaj uyarısı kurmak, sorunu saatler yerine dakikalar içinde görmenizi sağlar.

Yedek neden güvenliğin parçası?

Fidye yazılımı ya da silinmiş veri gibi senaryolarda son çare yedektir, ama yalnız sunucudan ayrı bir yerde duruyorsa. Yedeklerin ayrı bir hesapta, sürümlü ve mümkünse değiştirilemez biçimde tutulması, saldırganın sunucuyla birlikte yedekleri de silmesini engeller. Geri yüklemesi hiç denenmemiş bir yedeğe güvenmek de risklidir. Yöntemleri ve test planını sunucu yedekleme ve kurtarma yazımızda ayrıntılı anlattık.

Paylaşımlı hosting, VPS ve yönetilen sunucuda sorumluluk kimde?

Paylaşımlı hostingde işletim sistemi ve sunucu yazılımının güvenliği sağlayıcıdadır; sizin sorumluluğunuz sitenizin kendisi, eklentileri ve panel parolanızdır. VPS'te ise işletim sisteminden itibaren her şey sizdedir. Yönetilen sunucu hizmetinde bu yük bir ekiple paylaşılır; hangi işin kimde olduğunu sözleşmede yazılı olarak netleştirmek gerekir. Hangi altyapının size uygun olduğunu VPS ve VDS farkı yazımızda karşılaştırdık.

Trafiğin şifrelenmesi de bu tablonun parçasıdır; sitenizin geçerli bir sertifikayla yalnız HTTPS üzerinden sunulması gerekir. Ayrıntılar için SSL sertifikası yazımıza bakabilirsiniz.

Kısaca kontrol listesi

  • Sistem ve uygulama güncel, güvenlik güncellemeleri otomatik
  • SSH yalnız anahtarla, root girişi kapalı, izinli kullanıcılar sınırlı
  • Güvenlik duvarında yalnız kullanılan portlar açık, veritabanı dışarıya kapalı
  • Herkesin kendi hesabı var, ayrılanların erişimi kaldırılmış, panellerde iki adımlı doğrulama açık
  • Giriş denemeleri, kaynak kullanımı ve yeni hesaplar izleniyor
  • Yedekler sunucudan ayrı, sürümlü ve geri yüklemesi test edilmiş

Kendi sunucunuzun durumunu birlikte gözden geçirmek isterseniz sunucu ve altyapı hizmetimizi inceleyebilirsiniz.

Bu yazı sende ne uyandırdı?

İlk tepkiyi sen ver

Faydalı mıydı?

Faydalı bulduysan paylaş:

Sık sorulan sorular

SSH portunu değiştirmek sunucuyu daha güvenli yapar mı?

Varsayılan 22 numaralı portu değiştirmek, kayıtlardaki otomatik tarama gürültüsünü azaltır ama gerçek bir koruma sağlamaz; port taraması yapan biri yeni portu kolayca bulur. Asıl koruma, parolayla girişi kapatıp yalnız anahtarla girişe izin vermek ve root girişini kapatmaktır.

Linux sunucuya antivirüs kurmak gerekir mi?

Bir Linux web sunucusunda asıl risk, yaması yapılmamış yazılım ve zayıf erişim ayarlarıdır; antivirüs bunların yerini tutmaz. Kullanıcıların dosya yüklediği ya da e-posta işleyen sunucularda ise ClamAV gibi bir tarayıcıyla yüklenen dosyaları kontrol etmek anlamlı bir ek katman olabilir.

Sunucunun saldırıya uğradığı nasıl anlaşılır?

Tanımadığınız süreçler, sebepsiz yüksek işlemci kullanımı, sizin eklemediğiniz kullanıcı veya SSH anahtarı, değişmiş site dosyaları ve sunucudan giden toplu e-posta tipik belirtilerdir. Böyle bir durumda sunucuyu ağdan ayırın, kayıtları saklayın, temiz yedekten yeniden kurun ve tüm parola ile anahtarları değiştirin.

Sunucu güvenliği ne sıklıkla kontrol edilmeli?

Güncellemeleri haftalık, kullanıcı ve anahtar listesini aylık, yedekten geri yüklemeyi en az üç ayda bir kontrol etmek iyi bir başlangıç ritmidir. Yılda bir kez de CIS Benchmarks gibi bağımsız bir yapılandırma rehberini referans alarak sertleştirme ayarlarını baştan gözden geçirmenizi öneririz.

Kaynaklar

  1. SP 800-123, Guide to General Server Security — NIST, 2008-07
  2. sshd_config(5) - OpenBSD manual pages — OpenBSD / OpenSSH
  3. Automatic updates - Ubuntu Server documentation — Canonical
  4. CIS Benchmarks — Center for Internet Security
  5. USOM — Ulusal Siber Olaylara Müdahale Merkezi — USOM

İlgili yazılar

İlgili hizmetler