SSH, sunucu yönetiminin olmazsa olmazıdır ancak zayıf parolalar veya çalıntı anahtarlar yüzünden hedef haline gelebilir. İşte tam bu noktada iki faktörlü kimlik doğrulama (2FA) devreye girer. Google Authenticator ile SSH girişlerinize ekstra bir güvenlik katmanı eklemek hem kolay hem de etkilidir. Bu yazıda adım adım kurulumu anlatacağım.
Ön Hazırlık ve Gereksinimler
Başlamadan önce sunucunuzda root veya sudo yetkisine sahip bir kullanıcı olduğunuzdan emin olun. Ayrıca akıllı telefonunuza Google Authenticator uygulamasını yükleyin (iOS veya Android fark etmez). Bu rehber Ubuntu 22.04 üzerinde test edilmiştir; diğer dağıtımlarda paket adları değişebilir.
Adım 1: Gerekli Paketlerin Kurulumu
Sunucunuza SSH ile bağlanın ve aşağıdaki komutu çalıştırın:
sudo apt update && sudo apt install libpam-google-authenticator qrencode -yqrencode opsiyoneldir ancak QR kod oluşturmak için işleri kolaylaştırır. Kurulum tamamlandığında PAM modülü hazır demektir.
Adım 2: Kullanıcı İçin Google Authenticator Yapılandırması
Her kullanıcı kendi 2FA anahtarını oluşturmalıdır. SSH ile bağlı olduğunuz kullanıcı hesabında şu komutu çalıştırın:
google-authenticatorKarşınıza bir dizi soru çıkacak. İlki: "Do you want authentication tokens to be time-based?" - Evet (y) deyin. Ardından ekranda kocaman bir QR kod ve acil durum kodları göreceksiniz. Telefonunuzdaki Google Authenticator uygulamasını açıp QR kodu taratın. Sonraki sorular:
- "Do you want to update the file...?" - Evet
- "Do you want to disallow multiple uses of the same token?" - Evet (güvenlik için önerilir)
- "Do you want to increase the window size...?" - Hayır (varsayılan 3 kabul edilebilir)
- "Do you want to enable rate limiting?" - Evet (brute force saldırılarını yavaşlatır)
Bu adımları tamamlayınca kullanıcı bazında yapılandırma biter.
Adım 3: SSH Yapılandırmasını Değiştirme
Şimdi SSH sunucusuna 2FA'yı kullanmasını söyleyeceğiz. Öncelikle PAM yapılandırmasını düzenleyelim:
sudo nano /etc/pam.d/sshdDosyanın en üstüne şu satırı ekleyin:
auth required pam_google_authenticator.soArdından SSH yapılandırma dosyasını açın:
sudo nano /etc/ssh/sshd_configBurada iki önemli ayar var. Önce ChallengeResponseAuthentication değerini yes yapın:
ChallengeResponseAuthentication yesSonra AuthenticationMethods satırını bulun (yoksa ekleyin) ve şu şekilde ayarlayın:
AuthenticationMethods publickey,keyboard-interactiveBu, önce SSH anahtarı (publickey) sonra da Google Authenticator (keyboard-interactive) ile doğrulama yapılmasını sağlar. Eğer sadece parola+2FA istiyorsanız password,keyboard-interactive yapabilirsiniz, ancak anahtar yöntemi daha güvenlidir.
Adım 4: SSH Servisini Yeniden Başlatma
Değişiklikleri uygulamak için SSH servisini yeniden başlatın:
sudo systemctl restart sshdDikkat! Eski SSH oturumunuzu kapatmayın. Yeni bir terminal açıp bağlantıyı test edin. Eğer bir sorun olursa eski oturumdan müdahale edebilirsiniz.
Adım 5: Bağlantıyı Test Etme
Yeni bir SSH bağlantısı deneyin. Örneğin:
ssh kullanici@sunucu-ipİlk olarak SSH anahtarınız sorulacak (ya da parola). Ardından şöyle bir çıktı göreceksiniz:
Verification code: // altı haneli kodu girinTelefonunuzdaki Google Authenticator uygulamasından kodu alıp yazın. Doğru girerseniz oturum açılır. Yanlış kodda bağlantı reddedilir.
Sık Karşılaşılan Sorunlar ve Çözümleri
Bağlantı sırasında "Permission denied" hatası
Genellikle PAM yapılandırması veya SSH ayarları hatalıdır. /var/log/auth.log dosyasını kontrol edin. Ayrıca sshd_config içindeki AuthenticationMethods satırını doğru yazdığınızdan emin olun.
Google Authenticator kodu çalışmıyor
Sunucu saati ile telefon saati arasında fark olabilir. NTP servisini kontrol edin: timedatectl. Ayrıca telefonun saatini otomatik ayara getirin.
Acil durum kodları nerede?
google-authenticator komutu sırasında oluşturulan acil durum kodları genellikle ~/.google_authenticator dosyasının içindedir. Bu kodları güvenli bir yere not edin.
Sonuç
Artık SSH girişiniz iki faktörlü doğrulama ile korunuyor. Bu yöntem, sızdırılmış bir parola veya anahtarın tek başına yeterli olmamasını sağlar. Unutmayın, güvenlik katmanları ne kadar çok olursa saldırganın işi o kadar zorlaşır. Düzenli olarak güncelleme yapmayı ve logları izlemeyi ihmal etmeyin.