Ubuntu Server’da SSH Two-Factor Yubikey Kurulumu

Ubuntu Server ortamlarında SSH erişimi, sunucularınızın güvenliğini sağlamak için kritik bir unsurdur.

Reklam Alanı

Ubuntu Server ortamlarında SSH erişimi, sunucularınızın güvenliğini sağlamak için kritik bir unsurdur. Geleneksel şifre tabanlı kimlik doğrulama yöntemleri, brute-force saldırıları ve kimlik bilgisi sızıntıları karşısında yetersiz kalabilmektedir. Bu noktada, iki faktörlü kimlik doğrulama (2FA) devreye girerek ekstra bir güvenlik katmanı ekler. YubiKey gibi donanım tabanlı token’lar, OTP (One-Time Password) veya challenge-response mekanizmalarıyla bu süreci güçlendirir. Bu makalede, Ubuntu Server’a YubiKey entegrasyonuyla SSH 2FA kurulumunu adım adım ele alacağız. Kurumsal ortamlarda sıkça tercih edilen bu yöntem, kullanıcı dostu yapısı ve yüksek güvenlik seviyesiyle öne çıkar. Takip ederek, sunucularınızı fidye yazılımlarından ve yetkisiz erişimlerden koruyabilirsiniz.

Gereksinimler ve Ön Hazırlıklar

Başarılı bir kurulum için öncelikle uygun donanım ve yazılım bileşenlerini hazırlamanız gerekir. YubiKey 4 veya 5 serisi modeller (USB-A, USB-C veya NFC destekli) idealdir; bu cihazlar PIV, OTP ve challenge-response modlarını destekler. Ubuntu Server 20.04 LTS veya üstü sürümlerde çalışır. Sunucunuzun root erişimine sahip olmalı ve internet bağlantısı bulunmalıdır. YubiKey’in challenge-response modu, şifreleme anahtarlarını cihazda saklayarak sunucu tarafında doğrulama yapar; bu, OTP’ye göre daha güvenli ve hızlıdır.

Kuruluma başlamadan önce sistemi güncelleyin: sudo apt update && sudo apt upgrade -y. Ardından gerekli paketleri yükleyin. Bu paketler, YubiKey ile etkileşim için temel kütüphaneleri sağlar ve PAM entegrasyonunu mümkün kılar.

YubiKey Cihazını Tanımlama

YubiKey’i USB portuna takın ve tanınıp tanınmadığını kontrol edin: lsusb | grep Yubico komutuyla cihazı listeleyin. Çıktıda “Yubico YubiKey” görünmelidir. Eğer görünmüyorsa, USB sürücülerini kontrol edin veya başka bir porta takmayı deneyin. pcscd servisini etkinleştirin: sudo systemctl enable --now pcscd. Bu servis, akıllı kart okuyucularını yönetir ve YubiKey’in PIV applet’ini aktif hale getirir. YubiKey Manager aracını yükleyerek (resmi siteden indirin, ancak komut satırından ykman info ile seri numarasını doğrulayın) cihaz durumunu inceleyin. Bu adım, kurulum sırasında olası uyumluluk sorunlarını önler ve cihazın challenge-response slotlarının (Slot 2 önerilir) boş olduğunu teyit eder.

Gerekli Yazılım Paketlerini Yükleme

Aşağıdaki komutla paketleri yükleyin: sudo apt install yubikey-personalization libpam-yubico yubico-piv-tool pcscd scdaemon gnupg2 -y. yubikey-personalization, cihazı programlamak için; libpam-yubico, PAM modülü için; yubico-piv-tool, PIV sertifikaları için gereklidir. Paketler yüklendikten sonra, YubiKey Personalization Tool ile challenge-response secret’ını oluşturun: ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible. Bu, Slot 2’yi challenge-response moduna alır. Secret’ı güvenli bir yerde saklayın (/etc/yubikey_challenge gibi), çünkü doğrulama için gereklidir. Yükleme sonrası servisi yeniden başlatın: sudo systemctl restart pcscd. Bu hazırlıklar, entegrasyonun sorunsuz ilerlemesini sağlar ve toplamda 5-10 dakika sürer.

YubiKey Yapılandırması

YubiKey’i challenge-response için yapılandırmak, 2FA’nın temelini oluşturur. Bu modda, sunucu bir challenge gönderir; YubiKey HMAC ile yanıt verir. Önce mapping dosyasını oluşturun: echo "your_yubikey_id:your_serial" | sudo tee /etc/yubikey_mappings. Burada “your_yubikey_id” YubiKey’in public ID’si (ykinfo ile alınır), serial ise ykman ile sorgulanır. Bu dosya, kullanıcı bazlı eşleştirmeyi sağlar. Ardından, challenge’ı test edin: yt chalresp -2 "test_challenge" input.txt ile yanıt üretin ve doğrulayın.

Çok kullanıcılı ortamlarda, her kullanıcı için ayrı mapping ekleyin. Bu yapılandırma, YubiKey’in fiziksel varlığını zorunlu kılar ve MITM saldırılarını engeller. Secret’ları /etc/pam.d/common-auth’ta kullanmadan önce izinleri kısıtlayın: sudo chmod 600 /etc/yubikey_challenge.

Challenge-Response Secret Oluşturma

Secret üretmek için: dd if=/dev/random bs=20 count=1 of=/etc/yubikey_challenge. Ardından YubiKey’e yükleyin: ykchalresp -2 -v $(cat /etc/yubikey_challenge) challenge.txt. challenge.txt dosyasını koruyun. Bu secret, 20 bayt rastgele veri olup, HMAC-SHA1 ile imzalanır. Test için: yt chalresp -2 -x "test_challenge" /etc/yubikey_challenge ile yanıtı alın ve echo -n "test_challenge" | hmac-sha1 /etc/yubikey_challenge ile karşılaştırın. Eşleşme varsa kurulum başarılıdır. Kurumsal kullanımda, secret’ları Ansible gibi araçlarla yönetin ve düzenli rotasyon uygulayın; bu, uyumluluk standartlarını (örneğin PCI-DSS) karşılar.

Kullanıcı Bazlı Eşleştirme

/etc/yubikey_mappings dosyasını düzenleyin: her satıra “kullanici_adi:yubikey_id” ekleyin. Örnek: admin:123456. Bu, sadece eşleşen YubiKey’lerin yanıtını kabul eder. PAM modülü bu dosyayı okuyarak doğrular. Dosyayı yeniden yüklemek için sshd’yi yeniden başlatmayın; dinamik olarak çalışır. Birden fazla YubiKey için virgülle ayırın. Bu yaklaşım, departman bazlı erişim kontrolü sağlar ve audit log’larında YubiKey ID’sini izlemeye olanak tanır. Yapılandırma sonrası, sudo pamtester root sshd chalresp authenticate ile test edin; başarılı yanıt “chalresp: OK” olmalıdır.

SSH Entegrasyonu ve Test Etme

Şimdi PAM ve SSHD yapılandırmalarını entegre edin. /etc/pam.d/sshd dosyasının başına ekleyin: auth sufficient pam_yubico.so mode=challenge-response authfile=/etc/yubikey_mappings challenge=/etc/yubikey_challenge verbose. Bu satır, şifre öncesi YubiKey doğrulaması yapar. Ardından /etc/ssh/sshd_config’te şu değişiklikleri yapın: ChallengeResponseAuthentication yes, UsePAM yes, PasswordAuthentication yes (isteğe bağlı). Dosyayı kaydedin ve sudo systemctl restart ssh ile uygulayın.

Bağlantı testi: Yeni terminalden ssh ile bağlanın; şifre sorulmadan önce challenge gönderilir, YubiKey dokunarak yanıt verin. Log’ları /var/log/auth.log’ta izleyin. Hata durumunda verbose modunu etkinleştirin. Bu entegrasyon, mevcut şifreleri korurken 2FA ekler; fallback için pam_unix kullanın.

PAM Yapılandırması Detayları

pam_yubico.so modülü, /etc/pam.d/sshd’de sufficient olarak yer alır; başarısız olursa şifreye geçer. Parametreler: mode=challenge-response (OTP alternatifi), authfile (mapping), challenge (secret yolu). Debug için debug parametresi ekleyin: auth sufficient pam_yubico.so ... debug. Log seviyesi syslog’a yazar. Kurumsal olarak, faillock ile kilitleme entegre edin: pam_tally2 modülüyle başarısız denemeleri sayın. Örnek satır: auth required pam_tally2.so deny=5 unlock_time=600. Bu, brute-force’u 5 denemede bloke eder ve 10 dakika bekletir. Değişiklik sonrası mevcut oturumları kapatın.

Test ve Sorun Giderme

Test senaryosu: YubiKey olmadan bağlanmayı deneyin; reddedilmelidir. YubiKey ile: şifre + dokunma. Başarısızsa: 1) lsusb ile cihazı kontrol, 2) pcscd status, 3) mapping ID’si doğrulama, 4) secret izinleri. Yaygın hata: Slot 2’nin HOTP ile meşgul olması; ykpersonalize ile sıfırlayın. Günlüklerde “chalresp: invalid response” görürseniz secret’ı yenileyin. Performans testi: 100 bağlantıda gecikme <1sn. Bu adımlar, %99 uptime sağlar ve destek ekipleri için actionable log’lar üretir.

Bu kurulumla Ubuntu Server’ınız, YubiKey tabanlı SSH 2FA ile kurumsal güvenlik standartlarını karşılar. Maliyet etkin (tek seferlik donanım) ve sıfır ek yük getirir. Düzenli yedekleme yapın, kullanıcı eğitimi verin ve log’ları SIEM’e entegre edin. Sonuçta, erişim güvenliğiniz maksimize olurken operasyonel verimlilik korunur.

Yazar: Diglab
İçerik: 858 kelime
Okuma Süresi: 6 dakika
Zaman: Bugün
Yayım: 20-03-2026
Güncelleme: 20-03-2026
Benzer İçerikler
Dijital Dönüşüm kategorisinden ilginize çekebilecek benzer içerikler