Linux sunucu güvenliği, bir sunucuyu saldırılara karşı korumak için atılması gereken en kritik adımdır ve özünde üç temel ilkeye dayanır: yetkisiz erişimi engellemek, sistemi güncel tutmak ve saldırı yüzeyini en aza indirmek. Bu rehberde, SSH güvenliğinden güvenlik duvarı yapılandırmasına, fail2ban kurulumundan yedekleme stratejilerine kadar uygulanabilir tüm temel önerileri adım adım ele alıyoruz. Amacımız, ister yeni bir VDS kiralamış olun ister mevcut sunucunuzu sıkılaştırmak isteyin, size pratik ve doğrudan uygulanabilir bir yol haritası sunmaktır.
Bir sunucu internete açıldığı andan itibaren otomatik botların ve kötü niyetli aktörlerin hedefi haline gelir. Bu nedenle güvenlik, sunucu kurulduktan sonra düşünülecek bir lüks değil, kurulumun ilk dakikasından itibaren ele alınması gereken bir zorunluluktur. Sunucu sıkılaştırma (server hardening) olarak adlandırılan bu süreç, varsayılan ayarların ötesine geçerek sistemi katmanlı bir savunma yaklaşımıyla korumayı hedefler.
SSH Güvenliği: İlk Savunma Hattı
SSH, uzaktan sunucu yönetiminin temelini oluşturur ancak aynı zamanda saldırganların en sık denediği kapıdır. SSH güvenliğini sağlamlaştırmak, Linux sunucu güvenliğinin belkemiğini oluşturur. Varsayılan yapılandırma çoğu zaman güvenlik açısından yetersizdir ve mutlaka özelleştirilmelidir.
Root Erişimini Devre Dışı Bırakın
Doğrudan root erişimi, saldırganların en çok hedeflediği noktadır çünkü root hesabı her sunucuda mevcuttur ve sınırsız yetkiye sahiptir. /etc/ssh/sshd_config dosyasında PermitRootLogin no satırını ayarlayarak root ile doğrudan SSH girişini kapatmalısınız. Bunun yerine yetkili bir kullanıcı ile giriş yapıp sudo komutuyla yönetimsel işlemleri yürütmek çok daha güvenlidir.
Şifre Yerine SSH Anahtarı Kullanın
Şifre tabanlı kimlik doğrulama, kaba kuvvet (brute force) saldırılarına açıktır. Bunun yerine SSH anahtar çiftleri kullanmak güvenliği önemli ölçüde artırır. İstemcinizde ssh-keygen -t ed25519 komutuyla bir anahtar çifti oluşturup açık anahtarı sunucuya aktardıktan sonra, yapılandırma dosyasında PasswordAuthentication no ayarını yaparak şifreyle girişi tamamen kapatabilirsiniz. Bu sayede yalnızca özel anahtara sahip olanlar sunucuya bağlanabilir.
Varsayılan SSH Portunu Değiştirin
SSH'ın varsayılan 22 numaralı portu, otomatik tarama botlarının ilk denediği porttur. Portu örneğin 2222 gibi standart dışı bir değere taşımak, gürültü düzeyindeki otomatik saldırıları büyük ölçüde azaltır. Bu, tek başına bir güvenlik önlemi değildir ancak katmanlı savunmanın küçük ama etkili bir parçasıdır. Değişiklikten sonra systemctl restart sshd komutuyla servisi yeniden başlatmayı unutmayın.

Güvenlik Duvarı (Firewall) Yapılandırması
Güvenlik duvarı, sunucunuza gelen ve giden trafiği kontrol ederek yalnızca gerekli portların açık kalmasını sağlar. İyi yapılandırılmış bir firewall, saldırı yüzeyini dramatik şekilde küçültür. Temel prensip basittir: ihtiyacınız olmayan her şeyi kapatın.
UFW ile Basit Yönetim
Ubuntu ve Debian tabanlı sistemlerde UFW (Uncomplicated Firewall), iptables'a göre çok daha kolay bir arayüz sunar. Önce ufw default deny incoming ve ufw default allow outgoing komutlarıyla varsayılan politikayı belirleyin. Ardından yalnızca ihtiyaç duyduğunuz servisleri açın: ufw allow 2222/tcp (SSH), ufw allow 80/tcp ve ufw allow 443/tcp (web). Son olarak ufw enable ile güvenlik duvarını etkinleştirin.
firewalld ve iptables Alternatifleri
CentOS, AlmaLinux ve Rocky Linux gibi RHEL tabanlı dağıtımlarda firewalld varsayılan olarak gelir ve zone tabanlı bir yönetim sunar. Daha düşük seviyede tam kontrol isteyen yöneticiler ise doğrudan iptables veya modern nftables kurallarını kullanabilir. Hangi aracı seçerseniz seçin, kuralların kalıcı olarak kaydedildiğinden ve sunucu yeniden başladığında korunduğundan emin olun.
Sistem Güncellemeleri ve Yama Yönetimi
Bilinen güvenlik açıklarının büyük çoğunluğu, zamanında uygulanmayan güncellemeler yüzünden istismar edilir. Güncel bir sistem, yamalanmış açıkları sayesinde otomatik saldırılara karşı çok daha dayanıklıdır. Bu nedenle güncelleme yönetimi, sunucu güvenliğinin pazarlık edilemez bir parçasıdır.
Debian/Ubuntu sistemlerde düzenli olarak apt update && apt upgrade, RHEL tabanlı sistemlerde ise dnf update komutlarını çalıştırmalısınız. Kritik güvenlik yamalarının otomatik uygulanması için Ubuntu'da unattended-upgrades paketini etkinleştirmek iyi bir uygulamadır. Ancak otomatik güncellemelerin üretim ortamında beklenmedik kesintilere yol açabileceğini unutmayın; bu nedenle kritik sistemlerde güncellemeleri önce test ortamında denemek önerilir.
Güvenlik bir ürün değil, sürekli devam eden bir süreçtir. En güçlü güvenlik duvarı bile, aylardır güncellenmemiş bir sistemde bulunan tek bir açığı kapatamaz. Düzenli bakım, en pahalı güvenlik yazılımından daha değerlidir.
Fail2ban ile Otomatik Saldırı Engelleme
Fail2ban, log dosyalarını izleyerek başarısız giriş denemelerini tespit eden ve şüpheli IP adreslerini otomatik olarak engelleyen güçlü bir araçtır. Özellikle SSH ve web servislerine yönelik kaba kuvvet saldırılarına karşı son derece etkilidir. Fail2ban kurulumu, Linux sunucu güvenliği için neredeyse zorunlu bir adımdır.
Kurulum ve Temel Yapılandırma
Fail2ban'i apt install fail2ban veya dnf install fail2ban komutuyla kurabilirsiniz. Yapılandırmayı doğrudan ana dosya yerine /etc/fail2ban/jail.local dosyasında yapmak en iyi uygulamadır; böylece güncellemelerde ayarlarınız korunur. Burada maxretry (izin verilen deneme sayısı), bantime (engelleme süresi) ve findtime (deneme penceresi) parametrelerini ihtiyacınıza göre ayarlayabilirsiniz. SSH jail'ini etkinleştirip servisi başlattığınızda, belirlenen eşiği aşan IP adresleri otomatik olarak güvenlik duvarına eklenerek engellenir.
Kullanıcı Yetkileri ve Erişim Kontrolü
En az yetki ilkesi (principle of least privilege), her kullanıcının yalnızca işini yapmak için ihtiyaç duyduğu yetkilere sahip olması gerektiğini söyler. Bu ilke, bir hesap ele geçirilse bile zararın sınırlı kalmasını sağlar.
sudo Kullanımı ve Sınırlı Hesaplar
Günlük yönetim işlemleri için root yerine sudo yetkisine sahip normal bir kullanıcı oluşturun. usermod -aG sudo kullanici komutuyla bir kullanıcıyı sudo grubuna ekleyebilirsiniz. Hangi kullanıcının hangi komutları çalıştırabileceğini /etc/sudoers dosyasında ince ayarlarla sınırlandırmak, kritik sunucularda ek bir güvenlik katmanı sağlar. Kullanılmayan ve gereksiz hesapları düzenli olarak gözden geçirip devre dışı bırakın.
Parola Politikaları
SSH anahtarı kullansanız bile, sistemde tanımlı parolaların güçlü olması önemlidir. Minimum uzunluk, karmaşıklık ve düzenli değişim gibi politikaları PAM modülleri aracılığıyla zorunlu kılabilirsiniz. Ortak kullanılan zayıf parolaların kullanımını engellemek, hesap güvenliğinin temelidir.
Yedekleme ve Felaket Kurtarma
Hiçbir güvenlik önlemi yüzde yüz koruma garantisi vermez. Bu yüzden düzenli ve test edilmiş yedekler, son savunma hattınızdır. Bir fidye yazılımı saldırısı veya donanım arızası durumunda, çalışan bir yedek sahibi olmak ile tüm verileri kaybetmek arasındaki fark budur.
Yedekleme stratejinizde 3-2-1 kuralını benimseyin: verilerinizin en az üç kopyası, iki farklı ortamda ve bir kopyası sunucunun dışında (off-site) bulunmalıdır. Yedekleri otomatikleştirmek için rsync, restic veya borgbackup gibi araçları zamanlanmış görevlerle (cron) birlikte kullanabilirsiniz. En önemlisi, yedeklerinizi düzenli olarak geri yükleme testlerinden geçirin; test edilmemiş bir yedek, var olmayan bir yedektir.
İzleme, Loglama ve Ek Sıkılaştırma
Sunucunuzda neler olup bittiğini bilmek, saldırıları erken tespit etmenin anahtarıdır. Sistem loglarını düzenli izlemek, anormal davranışları fark etmenizi sağlar. journalctl, auditd ve merkezi log sunucuları bu konuda yardımcı olur.
Ek olarak, kullanmadığınız servisleri kapatmak saldırı yüzeyini azaltır. Çalışan servisleri systemctl list-units --type=service ile gözden geçirip gereksiz olanları devre dışı bırakın. SELinux veya AppArmor gibi zorunlu erişim kontrol mekanizmalarını etkin tutmak da derinlemesine savunma sağlar. Web sunucusu çalıştırıyorsanız mutlaka HTTPS kullanın ve TLS sertifikalarınızı güncel tutun.
Linux Sunucu Güvenliği Kontrol Listesi
Aşağıdaki tablo, bir sunucuyu sıkılaştırırken takip edebileceğiniz temel kontrol listesini öncelik düzeyleriyle birlikte özetler.
| Güvenlik Önlemi | İlgili Araç / Ayar | Öncelik |
|---|---|---|
| Root ile SSH girişini kapat | PermitRootLogin no | Kritik |
| SSH anahtar kimlik doğrulaması | ssh-keygen, PasswordAuthentication no | Kritik |
| Güvenlik duvarı yapılandırması | UFW / firewalld | Kritik |
| Sistem güncellemeleri | apt upgrade / dnf update | Kritik |
| Otomatik saldırı engelleme | fail2ban | Yüksek |
| En az yetki ilkesi | sudo, sudoers | Yüksek |
| Düzenli yedekleme | restic / borgbackup, 3-2-1 kuralı | Yüksek |
| SSH portunu değiştirme | sshd_config Port | Orta |
| Zorunlu erişim kontrolü | SELinux / AppArmor | Orta |
| Log izleme | journalctl, auditd | Orta |
Daha fazla detaylı içerik için Linux sunucu kategorimizi inceleyebilir, kendi projeniz için uygun bir altyapı arıyorsanız VDS sunucu kiralama seçeneklerimize göz atabilirsiniz.
Sıkça Sorulan Sorular
Linux sunucu güvenliği için ilk yapılması gereken nedir?
İlk adım, root ile doğrudan SSH girişini kapatmak ve SSH anahtar tabanlı kimlik doğrulamaya geçmektir. Ardından güvenlik duvarını yapılandırıp yalnızca gerekli portları açmak gelir. Bu üç adım, saldırıların büyük çoğunluğunu daha başlamadan engeller ve sunucu sıkılaştırmanın temelini oluşturur.
Fail2ban gerçekten gerekli mi?
Evet, internete açık her sunucu için fail2ban son derece değerlidir. SSH ve web servislerine yönelik kaba kuvvet saldırılarını otomatik olarak tespit edip ilgili IP adreslerini engeller. Kurulumu basit, kaynak tüketimi düşük olduğundan neredeyse her senaryoda kazançlı bir güvenlik katmanı sağlar.
SSH portunu değiştirmek güvenliği gerçekten artırır mı?
Port değiştirmek tek başına güçlü bir güvenlik önlemi değildir, çünkü kararlı bir saldırgan port taramasıyla yeni portu bulabilir. Ancak otomatik botların ürettiği gürültü düzeyindeki saldırıları belirgin şekilde azaltır. Bunu, SSH anahtarları ve fail2ban gibi asıl önlemlerin tamamlayıcısı olarak düşünmek gerekir.
Otomatik güncellemeleri açmalı mıyım?
Güvenlik yamalarının otomatik uygulanması çoğu durumda önerilir çünkü açıkların hızla kapatılmasını sağlar. Ancak üretim ortamlarında otomatik büyük sürüm güncellemeleri beklenmedik uyumluluk sorunlarına yol açabilir. İdeal yaklaşım, yalnızca güvenlik yamalarını otomatikleştirip diğer güncellemeleri kontrollü şekilde test ettikten sonra uygulamaktır.
Güvenlik duvarı varken başka önleme gerek var mı?
Kesinlikle evet. Güvenlik duvarı yalnızca bir savunma katmanıdır ve açık bırakmak zorunda olduğunuz portlar (örneğin web veya SSH) üzerinden gelen saldırıları engelleyemez. Bu nedenle güncellemeler, en az yetki ilkesi, fail2ban ve düzenli yedekleme gibi katmanlı bir savunma stratejisi şarttır.
