🔥 %50 İndirim! Al →
The Domain
Sunucu Yönetimi

Linux Sunucu Güvenlik Kontrol Listesi

22 Aralık 2025 9 dk okuma 268 görüntülenme
Linux Sunucu Güvenlik Kontrol Listesi

Linux Sunucu Güvenlik Kontrol Listesi

Bir Linux sunucusu yayına alındığında, güvenlik yapılandırması başlangıçta değil sürekli olarak yönetilmesi gereken bir süreçtir. İnternete açık her sunucu, dakikalar içinde otomatize botların tarama hedefi haline gelir. Zayıf parola kullanan SSH portları, yamalanmamış paketler veya hatalı yapılandırılmış güvenlik duvarı kuralları; veri ihlalleri, fidye yazılımı saldırıları ve hizmet kesintileri gibi ciddi sonuçlara yol açabilir. Bu rehber, Linux sunucunuzu korumaya almak için uygulamanız gereken temel güvenlik adımlarını kapsamlı biçimde ele almaktadır.

1. SSH Güvenliği

SSH (Secure Shell), Linux sunucularının en temel uzaktan erişim protokolüdür. Aynı zamanda en çok saldırıya uğrayan giriş noktasıdır. Varsayılan port 22 üzerinde çalışan SSH servisi, brute-force saldırılarının birincil hedefidir.

Anahtar Tabanlı Kimlik Doğrulama (Key-Based Authentication)

Parola tabanlı kimlik doğrulamayı devre dışı bırakıp SSH anahtar çiftleri kullanmak, güvenliği dramatik biçimde artırır. Anahtar tabanlı doğrulamada sunucuya giriş yapmak için şifreyi bilmek yetmez; özel anahtarın (private key) fiziksel olarak elinizde bulunması gerekir.

  1. Yerel makinenizde SSH anahtar çifti oluşturun: ssh-keygen -t ed25519 -C "kullanici@sunucu"
  2. Açık anahtarı sunucuya kopyalayın: ssh-copy-id kullanici@sunucu-ip
  3. /etc/ssh/sshd_config dosyasında şu değişiklikleri yapın:
  • PasswordAuthentication no — Parola ile girişi devre dışı bırakır
  • PubkeyAuthentication yes — Anahtar tabanlı girişi etkinleştirir
  • PermitEmptyPasswords no — Boş parola girişini engeller
  • MaxAuthTries 3 — Başarısız giriş denemesini sınırlar

SSH Portunu Değiştirme

Varsayılan 22. portu değiştirmek, otomatize tarama araçlarının büyük çoğunluğunu etkisiz kılar. Bu önlem tek başına yeterli bir güvenlik katmanı oluşturmasa da saldırı yüzeyini azaltır:

  • /etc/ssh/sshd_config dosyasında Port 22 satırını örneğin Port 2222 olarak değiştirin.
  • Güvenlik duvarında yeni portu açmayı unutmayın: ufw allow 2222/tcp
  • Değişiklikten sonra SSH servisini yeniden başlatın: systemctl restart sshd

Diğer SSH Güvenlik Ayarları

  • AllowUsers: Yalnızca belirli kullanıcıların SSH ile bağlanmasına izin verin.
  • LoginGraceTime 30: Giriş için verilen süreyi kısaltın.
  • ClientAliveInterval 300 / ClientAliveCountMax 2: Boşta kalan bağlantıları otomatik kapatın.
  • X11Forwarding no: Grafiksel arayüz yönlendirmeyi devre dışı bırakın (gerekli değilse).

2. Güvenlik Duvarı Yapılandırması: UFW ve iptables

Güvenlik duvarı, sunucunuza gelen ve giden ağ trafiğini denetleyen ilk savunma hattıdır. Ubuntu/Debian sistemlerinde UFW (Uncomplicated Firewall), CentOS/RHEL sistemlerinde ise firewalld veya doğrudan iptables yaygın olarak kullanılır.

UFW ile Temel Güvenlik Duvarı Yapılandırması

  • Tüm gelen trafiği varsayılan olarak reddedin: ufw default deny incoming
  • Tüm giden trafiğe izin verin: ufw default allow outgoing
  • SSH için izin verin (özel port kullanıyorsanız): ufw allow 2222/tcp
  • Web trafiğine izin verin: ufw allow 80/tcp ve ufw allow 443/tcp
  • UFW'yu etkinleştirin: ufw enable
  • Durumu kontrol edin: ufw status verbose

Gelişmiş iptables Kuralları

Daha ince taneli denetim için iptables kullanılabilir. Özellikle şu kurallar güvenliği artırır:

  • SYN flood koruması: TCP SYN paket hızını sınırlayarak DDoS saldırılarına karşı koruma sağlayın.
  • ICMP ping sınırlama: Ping isteklerini tamamen engellemeyin ancak hız limitini uygulayın.
  • Durum takibi (stateful filtering): -m state --state ESTABLISHED,RELATED -j ACCEPT ile yalnızca bağlantı kurulmuş paketlere izin verin.
  • Loopback arayüzüne izin verin: Yerel servisler arası iletişim için gereklidir.

3. Fail2ban ile Brute-Force Koruması

Fail2ban, başarısız giriş denemelerini izleyerek belirli bir eşiği aşan IP adreslerini otomatik olarak geçici yasaklayan bir güvenlik aracıdır. SSH, Nginx, Apache, Postfix ve diğer servisler için hazır filtreler sunar.

Fail2ban Kurulumu ve Yapılandırması

  • Kurulum: apt install fail2ban (Ubuntu/Debian) veya yum install fail2ban (CentOS)
  • /etc/fail2ban/jail.local dosyası oluşturarak jail.conf dosyasını geçersiz kılın (doğrudan jail.conf'u düzenlemeyin; güncellemelerle üzerine yazılır).

Önerilen temel yapılandırma:

  • bantime = 3600 — Yasaklama süresi (saniye): 1 saat
  • findtime = 600 — İzleme penceresi: 10 dakika
  • maxretry = 5 — İzin verilen başarısız deneme sayısı
  • SSH jail'i etkinleştirin: [sshd] bölümünde enabled = true olarak ayarlayın.
  • Servisini başlatın: systemctl enable --now fail2ban

Yasaklanan IP'leri görüntülemek için: fail2ban-client status sshd

4. Otomatik Güvenlik Güncellemeleri

Yamalanmamış açıklar, sunucu ele geçirmelerinin en yaygın nedenlerinden biridir. Güvenlik güncellemelerini zamanında uygulamak kritik önem taşır.

Ubuntu/Debian'da Otomatik Güncellemeler

  • unattended-upgrades paketini kurun: apt install unattended-upgrades
  • /etc/apt/apt.conf.d/50unattended-upgrades dosyasında yalnızca güvenlik güncellemelerini otomatikleştirin.
  • Günlük kontrol için /etc/apt/apt.conf.d/20auto-upgrades dosyasını yapılandırın.
  • E-posta bildirimleri için Unattended-Upgrade::Mail "admin@example.com" satırını ekleyin.

CentOS/RHEL'de Otomatik Güncellemeler

  • dnf-automatic paketini kurun ve yapılandırın.
  • systemctl enable --now dnf-automatic.timer ile zamanlayıcıyı etkinleştirin.

5. Dosya İzinleri ve Sahiplik

Yanlış yapılandırılmış dosya izinleri, yetkisiz erişimin önünü açar. Linux'ta dosya izin sistemi (rwx), düzgün yönetilmediğinde ciddi güvenlik açıkları yaratabilir.

  • Hassas dosyaları koruyun: /etc/passwd (644), /etc/shadow (640 veya 000), /etc/ssh/sshd_config (600) izinleri olmalıdır.
  • SUID/SGID bit'li dosyaları denetleyin: find / -perm /6000 -type f komutuyla listeleyip gereksizleri kaldırın.
  • Dünyaya yazılabilir dosyaları tespit edin: find / -perm -0002 -type f
  • umask değerini ayarlayın: Yeni oluşturulan dosyaların varsayılan izinlerini kısıtlamak için umask 027 kullanın.
  • Web dizinlerinde özel dikkat: Web sunucusu çalıştıran dizinlerde yazma izinlerini minimumda tutun.

6. Root Erişimini Kısıtlama

Root hesabıyla doğrudan SSH girişine izin vermek, en temel güvenlik hatalarından biridir. Root ele geçirilirse sunucu üzerinde tam kontrol sağlanmış demektir.

  • SSH ile root girişini devre dışı bırakın: sshd_config'de PermitRootLogin no olarak ayarlayın.
  • Sudo kullanan yönetici hesabı oluşturun: Günlük işlemler için sudo ayrıcalıklı ayrı bir kullanıcı oluşturun.
  • Sudo yetkilerini en aza indirin: /etc/sudoers dosyasını visudo ile düzenleyerek yalnızca gerekli komutlara izin verin.
  • Sudo loglarını kaydedin: Her sudo komutunun loglanması için Defaults logfile="/var/log/sudo.log" ekleyin.
  • Root parola girişini kilitleyin: passwd -l root komutuyla root hesabının parola ile girişini engelleyin.

7. Log İzleme ve Denetim

Güvenlik olaylarını gerçek zamanlı olarak izlemek, bir ihlali erken tespit etmenin en etkili yoludur.

Temel Log Dosyaları

  • /var/log/auth.log (Debian/Ubuntu) veya /var/log/secure (CentOS): Kimlik doğrulama denemeleri
  • /var/log/syslog: Genel sistem olayları
  • /var/log/fail2ban.log: Fail2ban eylemler
  • /var/log/nginx/access.log ve error.log: Web sunucusu erişim ve hata logları

Log İzleme Araçları

  • Logwatch: Günlük log özeti e-posta raporu gönderir.
  • Logrotate: Log dosyalarını otomatik döndürerek disk dolmasını engeller.
  • Auditd: Kernel düzeyinde dosya erişimi ve sistem çağrılarını denetler.
  • Ossec / Wazuh: Açık kaynaklı HIDS (Host-based Intrusion Detection System) çözümleri.

8. Yedekleme Stratejisi

En iyi güvenlik önlemi dahi %100 koruma garantisi vermez. Yedekleme, bir güvenlik ihlali veya donanım arızası durumunda iş sürekliliğini sağlamanın tek güvencesidir.

  • 3-2-1 yedekleme kuralı: 3 kopya, 2 farklı medya türü, 1 uzak lokasyon.
  • Otomatik günlük yedekleme: rsync, duplicati veya borgbackup gibi araçlarla cron tabanlı otomatik yedekleme kurgulayın.
  • Veritabanı yedeklemesi: MySQL/PostgreSQL veritabanları için dump ve şifreli aktarım.
  • Yedekleme bütünlüğünü test edin: Düzenli olarak yedekten geri yükleme testi yapın; test edilmemiş yedek, yedek sayılmaz.
  • Yedekleme erişimini kısıtlayın: Yedekleme hesapları yalnızca yazma iznine sahip olmalı; geri yükleme ayrı bir işlemle yapılmalıdır.

TheDomain Sunucu Hizmetleri ile Güvenli Altyapı

Kendi Linux sunucunuzu yönetmek kapsamlı teknik bilgi ve sürekli dikkat gerektirir. TheDomain olarak sunduğumuz VPS ve dedicated sunucu hizmetlerinde güvenlik yapılandırması konusunda deneyimli teknik ekibimiz size destek olur. Aylık düzenli güvenlik taraması, otomatik yedekleme ve 7/24 izleme hizmetleriyle sunucularınız güvende kalır.

Ayrıca TheDomain'in yönetilen sunucu (managed server) seçeneğiyle işletim sistemi güncellemelerinden güvenlik duvarı yapılandırmasına kadar tüm teknik yönetimi bize devredebilirsiniz. Siz işinize odaklanın, teknik altyapıyı bize bırakın.

Sonuç

Linux sunucu güvenliği, bir kez yapılıp tamamlanan bir proje değildir. SSH hardening ile başlayan bu liste, güvenlik duvarı, fail2ban, otomatik güncellemeler, dosya izinleri, root kısıtlaması, log izleme ve yedekleme ile bütünleşik bir güvenlik katmanı oluşturur. Her adım tek başına değerli olmakla birlikte, hepsinin birlikte uygulanması derinlemesine savunma (defense in depth) prensibini hayata geçirir.

Bu kontrol listesini düzenli aralıklarla gözden geçirin, yeni açıkları takip edin ve güvenlik yapılandırmanızı sürekli güncel tutun. Güvenli bir sunucu, başarılı bir dijital altyapının temel taşıdır.

Bu yazıyı paylaş:

Sorularınız mı Var?

Uzman ekibimiz size yardımcı olmaktan mutluluk duyar. Hemen iletişime geçin!

© Copyright 1984 - 2025 theDomain - Tüm Hakları Saklıdır

Sepetim (0)

Toplam 0.00 TRY
Sepeti Gör