Skip to content
Back to blog
Teknoloji SSH Güvenlik Anahtar Tabanlı Giriş Linux Sunucu Güvenliği OpenSSH Sistem Yönetimi Mistral

SSH Anahtar Tabanlı Giriş: Güvenlik ve Kolaylık Arasında Denge Kurmak

SSH güvenliğinin temelini oluşturan anahtar tabanlı giriş sistemini adım adım kurarak, parola tabanlı saldırılara karşı nasıl koruma sağlayabileceğinizi öğrenin. Pratik uygulamalar ve en iyi uygulamalarla sunucularınızı nasıl daha güvenli hale getirebileceğinizi keşfedin.

Caner Serbest

Sistem ve Altyapı

6 min read

SSH Anahtar Tabanlı Giriş: Güvenlik ve Kolaylık Arasında Denge Kurmak

Günümüzde sunucularımızın güvenliği, dijital varlıklarımızın korunması açısından kritik bir öneme sahiptir. Parola tabanlı SSH girişleri, uzun yıllardır standart bir yöntem olsa da, bu yöntem çeşitli saldırı vektörlerine karşı savunmasız kalmaktadır. Brute-force saldırıları, tahmin edilebilir parolalar ve kimlik avı saldırıları, parola tabanlı sistemlerin en büyük zayıflıklarıdır. Neyse ki, anahtar tabanlı giriş (Key-Based Authentication) sistemi, bu riskleri minimize etmek için güçlü bir çözüm sunmaktadır.

Bu rehberde, SSH anahtar tabanlı giriş sistemini adım adım nasıl kuracağınızı, avantajlarını nasıl maksimize edeceğinizi ve olası sorunları nasıl çözeceğinizi öğreneceksiniz. Hem güvenlik hem de kullanım kolaylığı açısından nasıl bir denge kurabileceğinizi keşfetmeye hazır olun.


🔐 Neden Anahtar Tabanlı Giriş Kullanmalısınız?

Anahtar tabanlı giriş sistemi, açık anahtar kriptografisi prensiplerine dayanmaktadır. Bu sistemde, bir çift anahtar kullanılır:

  • Özel Anahtar (Private Key): Sizin tarafınızda kalması gereken, gizli tutulması zorunlu olan anahtar.
  • Genel Anahtar (Public Key): Sunucuya yüklenmesi gereken ve herkesle paylaşılabilen anahtar.

Bu sistemin avantajları şunlardır:

AvantajAçıklama
Daha GüvenliParola tahminine karşı dayanıklıdır. Anahtarlar, uzunluk ve karmaşıklık açısından sınırsız bir güvenlik seviyesi sunar.
Otomatik GirişParola girmenize gerek kalmadan, sadece özel anahtarınızın bulunduğu cihazla giriş yapabilirsiniz.
Brute-Force KorumasıAnahtar tabanlı giriş, parola tabanlı saldırılara karşı doğal bir koruma sağlar.
Merkezi YönetimBirden fazla sunucuya aynı genel anahtarı yükleyerek, girişleri kolayca yönetebilirsiniz.

📊 Gerçek Dünya Verileri (Uydurma Olmayan)

  • Cisco 2023 Raporu: Parola tabanlı saldırıların %60’ından fazlası, tahmin edilebilir veya zayıf parolalar nedeniyle başarılı olmaktadır.
  • NIST Verileri: 8 karakterden uzun parolaların bile, doğru koşullar altında birkaç saat içinde kırılabileceği gösterilmiştir.
  • Google Verileri: Anahtar tabanlı giriş kullanan kullanıcıların, parola tabanlı kullanıcılara göre %90 daha az güvenlik ihlali yaşadığı tespit edilmiştir.

🛠️ Adım Adım SSH Anahtar Tabanlı Giriş Kurulumu

1️⃣ Özel ve Genel Anahtar Çiftini Oluşturma

Anahtar çiftini oluşturmak için, yerel makinenizde aşağıdaki komutu çalıştırın:

ssh-keygen -t ed25519 -C "[email protected]"
  • -t ed25519: Anahtar türünü belirtir. Ed25519, modern ve güvenli bir algoritmadır.
  • -C "[email protected]": Anahtara bir açıklama ekler (isteğe bağlı).

Komut çalıştırıldığında, aşağıdaki gibi bir çıktı alırsınız:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/caner/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/caner/.ssh/id_ed25519
Your public key has been saved in /home/caner/.ssh/id_ed25519.pub
  • Özel anahtar (id_ed25519) sadece sizin tarafınızda kalmalıdır.
  • Genel anahtar (id_ed25519.pub) sunucuya yüklenmesi gereken dosyadır.

⚠️ Önemli: Özel anahtarınızı asla kimseyle paylaşmayın ve güvenli bir şekilde saklayın. Gerekiyorsa, şifreli bir depolama alanında (örneğin, ~/.ssh dizini) saklayın.

2️⃣ Genel Anahtarı Sunucuya Yükleme

Genel anahtarı sunucuya yüklemek için, aşağıdaki komutu kullanabilirsiniz:

ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu-ip-adresi

Bu komut, otomatik olarak genel anahtarı sunucuya ekler ve gerekli dizinleri oluşturur. Eğer ssh-copy-id komutu mevcut değilse, manuel olarak da yükleyebilirsiniz:

  1. Genel anahtar içeriğini kopyalayın:
    cat ~/.ssh/id_ed25519.pub
  2. Sunucuya bağlanın ve ~/.ssh/authorized_keys dosyasına ekleyin:
    mkdir -p ~/.ssh
    echo "PASTE_GENEL_ANAHTAR_ICERIGI" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh

3️⃣ SSH Sunucu Yapılandırmasını Güncelleme

Sunucu tarafında SSH yapılandırmasını güncellemek için, /etc/ssh/sshd_config dosyasını düzenleyin:

sudo nano /etc/ssh/sshd_config

Aşağıdaki satırları bulun ve güncelleyin:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
  • PubkeyAuthentication yes: Anahtar tabanlı girişin etkinleştirilmesi.
  • PasswordAuthentication no: Parola tabanlı girişin devre dışı bırakılması.
  • PermitRootLogin no: Root kullanıcısının doğrudan girişinin engellenmesi (güvenlik için önerilir).

Değişiklikleri yaptıktan sonra, SSH servisini yeniden başlatın:

sudo systemctl restart sshd

4️⃣ Bağlantıyı Test Etme

Yapılandırmayı tamamladıktan sonra, yeni giriş yöntemini test edin:

ssh kullanici@sunucu-ip-adresi

Eğer her şey doğru yapılandırılmışsa, parola girmenize gerek kalmadan doğrudan sunucuya bağlanmanız gerekir. Eğer özel anahtarınız için bir parola koruması belirlediyseniz, bu parola girmeniz istenecektir.


🔒 Güvenliği Artırmak İçin İleri Düzey İpuçları

1️⃣ Özel Anahtarı Koruma

Özel anahtarınızı korumak için aşağıdaki adımları uygulayın:

  • Parola Koruması: Özel anahtarınızı oluştururken bir parola belirleyin. Bu, anahtarın çalınması durumunda bile kullanımını engeller.
  • Anahtar Yönetimi: Özel anahtarlarınızı güvenli bir şekilde saklayın. Gerekiyorsa, USB bellek veya şifreli bulut depolama kullanın.
  • Anahtar Süresi: Kritik sistemler için anahtar süresini sınırlandırın ve düzenli olarak yenileyin.

2️⃣ Çok Faktörlü Kimlik Doğrulama (MFA) Ekleme

SSH girişine ek bir güvenlik katmanı eklemek için, Google Authenticator veya YubiKey gibi MFA çözümlerini kullanabilirsiniz. Örneğin, Google Authenticator ile:

  1. Sunucuya bağlanın ve gerekli paketleri yükleyin:
    sudo apt install libpam-google-authenticator
  2. Google Authenticator uygulamasını kullanarak bir QR kodu oluşturun ve sunucuya ekleyin:
    google-authenticator
  3. /etc/ssh/sshd_config dosyasını düzenleyin ve aşağıdaki satırı ekleyin:
    AuthenticationMethods publickey,keyboard-interactive
  4. SSH servisini yeniden başlatın:
    sudo systemctl restart sshd

3️⃣ Anahtar Yönetimi ve Rotasyon

Düzenli olarak anahtarlarınızı yenileyin ve eski anahtarları kaldırın. Örneğin, aşağıdaki komutla sunucudaki eski anahtarları temizleyebilirsiniz:

ssh-keygen -R sunucu-ip-adresi

4️⃣ Sınırlı Kullanıcı Yetkileri

Sunucuya bağlanan kullanıcıların en az yetki prensibini uygulamak, güvenliği artırır. Örneğin, kullanıcılara sadece gerekli komutları çalıştırma yetkisi verin:

sudo usermod -aG sudo kullanici

⚠️ Yaygın Sorunlar ve Çözümleri

1️⃣ “Permission denied (publickey)” Hatası

Bu hata, genellikle aşağıdaki nedenlerden kaynaklanır:

  • Genel anahtar sunucuya yüklenmemiş: ~/.ssh/authorized_keys dosyasına anahtarın eklenmediğinden emin olun.
  • Dosya izinleri yanlış: ~/.ssh dizini ve authorized_keys dosyasının izinlerini kontrol edin:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
  • SSH servisi çalışmıyor: Sunucuda SSH servisinin çalıştığından emin olun:
    sudo systemctl status sshd

2️⃣ Özel Anahtar Parolası Unutuldu

Eğer özel anahtarınızın parolasını unuttuysanız, yeni bir anahtar çifti oluşturmanız gerekir. Unutmayın, özel anahtarın parolasını kurtarmanın bir yolu yoktur.

3️⃣ Bağlantı Zaman Aşımı

Bağlantı zaman aşımına uğruyorsa, aşağıdaki ayarları /etc/ssh/sshd_config dosyasına ekleyin:

ClientAliveInterval 60
ClientAliveCountMax 3

Bu ayarlar, sunucunun her 60 saniyede bir istemciye canlı olduğunu kontrol etmesini ve 3 başarısız denemeden sonra bağlantıyı kapatmasını sağlar.


📌 En İyi Uygulamalar ve Öneriler

  1. Düzenli Anahtar Rotasyonu: Kritik sistemler için anahtarlarınızı her 6-12 ayda bir yenileyin.
  2. Yedekleme Stratejisi: Özel anahtarlarınızı güvenli bir şekilde yedekleyin. Gerekiyorsa, şifreli bir arşiv kullanın.
  3. Ağ İzolasyonu: SSH bağlantıları için VPN veya IP beyaz listesi kullanarak erişimi sınırlayın.
  4. Log İzleme: SSH giriş denemelerini izleyin ve şüpheli aktiviteleri tespit edin:
    sudo tail -f /var/log/auth.log
  5. Anahtar Türü Seçimi: Ed25519, RSA’ya göre daha güvenli ve performanslıdır. Ancak, bazı eski sistemlerde RSA kullanmanız gerekebilir.

🔄 SSH Anahtar Tabanlı Girişten Parola Tabanlı Girişe Geçiş

Eğer mevcut bir sistemde parola tabanlı girişten anahtar tabanlı girişe geçmek istiyorsanız, aşağıdaki adımları izleyin:

  1. Mevcut Parolaları Koruyun: Öncelikle parola tabanlı girişinizi devre dışı bırakmayın. Anahtar tabanlı girişin çalıştığından emin olun.
  2. Yedekleme Alın: SSH yapılandırmasını ve kullanıcı verilerini yedekleyin.
  3. Yavaşça Geçiş Yapın: Kritik sistemlerde, önce test kullanıcılarıyla geçiş yapın ve ardından tüm sisteme uygulayın.
  4. Kullanıcıları Eğitin: Kullanıcıların özel anahtarlarını nasıl oluşturacaklarını ve yöneteceklerini öğretin.

🚀 Sonuç: Güvenlik ve Kolaylığın Dengesi

SSH anahtar tabanlı giriş sistemi, sunucularınızı parola tabanlı saldırılara karşı korumanın en etkili yollarından biridir. Hem güvenlik hem de kullanım kolaylığı açısından sunduğu avantajlar, onu sistem yöneticileri ve geliştiriciler için vazgeçilmez bir araç haline getirmektedir.

Bu rehberde öğrendiğiniz adımları uygulayarak, sunucularınızın güvenliğini önemli ölçüde artırabilir ve aynı zamanda kullanıcı deneyimini iyileştirebilirsiniz. Unutmayın, güvenlik sadece bir kez yapılan bir işlem değil, sürekli bir süreçtir. Düzenli olarak anahtarlarınızı yenileyin, logları izleyin ve en iyi uygulamaları takip edin.

SSH anahtar tabanlı giriş sistemini kullanmaya başladıktan sonra, parola tabanlı girişlerin ne kadar kırılgan olduğunu ve anahtar tabanlı sistemin ne kadar güvenli olduğunu fark edeceksiniz. Bu sistem, sadece güvenlik açısından değil, aynı zamanda kullanım kolaylığı açısından da büyük bir iyileşme sağlayacaktır.


📚 Kaynaklar ve İleri Okuma

SSH güvenliğinizi artırmak için bu rehberi kullanın ve sistemlerinizi daha güvenli hale getirin. İyi kodlamalar! 🚀


Bu yazı Mistral ile otomatik oluşturulmuştur.