İçindekiler
- Sunucu güvenliği neden önemlidir?
- En yaygın sunucu güvenliği açıkları nelerdir?
- Sunucu güvenliği nasıl sağlanır: erişim katmanını güçlendirin
- Güncelleme ve yama yönetimi nasıl yapılır?
- Güvenlik duvarı ve port yönetimi
- Yedekleme, geri yükleme ve felaket kurtarma
- Log takibi, izleme ve saldırı tespiti
- Güvenli sunucu seçerken nelere bakılmalı?
- Kısa güvenlik kontrol listesi
Sunucu güvenliği nasıl sağlanır sorusunun kısa cevabı, tek bir ayar değil, katmanlı bir güvenlik düzenidir. Erişimleri sınırlamak, sistemi güncel tutmak, yalnız gerekli portları açmak, yedekleri test etmek ve logları izlemek birlikte çalıştığında gerçek koruma oluşur. Bu rehberde Linux ağırlıklı örneklerle ilerleyeceğiz, ancak ilkelerin çoğu Windows Server, panel kullanılan hosting ortamları ve özel uygulama sunucuları için de geçerlidir.
Sunucu tarafında güvenlik, kurulumdan sonra yapılacak isteğe bağlı bir bakım işi değildir. İlk kullanıcıyı oluşturduğunuz, ilk servisi internete açtığınız ve ilk veriyi yüklediğiniz andan itibaren başlar. Bir web sitesi, API, veritabanı, e-posta servisi veya test ortamı çalıştırıyor olabilirsiniz. Risk değişir, ama temel yaklaşım aynı kalır: saldırı yüzeyini küçültün, yetkileri azaltın, değişiklikleri kaydedin ve geri dönüş planını hazır tutun.
Sunucu güvenliği neden önemlidir?
Bir sunucunun ele geçirilmesi yalnızca dosyaların silinmesi anlamına gelmez. Saldırgan, sunucuyu zararlı e-posta göndermek, kripto madenciliği yapmak, başka sistemlere saldırmak, veritabanı bilgilerini almak veya ziyaretçileri sahte sayfalara yönlendirmek için kullanabilir. Bu nedenle sunucu güvenliği, hem veri gizliliği hem de hizmet sürekliliği açısından kritik bir konudur.
NIST’in genel sunucu güvenliği rehberi, sunucuların güvenli biçimde kurulması, yapılandırılması ve bakımının yapılmasını ayrı bir süreç olarak ele alır. Başka bir deyişle güvenlik, yalnızca antivirüs kurmak ya da güçlü parola seçmek değildir. Kullanıcı yönetimi, yama yönetimi, ağ kısıtları, loglama, fiziksel güvenlik, olay müdahalesi ve yedekleme aynı bütünün parçalarıdır. Daha teknik okumalar için NIST SP 800-123 Guide to General Server Security kaynağını inceleyebilirsiniz.
Pratikte hedefiniz, saldırganın işini zorlaştırmak ve olası bir ihlalde hasarı sınırlamaktır. Yönetici hesabı internete parola ile açıksa tek bir zayıf parola bütün sistemi riske atabilir. Buna karşılık SSH anahtarı, IP kısıtı, güvenlik duvarı, güncel paketler ve izlenen loglar varsa saldırı zincirinin birden fazla noktada kırılma ihtimali artar.
En yaygın sunucu güvenliği açıkları nelerdir?
Birçok ihlal, karmaşık tekniklerden önce temel eksiklerden yararlanır. Varsayılan kullanıcı adları, tahmin edilebilir parolalar, açık bırakılmış yönetim panelleri, güncellenmemiş uygulamalar ve gereksiz servisler bunların başında gelir. Özellikle internete açık SSH, RDP, veritabanı ve kontrol paneli portları dikkatli yönetilmelidir.
Yaygın açıkları şu başlıklarda toplayabilirsiniz:
- Zayıf kimlik doğrulama: Kısa parolalar, ortak kullanılan hesaplar, iki aşamalı doğrulama eksikliği.
- Güncel olmayan yazılımlar: İşletim sistemi, web sunucusu, PHP, CMS, eklenti ve panel güncellemelerinin gecikmesi.
- Aşırı açık portlar: Herkese açık veritabanı, test servisi, dosya paylaşımı veya yönetim arayüzleri.
- Yanlış dosya izinleri: Uygulama dosyalarının yazılabilir olması, gizli anahtarların herkes tarafından okunması.
- Yetersiz yedekleme: Yedeğin hiç alınmaması, aynı sunucuda tutulması veya geri yüklemenin test edilmemesi.
- Log izleme eksikliği: Başarısız giriş denemeleri, beklenmeyen servis yeniden başlatmaları ve yetki değişikliklerinin fark edilmemesi.
Sunucunuzu ilk kez kuruyorsanız önce envanter çıkarın: hangi servisler çalışıyor, hangi portlar açık, kimler yönetici, hangi uygulamalar dış dünyaya açık? Güvenlik planı bu liste olmadan eksik kalır.
Sunucu güvenliği nasıl sağlanır: erişim katmanını güçlendirin
Sunucu güvenliği nasıl sağlanır diye düşünürken ilk bakılacak yer erişimdir. Yönetici erişimi ele geçirilirse firewall, yedek ve uygulama ayarlarının çoğu değiştirilebilir. Bu nedenle root veya Administrator benzeri hesapları doğrudan internete açık bırakmamak gerekir.
Linux sunucularda önerilen başlangıç yaklaşımı şöyledir:
- Root ile ilk girişten sonra ayrı bir yönetici kullanıcısı oluşturun.
- Bu kullanıcıyı
sudoyetkisine ekleyin. - SSH anahtarı ile giriş yapın, parola ile SSH girişini kapatın.
- Root hesabının SSH üzerinden doğrudan bağlanmasını engelleyin.
- Mümkünse SSH erişimini yalnız belirli IP adresleriyle sınırlayın.
Örnek bir Ubuntu tabanlı sunucuda kullanıcı oluşturma:
adduser yonetici
usermod -aG sudo yonetici
İstemci bilgisayarınızda SSH anahtarı üretmek için:
ssh-keygen -t ed25519 -C "sunucu-erisimi"
ssh-copy-id yonetici@SUNUCU_IP_ADRESI
Ardından /etc/ssh/sshd_config dosyasında şu ayarları kontrol edebilirsiniz. OpenSSH tarafında kullanılabilen seçenekler için OpenSSH resmi kılavuzları temel başvuru kaynağıdır.
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Değişiklikten sonra SSH oturumunuzu kapatmadan yeni bir terminalde test yapın. Hatalı yapılandırma kendinizi sunucunun dışında bırakmanıza neden olabilir.
sshd -t
systemctl reload ssh
Windows Server tarafında da aynı mantık geçerlidir. RDP erişimini internete doğrudan açmak yerine VPN, IP kısıtı, güçlü hesap politikası, hesap kilitleme kuralı ve olay günlüğü takibi kullanılmalıdır. Yönetici hesabının adını değiştirmek tek başına güvenlik sağlamaz, ancak otomatik denemeleri azaltmaya yardımcı bir ek önlem olabilir.
Güncelleme ve yama yönetimi nasıl yapılır?
Güncelleme yapılmayan sunucu, bilinen açıklarla internete bağlı kalır. Saldırganlar yalnızca yeni açıkları değil, yıllardır bilinen ama kapatılmamış zafiyetleri de tarar. Bu yüzden işletim sistemi, çekirdek, servis paketleri, web sunucusu, veritabanı, programlama dili, CMS ve eklentiler için düzenli bir yama takvimi gerekir.
Ubuntu dokümantasyonu, güvenlik güncellemelerinin düzenli uygulanmasını ve uygun senaryolarda unattended-upgrades kullanımını açıklar. Ayrıntı için Ubuntu güvenlik güncellemeleri dokümantasyonuna bakabilirsiniz. Basit bir manuel kontrol şu komutlarla yapılabilir:
apt update
apt list --upgradable
apt upgrade
Otomatik güvenlik güncellemelerini kullanmak istiyorsanız:
apt install unattended-upgrades
systemctl status unattended-upgrades
Üretim ortamında otomatik güncelleme kararı dikkatli verilmelidir. Güvenlik yamalarını otomatik almak mantıklı olabilir, ancak veritabanı, dil sürümü veya kritik servislerde davranış değiştiren güncellemeleri önce test ortamında denemek daha güvenlidir. İyi bir yama yönetimi şu sırayla ilerler:
- Varlıkları listeleyin: işletim sistemi, servisler, paneller, uygulamalar, kütüphaneler.
- Kritik sunucuları sınıflandırın: müşteri trafiği, ödeme, veritabanı, yönetim paneli.
- Güncellemeleri test ortamında deneyin.
- Bakım penceresi belirleyin ve yedek alın.
- Güncellemeden sonra servis, port, log ve uygulama testlerini yapın.
Bir paketi güncellemeden önce mevcut yapılandırma dosyalarını ve uygulama verilerini yedekleyin. Güncellemenin başarılı olması, uygulamanın iş mantığı açısından sorunsuz çalışacağı anlamına her zaman gelmez.
Güvenlik duvarı ve port yönetimi
Güvenlik duvarı, sunucuya hangi trafiğin ulaşabileceğini belirleyen ana kontroldür. Temel kural basittir: Varsayılan olarak kapat, yalnız gerekli olanı aç. Bir web sunucusunda genellikle 80 ve 443 portları herkese açık olur. SSH, RDP, veritabanı, panel ve izleme servisleri ise herkese açık olmamalıdır.
Linux tarafında ufw ile sade bir başlangıç yapılandırması yapılabilir:
ufw default deny incoming
ufw default allow outgoing
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow from GUVENILIR_IP_ADRESI to any port 22 proto tcp
ufw enable
ufw status verbose
Açık portları görmek için:
ss -tulpn
nmap -Pn SUNUCU_IP_ADRESI
Veritabanı servisleri için mümkünse dış erişimi tamamen kapatın. MySQL, PostgreSQL, Redis ve benzeri servisler yalnız yerel ağdan veya uygulama sunucusundan erişilebilir olmalıdır. Uygulama ile veritabanı aynı makinedeyse servisleri 127.0.0.1 üzerinde dinletmek çoğu senaryoda daha güvenlidir.
| Kontrol | Risk azalttığı alan | Uygulama örneği |
|---|---|---|
| SSH anahtarı | Parola tahmini | PasswordAuthentication no |
| IP kısıtı | Yetkisiz yönetim erişimi | SSH veya RDP için yalnız güvenilir IP |
| Varsayılan kapalı firewall | Gereksiz servis açıklığı | ufw default deny incoming |
| Güncelleme takvimi | Bilinen zafiyetler | Haftalık kontrol, kritik yamada hızlı işlem |
| Merkezi loglama | Geç fark edilen saldırılar | Auth, web ve sistem loglarının izlenmesi |
| Test edilmiş yedek | Veri kaybı ve fidye yazılımı | Harici kopya, geri yükleme provası |
Bulutova sanal sunucu seçeneklerinde VPS, VDS ve Ryzen kademeleri root erişimi, Linux veya Windows seçenekleri ve gelişmiş firewall ile DDoS koruması gibi altyapı özellikleriyle kullanılabilir. Yine de işletim sistemi içindeki port, kullanıcı, yedek ve uygulama güvenliği sizin yapılandırmanızla tamamlanır; sanal sunucu seçerken bu sorumlulukları da planlamanız gerekir.
Yedekleme, geri yükleme ve felaket kurtarma
Yedek, yalnızca dosya kopyası değildir. Gerçek yedekleme, hangi verinin ne sıklıkla alınacağını, nerede saklanacağını, kimlerin erişebileceğini ve ne kadar sürede geri dönebileceğinizi tanımlar. Özellikle fidye yazılımı senaryolarında aynı sunucuda duran yedekler de şifrelenebilir veya silinebilir.
İyi bir yedekleme planında şu unsurlar bulunmalıdır:
- Veri ayrımı: Uygulama dosyaları, veritabanı, yapılandırma dosyaları ve kullanıcı yüklemeleri ayrı düşünülmelidir.
- Harici kopya: Yedekler yalnız üretim sunucusunda kalmamalıdır.
- Sürümleme: Tek bir son yedek yerine farklı tarihlerden kopyalar tutulmalıdır.
- Erişim kontrolü: Uygulama kullanıcısı yedek deposundaki eski kopyaları silememelidir.
- Geri yükleme testi: Yedek alınmış görünse bile geri dönülemiyorsa işe yaramaz.
Basit bir dosya yedeği örneği:
tar -czf /root/yedek-site-$(date +%F).tar.gz /var/www/site
mysqldump -u YEDEK_KULLANICI -p VERITABANI_ADI > /root/yedek-db-$(date +%F).sql
Bu komutlar başlangıç fikri verir, ancak tek başına yeterli değildir. Yedeği başka bir depoya aktarmalı, aktarımın başarılı olduğunu kontrol etmeli ve düzenli geri yükleme denemesi yapmalısınız. WordPress kullanıyorsanız dosya ve veritabanı ilişkisini ayrıca planlamak için WordPress yedekleme rehberini de inceleyebilirsiniz.
Log takibi, izleme ve saldırı tespiti
Sunucu güvenliği nasıl sağlanır sorusunun ihmal edilen bölümü görünürlüktür. Güvenlik önlemi almak kadar, neler olduğunu görmek de önemlidir. Loglar başarısız SSH denemelerini, yetki yükseltme işlemlerini, servis hatalarını, web isteklerini, uygulama istisnalarını ve şüpheli dosya değişikliklerini gösterebilir.
Linux sunucularda sık bakılan günlükler şunlardır:
/var/log/auth.log: SSH, sudo ve kimlik doğrulama kayıtları./var/log/syslog: Genel sistem olayları./var/log/nginx/access.logveerror.log: Nginx erişim ve hata kayıtları./var/log/apache2/access.logveerror.log: Apache erişim ve hata kayıtları.journalctl: systemd servis günlükleri.
Örnek kontroller:
grep "Failed password" /var/log/auth.log | tail
journalctl -u ssh --since "1 hour ago"
last -a
lastb -a
Logları yalnız olay sonrası incelemek yerine alarm üretir hale getirmek daha değerlidir. Çok sayıda başarısız giriş denemesi, beklenmeyen root oturumu, yeni kullanıcı oluşturulması, bilinmeyen cron görevi, web kök dizininde çalıştırılabilir dosya değişikliği veya ani trafik artışı uyarı sebebi olmalıdır.
Logların güvenliği de ayrıca düşünülmelidir. Saldırgan yönetici yetkisi elde ederse yerel logları silebilir. Bu yüzden kritik ortamlarda logların başka bir sisteme gönderilmesi, saat senkronizasyonunun düzgün olması ve erişimlerin sınırlanması gerekir. Zamanlanmış kontroller kurmak için cron job kullanımını öğrenmek işinizi kolaylaştırır.
Güvenli sunucu seçerken nelere bakılmalı?
Sunucu güvenliği yalnız işletim sistemi içinde başlamaz. Altyapı seçerken izolasyon, erişim modeli, ağ koruması, yedekleme imkanı, yönetim paneli, konsol erişimi ve destek kanalları değerlendirilmelidir. Özellikle VPS ve VDS ortamlarında kaynak izolasyonu, komşu sistemlerden etkilenme riskini azaltır. Dedicated veya fiziksel sunucu tarafında ise donanım ve ağ yönetimi daha fazla sorumluluk gerektirir.
Seçim yaparken şu soruları sorun:
- Sunucuda root veya yönetici erişimi var mı, bu erişim güvenli biçimde yönetilebiliyor mu?
- İşletim sistemi yeniden kurulum, konsol, yeniden başlatma ve kaynak takibi panelden yapılabiliyor mu?
- Firewall ve DDoS koruması gibi ağ seviyesi önlemler mevcut mu?
- Yedek veya snapshot alma süreci nasıl çalışıyor?
- Linux ve Windows seçenekleri projenizin ihtiyaçlarıyla uyumlu mu?
- Trafik arttığında CPU, RAM veya disk tarafında ölçekleme yapılabiliyor mu?
Eğer projeniz büyüyecekse başlangıçta en küçük kaynakla başlayıp daha sonra yükseltilebilir bir yapı seçmek yönetimi kolaylaştırır. Sunucu türleri arasında karar verirken sunucu çözümleri sayfasındaki seçenekleri ve VDS ile VPS farklarını anlatan VDS rehberini teknik gereksinimlerinizle birlikte değerlendirebilirsiniz.
Kısa güvenlik kontrol listesi
Sunucu güvenliği nasıl sağlanır sorusunu günlük iş akışına çevirmek için aşağıdaki listeyi kullanabilirsiniz. Yeni kurulumlarda bu listeyi baştan uygulayın, mevcut sunucularda ise maddeleri tek tek denetleyin.
- Varsayılan hesapları kontrol edin, gereksiz kullanıcıları kapatın.
- SSH için anahtar tabanlı giriş kullanın, root girişini devre dışı bırakın.
- Yönetim portlarını IP ile sınırlayın.
- Yalnız gerekli servisleri çalıştırın, açık portları düzenli kontrol edin.
- İşletim sistemi ve uygulama güncellemeleri için takvim belirleyin.
- Web uygulaması, panel, tema ve eklentileri güncel tutun.
- Dosya izinlerini en düşük yetki ilkesine göre düzenleyin.
- Harici ve sürümlü yedek alın, geri yüklemeyi test edin.
- Logları izleyin, kritik olaylar için uyarı tanımlayın.
- Değişiklikleri belgeleyin, acil durumda kimin ne yapacağını önceden belirleyin.
Güvenli sunucu yönetimi bir defalık kurulum değil, düzenli bakım disiplinidir. İlk aşamada erişim, firewall, güncelleme ve yedekleme adımlarını tamamlayın. Ardından log izleme, otomasyon, yapılandırma standardı ve olay müdahale planıyla sistemi olgunlaştırın. Böylece saldırı ihtimalini azaltır, sorun yaşandığında daha hızlı ve kontrollü şekilde geri dönebilirsiniz.
Sıkça Sorulan Sorular
Sunucu güvenliği için ilk yapılması gereken işlem nedir?
SSH portunu değiştirmek sunucuyu güvenli yapar mı?
Sunucu güncellemeleri ne sıklıkla yapılmalı?
Yedeklerin aynı sunucuda durması yeterli mi?
Firewall açıkken yine de saldırı olabilir mi?
Yazar
Sistem Yöneticisi
Onur Kaya, Bulutova'da sistem yöneticisi olarak sunucu altyapısının, sanallaştırma platformunun ve hosting hizmetlerinin kurulumundan ve işletilmesinden sorumludur. VDS ve VPS sunucular, Linux ve Windows Server yönetimi, DNS, kurumsal e-posta altyapısı ve web sitesi güvenliği konularında günlük operasyonda karşılaşılan sorunlarla doğrudan ilgilenir. Blogda bu deneyimden yola çıkarak teknik konuları herkesin uygulayabileceği, adım adım rehberlere dönüştürür.
Tüm yazıları