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.
İç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
# 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
# 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ı
# 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ı
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
# 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.
sudo nano /etc/ssh/sshd_config
# SSH anahtarı + 2FA zorunlu
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes
# 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
# 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
# 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
# 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
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
# 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:
# Ansible ile toplu kurulum
# playbook.yml
- 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.
İlgili Makaleler
Malware ve Rootkit Tarama: rkhunter ve ClamAV Rehberi
Linux sunucunuzu malware ve rootkit'lere karşı koruyun. rkhunter ve ClamAV kurulumu, tarama yapılandırması, sonuç yorumlama ve zamanlanmış tarama rehberi.
Fail2Ban Yapılandırma: SSH Brute-Force Koruması Rehberi
Fail2Ban ile SSH brute-force saldırılarına karşı sunucunuzu koruyun. Kurulum, jail.local yapılandırması, Nginx/Apache jail'leri, IP beyaz listesi ve e-posta bildirimleri.
WireGuard VPN Sunucusu Kurulumu: Adım Adım Rehber
WireGuard VPN sunucusu kurun: anahtar üretimi, sunucu ve istemci yapılandırması, IP yönlendirme, firewall kuralları ve Windows/Linux/Android istemci kurulumu.