Ana içeriğe geç
Kategoriye Dön

SSH İçin 2FA Kurulumu: Google Authenticator ile Güvenlik

SSH erişimi için iki faktörlü kimlik doğrulama (2FA) kurun. Google Authenticator PAM modülü, TOTP kurulumu, yedek kodlar, test ve sorun giderme rehberi.

Okuma süresi: 12 dk Güvenlik
2faiki faktörlü kimlik doğrulamagoogle authenticatortotpssh güvenliğipamlinuxmfa

İçindekiler

SSH İçin 2FA Kurulumu: Google Authenticator ile Güvenlik

SSH anahtarı kullanmak güvenliği artırsa da, iki faktörlü kimlik doğrulama (2FA) ekstra bir güvenlik katmanı sağlar. Birisi SSH anahtarınızı ele geçirse bile, 2FA kodu olmadan sisteme giremez. Bu rehberde Google Authenticator PAM modülü ile SSH için TOTP tabanlı 2FA kurulumunu öğreneceksiniz.

2FA Neden Önemli?

  • Çalınan anahtar koruması: SSH anahtarı çalınsa bile 2FA kodu gerekir
  • Brute-force direnci: Şifre + 2FA kombinasyonu çok daha güçlü
  • Uyumluluk: PCI-DSS, HIPAA gibi standartlar 2FA gerektirir
  • Kolay kurulum: Birkaç dakikada aktif edilebilir

Gereksinimler

  • Linux sunucu (Ubuntu/Debian/CentOS)
  • Akıllı telefon (Google Authenticator, Authy veya benzeri uygulama)
  • Mevcut SSH erişimi

2FA kurulumu sırasında mevcut SSH bağlantınızı kapatmayın. Her adımdan sonra yeni bir terminal ile test edin. Yanlış yapılandırma sunucuya erişimi tamamen engelleyebilir.

Google Authenticator PAM Modülü Kurulumu

hljs bash
# Ubuntu/Debian
sudo apt update
sudo apt install libpam-google-authenticator -y

# CentOS/AlmaLinux
sudo dnf install epel-release -y
sudo dnf install google-authenticator -y

TOTP Kurulumu

hljs bash
# 2FA'yı etkinleştirmek istediğiniz kullanıcı olarak çalıştırın
google-authenticator

Komut çalıştırıldığında şu sorular sorulacak:

Do you want authentication tokens to be time-based (y/n) y

Bu noktada bir QR kodu ve gizli anahtar görüntülenecek. QR kodu Google Authenticator uygulaması ile tarayın.

Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y

Do you want to disallow multiple uses of the same authentication token? (y/n) y

By default, tokens are good for 30 seconds. In order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of +-1min (window size of 3) to about +-4min (window size of 17 acceptable tokens). Do you want to do so? (y/n) n

If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting? (y/n) y

Yedek Kodları Kaydetme

Kurulum sırasında 5 adet yedek kod görüntülenir. Bu kodları güvenli bir yerde saklayın:

Your emergency scratch codes are:
  12345678
  87654321
  11223344
  44332211
  99887766

Yedek kodları güvenli bir yerde (şifre yöneticisi, kağıt vb.) saklayın. Telefonunuzu kaybettiğinizde bu kodlar tek erişim yolunuz olacak.

PAM Yapılandırması

hljs bash
# SSH PAM yapılandırmasını düzenle
sudo nano /etc/pam.d/sshd
# /etc/pam.d/sshd dosyasının başına ekle:
auth required pam_google_authenticator.so

nullok seçeneği eklerseniz, 2FA kurulmamış kullanıcılar yalnızca şifre ile giriş yapabilir. Geçiş döneminde kullanışlıdır: auth required pam_google_authenticator.so nullok

SSH Yapılandırması

hljs bash
sudo nano /etc/ssh/sshd_config
# Klavye etkileşimli kimlik doğrulamayı etkinleştir
ChallengeResponseAuthentication yes

# Kimlik doğrulama yöntemlerini ayarla
# Seçenek 1: Yalnızca 2FA (şifre + TOTP)
AuthenticationMethods keyboard-interactive

# Seçenek 2: SSH anahtarı VEYA 2FA
# AuthenticationMethods publickey keyboard-interactive

# Seçenek 3: SSH anahtarı VE 2FA (en güvenli)
AuthenticationMethods publickey,keyboard-interactive

# UsePAM etkin olmalı
UsePAM yes
hljs bash
# SSH servisini yeniden başlat
sudo systemctl restart sshd

SSH Anahtarı + 2FA Kombinasyonu (Önerilen)

En güvenli yapılandırma: SSH anahtarı VE 2FA kodu gerektirir.

hljs bash
sudo nano /etc/ssh/sshd_config
# SSH anahtarı + 2FA zorunlu
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes
hljs bash
# PAM yapılandırması
sudo nano /etc/pam.d/sshd
# Şifre kimlik doğrulamasını devre dışı bırak
# @include common-auth satırını yorum satırına al:
# @include common-auth

# 2FA ekle
auth required pam_google_authenticator.so

Test Etme

hljs bash
# Yeni bir terminal açın ve bağlanmayı deneyin
ssh kullanici@sunucu_ip

# Beklenen çıktı:
# Verification code: (Google Authenticator'dan kodu girin)
# Authenticated with partial success.
# (SSH anahtarı + 2FA modunda)

Sorun Giderme

2FA Kodu Kabul Edilmiyor

hljs bash
# Sunucu saatini kontrol et
date
timedatectl

# NTP senkronizasyonu
sudo apt install ntp -y
sudo systemctl restart ntp

# Zaman dilimini kontrol et
timedatectl list-timezones | grep Istanbul
sudo timedatectl set-timezone Europe/Istanbul

Kilitlenme Durumunda Kurtarma

hljs bash
# Konsol erişimi ile bağlanın
# Google Authenticator dosyasını kontrol edin
cat ~/.google_authenticator

# 2FA'yı geçici olarak devre dışı bırak
# /etc/pam.d/sshd dosyasından pam_google_authenticator satırını yorum satırına al
sudo nano /etc/pam.d/sshd
# auth required pam_google_authenticator.so  <- başına # ekle

sudo systemctl restart sshd

Belirli Kullanıcıları 2FA'dan Muaf Tutma

hljs bash
sudo nano /etc/pam.d/sshd
# Belirli grupları muaf tut
auth [success=1 default=ignore] pam_succeed_if.so user ingroup notp
auth required pam_google_authenticator.so
hljs bash
# notp grubu oluştur ve kullanıcı ekle
sudo groupadd notp
sudo usermod -aG notp deploy_user

Çoklu Sunucu Yönetimi

Birden fazla sunucu için 2FA yönetimi:

hljs bash
# Ansible ile toplu kurulum
# playbook.yml
hljs yaml
- name: Google Authenticator kurulumu
  hosts: all
  tasks:
    - name: Paketi kur
      apt:
        name: libpam-google-authenticator
        state: present
    
    - name: PAM yapılandırması
      lineinfile:
        path: /etc/pam.d/sshd
        line: 'auth required pam_google_authenticator.so'
        insertbefore: BOF

Authy veya 1Password gibi uygulamalar, Google Authenticator'a kıyasla bulut yedekleme ve çoklu cihaz desteği sunar. Kurumsal ortamlarda bu alternatifleri değerlendirin.

Sonuç

SSH için 2FA kurulumu, sunucu güvenliğini önemli ölçüde artırır. Google Authenticator PAM modülü ile birkaç dakikada TOTP tabanlı 2FA aktif edebilirsiniz. SSH anahtarı + 2FA kombinasyonu, en güçlü kimlik doğrulama yöntemlerinden birini oluşturur.