1. #!trpst#trp-gettext data-...
  2. #!trpst#trp-gettext data-...
  3. Linux
  4. Ağ ve Güvenlik
  5. SSH Anahtar Tabanlı Kimlik Doğrulama ve Güvenlik Sıkılaştırma

SSH Anahtar Tabanlı Kimlik Doğrulama ve Güvenlik Sıkılaştırma

Print

İnternete açık bir Linux sunucusuna parola ile SSH bağlantısı yapmak, sunucunuzu aralıksız kaba kuvvet (brute-force) ve sözlük saldırılarına açık bırakır. SSH anahtar tabanlı kimlik doğrulama mekanizması, asimetrik kriptografi kullanarak parolalara olan bağımlılığı tamamen ortadan kaldırır ve sunucu erişim güvenliğini en üst düzeye çıkarır.

Bu rehberde; modern Ed25519 algoritmasıyla SSH anahtarı üretmeyi, anahtarı uzak sunucuya aktarmayı ve /etc/ssh/sshd_config dosyasında kritik güvenlik sıkılaştırma (hardening) ayarlarını adım adım uygulayacağız.


SSH Anahtar Mantığı Nasıl Çalışır?

SSH anahtar tabanlı doğrulama, açık anahtarlı şifreleme (public-key cryptography) prensibine dayanır:

  1. Özel Anahtar (Private Key – id_ed25519): Yalnızca sizin yerel bilgisayarınızda saklanır. Asla kimseyle paylaşılmamalıdır.
  2. Açık Anahtar (Public Key – ided25519.pub): Erişmek istediğiniz sunucudaki ~/.ssh/authorizedkeys dosyasına eklenir. Herkese açık olması güvenlik riski oluşturmaz.

Bağlantı sırasında sunucu bir meydan okuma (challenge) mesajı gönderir. İstemci bu mesajı kendi özel anahtarıyla imzalar. Sunucu, elindeki açık anahtarla bu imzayı doğrularsa bağlantı onaylanır. Parola transferi veya parola tahmini kesinlikle gerçekleşmez.


Adım 1: Güvenli SSH Anahtarı Üretmek (ssh-keygen)

Geçmişte yaygın olan RSA anahtarları (2048 veya 4096 bit) yerine günümüzde çok daha hızlı, kısa ve eliptik eğri tabanlı olan Ed25519 standardı önerilmektedir.

Yerel bilgisayarınızın terminalinde şu komutu çalıştırın:

# Modern Ed25519 anahtar çifti oluşturma
ssh-keygen -t ed25519 -C "admin@ahakan.com"

İşlem sırasında:

  • Dosya konumu sorulduğunda Enter tuşuna basarak varsayılanı (~/.ssh/id_ed25519) seçin.
  • Passphrase (Parola Koruması): Özel anahtarınızı korumak için güçlü bir parola girmeniz şiddetle önerilir. Bu parola, anahtarınız çalınsa dahi saldırganların onu kullanmasını engeller.

Eğer eski sistemlerle uyumluluk gerekirse 4096 bitlik RSA alternatifi:

ssh-keygen -t rsa -b 4096 -C "admin@ahakan.com"

Adım 2: Açık Anahtarı Sunucuya Yüklemek (ssh-copy-id)

Ürettiğiniz açık anahtarı sunucuya aktarmanın en zahmetsiz ve hatasız yolu ssh-copy-id aracıdır:

# Açık anahtarı uzak sunucuya kopyala
ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu_ip_adresi

Bu komut:

  1. Sunucuda ~/.ssh dizini yoksa oluşturur.
  2. ~/.ssh/authorized_keys dosyasının sonuna anahtarınızı ekler.
  3. chmod rehberimizde belirttiğimiz doğru izinleri otomatik ayarlar (.ssh için 700, authorized_keys için 600).

Manuel Yöntem (ssh-copy-id yoksa)

Eğer Windows PowerShell veya kısıtlı bir ortamdaysanız:

cat ~/.ssh/id_ed25519.pub | ssh kullanici@sunucu_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Adım 3: Parolasız Bağlantıyı Test Edin

Henüz sunucu yapılandırmasını değiştirmeden önce yeni bir terminal açarak bağlantının anahtarla kurulduğunu doğrulayın:

ssh kullanici@sunucu_ip_adresi

Sistem sizden sunucu kullanıcı şifresi yerine özel anahtarınızın “passphrase” ini soruyorsa anahtar kurulumu başarıyla tamamlanmıştır!


Adım 4: SSH Sunucusunu Sıkılaştırma (Hardening)

Anahtar ile giriş sağlandıktan sonra, kaba kuvvet saldırılarını tamamen engellemek için parola ile girişi devre dışı bırakmalı ve root erişimini sınırlandırmalıyız.

Sunucuda SSH yapılandırma dosyasını açın:

sudo nano /etc/ssh/sshd_config

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

# 1. Standart 22 portunu değiştir (Örn: 2222)
Port 2222

# 2. Root kullanıcısının doğrudan SSH yapmasını engelle
PermitRootLogin no

# 3. Parola ile girişi tamamen kapat (SADECE anahtarla girişe izin ver)
PasswordAuthentication no
ChallengeResponseAuthentication no

# 4. Boş parolaları engelle
PermitEmptyPasswords no

# 5. Maksimum kimlik doğrulama deneme sayısını sınırla
MaxAuthTries 3

# 6. X11 yönlendirmesini kapat (Kullanılmıyorsa)
X11Forwarding no

HAYATİ UYARI: Mevcut aktif terminal oturumunuzu ASLA KAPATMAYIN! Yapılandırmayı test etmek için ikinci bir terminal penceresi açacaksınız.

Değişiklikleri Uygulama ve Doğrulama

# 1. Sözdizimi hatası var mı test et (-t)
sudo sshd -t

# 2. Eğer hata yoksa servisi yeniden başlat
sudo systemctl restart sshd

# 3. Eğer port değiştirdiyseniz güvenlik duvarında yeni portu açın!
sudo ufw allow 2222/tcp

Şimdi bilgisayarınızda yeni bir terminal açıp test edin:

ssh -p 2222 kullanici@sunucu_ip_adresi

Bağlantı sorunsuz açılıyorsa sunucunuz artık parola denemelerine karşı tamamen zırhlanmış durumdadır!


Yerel SSH İstemcisi İpuçları: ~/.ssh/config

Her defasında ssh -p 2222 kullanici@198.51.100.5 yazmak yerine yerel bilgisayarınızda ~/.ssh/config dosyası oluşturabilirsiniz:

Host production
    HostName 198.51.100.5
    User hakan
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Artık sadece şu komutu yazarak bağlanabilirsiniz:

ssh production

Özet Güvenlik Tablosu

Ayar ParametresiÖnerilen DeğerAmacı
PasswordAuthenticationnoBrute-force parola denemelerini %100 engeller
PermitRootLoginnoYetkili hesaplara doğrudan sızılmasını önler
Port2222 (vb.)Otomatik internet tarayıcılarının gürültüsünü keser
ssh-keygen AlgoritmasıEd25519En modern ve güçlü kriptografik güvenlik
Anahtar Dosya İzni600Özel anahtarın diğer kullanıcılarca okunmasını engeller

Özet

SSH güvenliği bir sunucunun ilk ve en önemli kalesidir. ssh-keygen ile güçlü bir Ed25519 anahtarı oluşturup parola ile kimlik doğrulamayı devre dışı bıraktığınızda, sunucunuza yönelik en yaygın saldırı vektörünü kalıcı olarak bertaraf etmiş olursunuz.

Tags , , , ,

How can we help?