Sunucu güvenliği özellikle banka, finans ya da kurumsal ortamlarda çalışan sistem yöneticileri için en kritik konuların başında gelir. Çoğu zaman güvenlik ihlalleri tek katmanlı şifre koruması yüzünden gerçekleşir.

Bir saldırgan kullanıcı şifresini ele geçirdiğinde sistemlere doğrudan erişebilir. İşte tam bu noktada İki Faktörlü Kimlik Doğrulama (Two-Factor Authentication – 2FA) devreye girer.

2FA kullanıcı adı ve şifrenin yanında ikinci bir doğrulama katmanı daha ekler. Bu doğrulama genellikle telefonunuzdaki bir uygulama tarafından üretilen tek kullanımlık şifre (OTP/TOTP) ile yapılır. Yani saldırganın yalnızca şifrenizi bilmesi yetmez giriş yapabilmesi için telefonunuzdaki geçici kodu da bilmesi gerekir.

Linux sistemlerde SSH’ye (Secure Shell) 2FA eklemenin en yaygın yolu Google Authenticator modülünü kullanmaktır.

Bu makalemde Google Authenticator ile SSH oturumlarınıza nasıl ikinci güvenlik katmanı ekleyebileceğinizi adım adım göstereceğiz.

Google Authenticator Nedir?

Google Authenticator açık kaynaklı bir uygulamadır ve kullanıcıya zaman tabanlı tek kullanımlık şifreler (TOTP) üretir. Bu kodlar:

  • Her 30 saniyede bir yenilenir.
  • Sadece kısa bir süreliğine geçerlidir.
  • Mobil cihaz ya da bilgisayar üzerinde üretilebilir.

Avantajları:

  • Ekstra yazılım veya internet bağlantısı gerekmez.
  • Hem Android hem iOS cihazlarda kullanılabilir.
  • PAM (Pluggable Authentication Module) yapısı sayesinde Linux ile kolayca entegre olur.
  • Şifre sızıntılarına karşı ek bir güvenlik katmanı sağlar.

Kısacası Google Authenticator ile SSH girişleriniz iki adımlı bir sürece dönüşür. Önce şifre ardından uygulamanın ürettiği geçici doğrulama kodu.

Kurulum Öncesi Hazırlık

Kuruluma başlamadan önce bilmeniz gereken birkaç nokta var:

  1. SSH erişimi aktif olmalı: Sunucunuza root veya sudo yetkili bir kullanıcıyla bağlanabiliyor olmalısınız.
  2. Paket yöneticiniz (RedHat tabanlı sistemlerde dnf, Debian tabanlılarda apt) güncel olmalı.
  3. Yapılandırma sırasında SSH bağlantınız kesilebilir. Bu yüzden mümkünse sunucuya fiziksel erişim imkânınız olsun ya da yeni bir terminal oturumu açıp test edin.

Google Authenticator PAM Modülünü Kurma

RedHat Tabanlı Sistemler (RHEL, CentOS Stream, Rocky Linux, AlmaLinux)

Öncelikle EPEL (Extra Packages for Enterprise Linux) deposunu etkinleştiriniz.

sudo dnf install epel-release -y

Daha sonra gerekli paketleri kurulur.

sudo dnf install google-authenticator qrencode-libs -y

Debian Tabanlı Sistemler (Ubuntu, Debian, Mint)

Google Authenticator PAM modülünü şu komutla yükleyiniz.

sudo apt install libpam-google-authenticator -y

Kullanıcı İçin Gizli Anahtar ve Acil Kodlar Oluşturma

Kurulumdan sonra güvenli hale getirmek istediğiniz kullanıcı ile oturum açın ve şu komutu çalıştırın:

google-authenticator

Komut size bir dizi soru yöneltecektir:

  • Do you want authentication tokens to be time-based (y/n)?
    → Burada y seçin (zaman tabanlı kodlar için).
  • Do you want me to update your “/home/user/.google_authenticator” file (y/n)?
    y seçin (dosya güncellensin).
  • Disallow multiple uses of the same token?
    y (her kod bir kere kullanılabilsin).
  • Do you want to enable rate-limiting?
    y (çok sayıda başarısız denemeyi engeller).

Komut sonunda şunları elde edersiniz:

  • Secret Key (Gizli Anahtar) → Bunu Google Authenticator uygulamasına girmeniz gerekir.
  • Scratch Codes (Acil Kodlar) → Telefonunuzu kaybederseniz giriş yapabilmeniz için yedek kodlardır. Mutlaka güvenli bir yerde saklayın!

Eğer QR kod görüntülenmezse, uygulamaya secret key’i elle girebilirsiniz.

PAM Yapılandırması

SSH oturumlarında Google Authenticator’ın devreye girmesi için PAM dosyasını düzenleyelim.

sudo nano /etc/pam.d/sshd

Dosyanın en üstüne şunu ekleyiniz.

auth required pam_google_authenticator.so nullok

Eğer sisteminizde SELinux aktifse, .google_authenticator dosyasını doğru bir konuma taşıyın (örn. ~/.ssh/) ve tam yolunu şu şekilde belirtiniz.

auth required pam_google_authenticator.so secret=/home/<kullanıcı>/.ssh/.google_authenticator nullok

SSH Sunucu Yapılandırması

SSH’nin iki faktörlü doğrulama istemesi için yapılandırma dosyasını açınız.

sudo nano /etc/ssh/sshd_config

Aşağıdaki satırların bulunduğundan emin olunuz.

UsePAM yes
ChallengeResponseAuthentication yes

Eğer hem SSH anahtarı hem de 2FA zorunlu olsun istiyorsanız.

AuthenticationMethods publickey,keyboard-interactive

Son olarak SSH servisini yeniden başlatınız.

sudo systemctl restart sshd

Google Authenticator Uygulamasını Ayarlama

Telefonunuza Google Authenticator uygulamasını yükleyin (Android veya iOS).

  • Uygulamayı açın → +Enter a setup key seçeneğini seçin.
  • Komut çıktısında aldığınız secret key’i buraya girin.

Artık uygulama her 30 saniyede bir değişen tek kullanımlık kodlar üretmeye başlayacaktır.

SSH ile Giriş Testi

Kurulumdan sonra SSH ile giriş yaptığınızda şu şekilde bir doğrulama süreci göreceksiniz:

login as: root
Verification code: 746391
Password: ********
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125
[root@server ~]#

Artık hem şifre hem de doğrulama kodu olmadan giriş yapmak mümkün değil.

Not: Eğer yalnızca SSH anahtarı (public/private key) ile giriş yapıyorsanız 2FA devreye girmez. İki katmanlı doğrulama yalnızca parola tabanlı girişlerde çalışır.

Alternatif Doğrulama Yöntemleri

Telefon kullanmak istemeyenler için de çözümler mevcut:

  • KeePassXC (masaüstü tabanlı TOTP üretici)
  • Linux Authenticator App
  • Firefox Authenticator eklentisi

Bu sayede mobil cihaz olmadan da doğrulama kodu üretebilirsiniz.

SSH güvenliğini artırmak için en etkili adımlardan biri iki faktörlü kimlik doğrulama eklemektir.
Google Authenticator sayesinde:

  • Şifre sızıntıları risk olmaktan çıkar,
  • Brute-force saldırıları neredeyse imkânsız hale gelir,
  • Sunucularınıza erişim yalnızca sizin cihazınızdan doğrulanabilir.

Kısacası birkaç dakikalık kurulumla sistemlerinizin güvenlik seviyesini ciddi anlamda yükseltebilirsiniz.