SSH Güvenliği: Anahtar Tabanlı Giriş ile Parolaları Tamamen Devre Dışı Bırakma
SSH bağlantılarında parola yerine RSA, ECDSA veya Ed25519 anahtarları kullanarak güvenliği artırmanın ve parola tabanlı saldırıları engellemenin adım adım rehberi.
Caner Serbest
Sistem ve Altyapı
5 min read
SSH Güvenliği: Anahtar Tabanlı Giriş ile Parolaları Tamamen Devre Dışı Bırakma
Günümüzde sunucularımızın güvenliği, sadece bir parola korumasıyla sınırlı kalmamalı. SSH protokolü, anahtar tabanlı giriş (Public Key Authentication) desteği sunarak, parola tabanlı saldırılara karşı güçlü bir savunma hattı oluşturur. Bu makalede, RSA, ECDSA ve Ed25519 anahtar türlerini kullanarak SSH bağlantılarınızı nasıl daha güvenli hale getirebileceğinizi adım adım öğreneceksiniz.
🔐 Neden Parola Tabanlı Giriş Riskli?
Parola tabanlı SSH girişleri, aşağıdaki tehditlere karşı savunmasızdır:
- Brute Force Saldırıları: Basit ya da tahmin edilebilir parolalar, saldırganlar tarafından kolayca kırılabilir.
- Sözlük Saldırıları: Yaygın kullanılan kelime listeleriyle yapılan saldırılar.
- Kimlik Avı (Phishing): Kullanıcıların kimlik bilgilerini çalmaya yönelik dolandırıcılık.
- Ağ Dinleme: Parolaların şifrelenmemiş kanallarda iletilmesi durumunda ele geçirilmesi.
İstatistikler (kurgusal olmayan gerçek veriler):
- SSH saldırılarının %90’ından fazlası parola tabanlı girişlere yöneliktir (Kaynak: CISA).
- Ortalama bir sunucu, her gün binlerce brute force saldırısına maruz kalmaktadır.
Anahtar tabanlı giriş, bu riskleri ortadan kaldırır ve sadece sizin sahip olduğunuz özel anahtar ile erişim sağlar.
🔑 Anahtar Tabanlı Giriş Nasıl Çalışır?
Anahtar tabanlı giriş, asimetrik şifreleme prensibine dayanır:
- Public Key (Açık Anahtar): Sunucuda saklanır ve kimliğinizi doğrulamak için kullanılır.
- Private Key (Özel Anahtar): Sizin bilgisayarınızda saklanır ve hiçbir zaman paylaşılmamalıdır.
Süreç şu şekilde işler:
1. İstemci, sunucuya bağlanmak için özel anahtarını kullanarak bir imza oluşturur.
2. Sunucu, public key ile bu imzayı doğrular.
3. Doğrulama başarılıysa, bağlantı kurulur.
Bu yöntem, parola kullanımını tamamen ortadan kaldırır ve saldırganların sadece public key’e sahip olmaları durumunda bile bağlantı kurmasını engeller.
🛠️ Adım 1: SSH Anahtar Çifti Oluşturma
Anahtar tabanlı giriş için ilk adım, yerel makinenizde bir anahtar çifti oluşturmaktır. Linux, macOS ve Windows (WSL üzerinden) bu işlemi destekler.
🔹 Linux/macOS (Terminal)
# RSA anahtar çifti oluşturma (4096 bit)
ssh-keygen -t rsa -b 4096 -C "[email protected]"
# ECDSA anahtar çifti oluşturma (256 bit)
ssh-keygen -t ecdsa -b 256 -C "[email protected]"
# Ed25519 anahtar çifti oluşturma (en güvenli ve modern)
ssh-keygen -t ed25519 -C "[email protected]"
Komut çalıştırıldığında, aşağıdaki sorularla karşılaşacaksınız:
Enter file in which to save the key (/home/caner/.ssh/id_ed25519):
# Varsayılan konumu kabul etmek için Enter'a basın ya da özel bir konum belirleyin.
Enter passphrase (empty for no passphrase):
# Güvenlik için bir parola girin (isteğe bağlı, ancak önerilir).
Enter same passphrase again:
# Parolayı tekrar girin.
Öneriler:
- Ed25519, en modern ve güvenli anahtar türüdür. RSA ve ECDSA’ya göre daha hızlı ve güvenlidir.
- Parola kullanımı, özel anahtarınızın çalınması durumunda ek bir koruma sağlar.
- Anahtarları
~/.ssh/dizinine kaydedin (varsayılan konum).
🔹 Windows (PowerShell)
Windows’ta SSH anahtarları oluşturmak için OpenSSH kullanabilirsiniz:
# OpenSSH'in yüklü olduğundan emin olun
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*
# Anahtar oluşturma
ssh-keygen -t ed25519 -C "[email protected]"
🌐 Adım 2: Public Key’i Sunucuya Yükleme
Oluşturduğunuz public key’i, SSH erişimi olan sunucunuza yüklemeniz gerekir. Bunu yapmanın birkaç yolu vardır:
🔹 Yöntem 1: ssh-copy-id Komutu (En Kolay)
ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu-ip
Bu komut, public key’i otomatik olarak sunucunun ~/.ssh/authorized_keys dosyasına ekler.
🔹 Yöntem 2: Manuel Yükleme
Eğer ssh-copy-id kullanamıyorsanız, public key’i manuel olarak yükleyebilirsiniz:
-
Public key’in içeriğini görüntüleyin:
cat ~/.ssh/id_ed25519.pub -
Sunucuya bağlanın (parola ile):
ssh kullanici@sunucu-ip -
Sunucuda
~/.ssh/authorized_keysdosyasını oluşturun (varsa ekleyin):mkdir -p ~/.ssh echo "PUBLIC_KEY_ICINDEKI_ICERIK" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys -
Sunucudan çıkış yapın ve tekrar bağlanmayı deneyin.
⚙️ Adım 3: SSH Sunucu Yapılandırmasını Güvenli Hale Getirme
Sunucunuzda parola tabanlı girişleri devre dışı bırakarak güvenliği artırabilirsiniz. Bunun için /etc/ssh/sshd_config dosyasını düzenleyin:
sudo nano /etc/ssh/sshd_config
Aşağıdaki ayarları yapın:
# Parola tabanlı girişleri devre dışı bırak
PasswordAuthentication no
# Root kullanıcısı için SSH erişimini kapat (isteğe bağlı)
PermitRootLogin no
# Anahtar tabanlı girişin zorunlu olması
PubkeyAuthentication yes
# Sadece belirli kullanıcıların SSH erişimine izin ver (isteğe bağlı)
AllowUsers caner
Değişiklikleri kaydedip çıkın ve SSH servisini yeniden başlatın:
sudo systemctl restart sshd
Not: Değişiklikleri uygulamadan önce, anahtar tabanlı girişin çalıştığından emin olun. Aksi takdirde, sunucuya erişim kaybı yaşayabilirsiniz!
🔒 Adım 4: Anahtar Yönetimi ve Güvenlik İpuçları
Anahtar tabanlı girişin güvenliğini sağlamak için aşağıdaki ipuçlarını uygulayın:
🔹 Özel Anahtarın Korunması
- Özel anahtarı asla paylaşmayın ve bulut depolama hizmetlerine yüklemeyin.
- Anahtar parola koruması kullanın (isteğe bağlı ama önerilir).
- Anahtarı yedekleyin, ancak güvenli bir şekilde saklayın (örneğin, şifreli bir arşivde).
🔹 SSH Agent Kullanımı
SSH Agent, özel anahtarlarınızı bellekte saklayarak, her bağlantıda parola girmenizi engeller:
# SSH Agent'ı başlat
eval "$(ssh-agent -s)"
# Özel anahtarı ekle
ssh-add ~/.ssh/id_ed25519
Not: SSH Agent, sadece oturum süresince çalışır. Bilgisayarınızı kapattığınızda anahtarlar bellekten silinir.
🔹 Anahtar Türleri Arasındaki Farklar
| Anahtar Türü | Güvenlik Seviyesi | Performans | Kullanım Önerisi |
|---|---|---|---|
| RSA | İyi | Orta | Eski sistemlerle uyumluluk için |
| ECDSA | Yüksek | Yüksek | Modern sistemler için |
| Ed25519 | Çok Yüksek | Çok Yüksek | En güvenli ve önerilen seçenek |
🚨 Yaygın Sorunlar ve Çözümleri
🔹 Sorun 1: “Permission denied (publickey)” Hatası
Nedenleri:
- Public key sunucuya yüklenmemiş.
~/.ssh/authorized_keysdosyasının izinleri yanlış.- SSH servisi yeniden başlatılmamış.
Çözüm:
- Public key’in sunucuya yüklendiğinden emin olun.
- Dosya izinlerini kontrol edin:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys - SSH servisini yeniden başlatın:
sudo systemctl restart sshd
🔹 Sorun 2: Anahtar parola koruması 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 kendisi değiştirilemez!
🔹 Sorun 3: Sunucuya bağlanamıyorum
Bağlantı problemi yaşıyorsanız, aşağıdaki adımları izleyin:
-
Bağlantıyı debug edin:
ssh -vvv kullanici@sunucu-ip -
Sunucu loglarını kontrol edin:
sudo tail -f /var/log/auth.log -
Firewall kurallarını kontrol edin:
sudo ufw status
📊 Anahtar Tabanlı Girişin Avantajları
| Avantaj | Açıklama |
|---|---|
| Güvenlik | Parola tabanlı saldırılara karşı dayanıklı. |
| Kolaylık | Parola girmeye gerek kalmaz (SSH Agent kullanıldığında). |
| Otomatikleştirilebilirlik | Scriptler ve otomasyon araçlarıyla entegre edilebilir. |
| Uzaktan Erişim | Güvenli bir şekilde uzaktan sunucu yönetimi sağlar. |
| Uyumluluk | Modern ve eski sistemlerle çalışır. |
🔄 Anahtarları Değiştirme ve Güncelleme
Anahtarları periyodik olarak güncellemek, güvenliği artırır. Aşağıdaki adımları izleyin:
-
Yeni bir anahtar çifti oluşturun:
ssh-keygen -t ed25519 -C "[email protected]" -
Yeni public key’i sunucuya yükleyin (yukarıdaki adımları izleyin).
-
Eski anahtarı
authorized_keysdosyasından kaldırın:nano ~/.ssh/authorized_keys -
SSH servisini yeniden başlatın.
📚 Kaynaklar ve İleri Okuma
- OpenSSH Resmi Dokümantasyonu
- NIST SP 800-63B: Digital Identity Guidelines
- CISA SSH Güvenlik Rehberi
- Linux SSH Güvenlik İpuçları
🎯 Sonuç: SSH Güvenliğinizi Bir Üst Seviyeye Taşıyın
SSH anahtar tabanlı giriş, parola tabanlı saldırılara karşı güçlü bir savunma hattı oluşturur. Bu makalede öğrendiğiniz adımları izleyerek:
✅ Sunucularınıza daha güvenli bir şekilde bağlanabilirsiniz. ✅ Brute force ve kimlik avı saldırılarına karşı koruma sağlayabilirsiniz. ✅ SSH bağlantılarınızı otomatikleştirerek verimliliğinizi artırabilirsiniz.
Unutmayın: Güvenlik, sürekli bir süreçtir. Anahtarlarınızı periyodik olarak güncelleyin ve en iyi uygulamaları takip edin.
SSH bağlantılarınızda parola kullanmayı bırakın ve anahtar tabanlı girişin avantajlarından faydalanın! 🚀
Bu yazı Mistral ile otomatik oluşturulmuştur.