SSH GÜVENLİĞİ VE TEMEL SELINUX YÖNETİMİ

Sunucu erişiminin güçlendirilmesi: SSH port değiştirme, parola/Root erişimini kapatma, anahtar tabanlı (Key-based) kimlik doğrulama konfigürasyonu ve zorunlu SELinux politikalarının yönetimi.

KRİTİK GÜVENLİK UYARISI: Root ile SSH erişimini kapatmadan önce, mutlaka standart bir kullanıcının (`sudo` yetkisi olan) oluşturulduğundan ve bu hesapla bağlanabildiğinizden emin olun. Aksi takdirde sunucuyu kilitleme riski vardır!

Bölüm 1: SSH Servis Konfigürasyonu (sshd_config)

SSH ayarları, **`/etc/ssh/sshd_config`** dosyasında yapılır. Her değişiklik sonrası SSH servisi yeniden başlatılmalıdır.

Adım Adım Güvenlik Sertleştirmesi

  1. **Konfigürasyon Dosyasını Açma:** `vi` veya `nano` (varsa) ile dosyayı Root yetkisiyle açın.
    sudo vi /etc/ssh/sshd_config
  2. **Varsayılan Portu Değiştirme (Port Knocking):** Varsayılan 22 numaralı portu, bilinmeyen bir porta (Örn: 2222) değiştirin. Bu, otomatik taramaları (bots) engeller.
    # Bulun ve değiştirin (veya yorum satırını kaldırın):
    Port 2222
  3. **Root Girişini Engelleme:** Root hesabı ile doğrudan SSH bağlantısını yasaklayın (Tüm yönetim `sudo` ile yapılmalıdır).
    # Bulun ve değiştirin:
    PermitRootLogin no
  4. **Parola ile Girişi Kapatma (Key-Based Login Zorlama):** Yüksek güvenlik gerektiren ortamlarda, sadece SSH anahtarı (Key) olanların girmesini sağlayın.
    # Bulun ve değiştirin:
    PasswordAuthentication no
    **Kritik:** Bu ayarı yapmadan önce, Bölüm 2'deki Anahtar (Key) tabanlı kimlik doğrulamanın çalıştığından emin olun!
  5. **SSH Servisini Yeniden Başlatma:** Değişikliklerin aktif olması için SSH servisini yeniden başlatın:
    sudo systemctl restart sshd
  6. **Firewall'da Yeni Portu Açma:** Güvenlik duvarınızda (Firewalld) yeni portu (Örn: 2222/tcp) açmayı unutmayın!
    sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
    sudo firewall-cmd --reload

Bölüm 2: Anahtar (Key) Tabanlı Kimlik Doğrulama

SSH anahtarları, parolanın aksine kırılması neredeyse imkansız olan şifreli bir el sıkışma (handshake) yöntemi kullanır. En güvenli SSH bağlantı yöntemidir.

Adım Adım Anahtar Oluşturma ve Kopyalama

  1. **Anahtar Oluşturma (İstemci Tarafında):** Kendi iş istasyonunuzda (client) SSH anahtar çiftinizi oluşturun.
    # RSA anahtarı oluşturur (Genellikle id_rsa olarak kaydedilir)
    ssh-keygen -t rsa -b 4096
    **Sonuç:** `id_rsa` (Özel Anahtar/Private Key - Kimseyle Paylaşılmaz) ve `id_rsa.pub` (Genel Anahtar/Public Key - Sunucuya Kopyalanır) dosyaları oluşur.
  2. **Genel Anahtarı Sunucuya Kopyalama:** `ssh-copy-id` komutu ile genel anahtarınızı (`id_rsa.pub`) sunucudaki kullanıcı hesabınızın (`mustafa`) Home dizinindeki `.ssh/authorized_keys` dosyasına kopyalayın.
    ssh-copy-id mustafa@sunucu-ip
    **Alternatif:** Eğer `ssh-copy-id` yoksa, içeriği manuel olarak `~/.ssh/authorized_keys` dosyasına yapıştırın ve izinlerini `chmod 600 ~/.ssh/authorized_keys` olarak ayarlayın.
  3. **Anahtar ile Bağlantıyı Test Etme:** Parola girmeden, doğrudan SSH anahtarı ile bağlanmayı deneyin:
    ssh -i ~/.ssh/id_rsa mustafa@sunucu-ip -p 2222

Bölüm 3: SELinux (Security-Enhanced Linux) Yönetimi

SELinux, Linux çekirdeğine entegre edilmiş zorunlu erişim kontrolü (MAC - Mandatory Access Control) sağlayan bir güvenlik mekanizmasıdır. Geleneksel izinlerden (rwx) farklı olarak, süreçlerin ve dosyaların etkileşimini, önceden tanımlı güvenlik bağlamlarına (Contexts) göre kısıtlar.

SELinux Modları ve Yönetimi

  1. **Mevcut SELinux Modunu Görüntüleme:**
    sestatus
    **Modlar:**
    • **Enforcing (Zorlayıcı):** Politikaları uygular ve reddedilen eylemleri günlüğe kaydeder. (Kurumsal standarttır)
    • **Permissive (İzin Verici):** Politikaları uygulamaz, sadece reddedilen eylemleri günlüğe kaydeder (Sorun giderme için kullanılır).
    • **Disabled (Devre Dışı):** SELinux tamamen kapalıdır. (Önerilmez)
  2. **Modu Geçici Olarak Değiştirme (Sorun Giderme İçin):**
    # Enforcing moduna geçiş
    sudo setenforce 1
    
    # Permissive moduna geçiş
    sudo setenforce 0
  3. **Kalıcı Mod Konfigürasyonu:** `/etc/selinux/config` dosyasını düzenleyerek kalıcı modu ayarlayın (Yeniden başlatma gerektirir).
    # /etc/selinux/config dosyasındaki satır:
    SELINUX=enforcing

Temel SELinux Sorun Giderme

  1. **SELinux Bağlamını (Context) Görüntüleme:** Bir dosyanın veya dizinin güvenlik etiketini (context) kontrol edin (Örn: Web sunucusu dizinleri `httpd_sys_content_t` olmalıdır).
    ls -Z /var/www/html/
  2. **Bağlamı Geri Yükleme (Restorecon):** Yanlış bir güvenlik bağlamına sahip dosyaların etiketlerini varsayılan değerlere geri yükler. (En sık kullanılan sorun giderme komutudur.)
    sudo restorecon -Rv /var/www/html
  3. **Hata Loglarını Görüntüleme:** SELinux'un engellediği eylemleri görmek için audit günlüklerini kontrol edin.
    sudo journalctl -xe | grep "SELINUX"
ACİL DURUM KONTROLÜ (SSH): SSH ayarlarında değişiklik yaparken daima **ikinci bir SSH oturumunu açık tutun**. Yeni ayarları uyguladıktan sonra yeni bir terminal açıp bağlanmayı deneyin. Başarılı olursa eski oturumu kapatın. Aksi halde kilitleme durumunda eski oturumdan düzeltme yapabilirsiniz.

← ÖNCEKİ: FIREWALLD & PORT YÖNETİMİ | SONRAKİ: APACHE KURULUMU →