10 puan yazan GN⁺ 2025-03-27 | 1 yorum | WhatsApp'ta paylaş
  • Cloudflare, OPKSSH'yi (OpenPubkey SSH) açık kaynak olarak yayımladı
  • OPKSSH, OpenID Connect tabanlı SSO oturum açma ile SSH anahtarlarını otomatik olarak oluşturup kullanmayı sağlıyor
  • Kullanıcıların artık SSH açık/gizli anahtarlarını doğrudan yönetmesi veya sunuculara dağıtması gerekmiyor
  • SSH protokolünü değiştirmeden SSH kimlik doğrulamasına kimlik tabanlı bir yaklaşım getirilebiliyor

SSO ve OpenID Connect için arka plan açıklaması

  • SSO (Single Sign-On), kullanıcının bir kez oturum açarak birden çok sisteme erişebilmesini sağlayan bir kimlik doğrulama yöntemidir
  • OpenID Connect, çoğunlukla SSO için kullanılan ve kullanıcı bilgilerini içeren ID token üreten bir protokoldür
  • ID token, kullanıcının e-posta adresi gibi bilgileri içerir ancak açık anahtar içermez → bu yüzden SSH gibi güvenlik protokollerinde doğrudan kullanılamaz

OpenPubkey tanıtımı

  • OpenPubkey, kullanıcının açık anahtarını ID token içine ekleyerek bunu bir PK Token'a dönüştürür
  • Bu sayede “Google, alice@example.com kullanıcısının 0x123 açık anahtarını kullandığını doğrulayabilir”
  • Mevcut OpenID Connect protokolünde herhangi bir değişiklik yapmadan uygulanabilir

OPKSSH'nin rolü ve avantajları

  • OPKSSH, OpenPubkey'yi SSH ile entegre ederek SSO oturum açma üzerinden tek kullanımlık SSH anahtarları üretir
  • Mevcut SSH protokolünde değişiklik gerektirmeden çalışır ve yapılandırma dosyasına yalnızca iki satır eklenerek uygulanabilir
  • Güvenlik iyileştirmesi

    • Uzun süreli anahtarlar yerine tek kullanımlık SSH anahtarları kullanır → anahtar sızıntısı durumunda etkiyi azaltır ve anahtar ömrünü sınırlandırır
    • Varsayılan olarak 24 saat sonra sona erer, ayarla değiştirilebilir
  • Kullanıcı kolaylığı iyileştirmesi

    • Yalnızca opkssh login komutunu çalıştırarak SSH anahtarı oluşturup oturum açılabilir
    • SSH gizli anahtarını birden fazla bilgisayara kopyalamaya gerek yoktur
  • Yönetim görünürlüğü iyileştirmesi

    • Anahtar tabanlı erişim yerine e-posta adresi tabanlı yaklaşım → kullanıcının kim olduğunun açıkça izlenmesini sağlar
    • bob@example.com gibi bir e-posta adresi erişim izin dosyasına eklenirse hemen erişim sağlanabilir

OPKSSH nasıl çalışır

  • Kullanıcı opkssh login çalıştırdığında:
    • Geçici SSH açık/gizli anahtar çifti oluşturulur
    • Tarayıcı üzerinden OpenID Provider'a (Google vb.) giriş yapılır
    • Başarılı olursa, OpenPubkey protokolü aracılığıyla açık anahtar ve kullanıcı kimliğini içeren bir PK Token üretilir
    • .ssh dizinine PK Token içeren açık anahtar dosyası ile gizli anahtar dosyası kaydedilir
  • SSH bağlantısı sırasında:
    • SSH istemcisi, PK Token içeren açık anahtarı SSH sunucusuna gönderir
    • Sunucu, AuthorizedKeysCommand ile ayarlanmış OpenPubkey verifier aracılığıyla açık anahtarın geçerliliğini doğrular
    • PK Token geçerliyse ve e-posta erişim izin listesinde yer alıyorsa bağlantı onaylanır

Teknik sorunların çözümü

  • PK Token iletimi: PK Token, SSH sertifikasının genişletme alanı kullanılarak SSH açık anahtarına eklenir
  • Sunucuda geçerlilik doğrulaması: AuthorizedKeysCommand kullanılarak açık anahtar doğrulaması özel bir programa (OpenPubkey verifier) devredilir
  • Açık anahtar eşleşmesinin doğrulanması: SSH oturumunu koruyan açık anahtarın, PK Token içindeki anahtarla eşleştiği kontrol edilir

Açık kaynak yapılması ve anlamı

  • OPKSSH, Apache 2.0 lisansıyla GitHub üzerinde yayımlandı
  • Daha önce prototip düzeyindeydi, artık ise tam SSH işlevselliğine sahip kararlı bir sürüm sunuyor
  • Cloudflare bunu sürdürmüyor ya da garanti etmiyor, ancak kodu OpenPubkey topluluğuna bağışladı

Başlıca iyileştirmeler

  • Gerçek kullanım için uygun SSH işlevleri eklendi
  • Otomatik kurulum betiği sunuluyor
  • Geliştirilmiş yapılandırma araçları dahil edildi

1 yorum

 
GN⁺ 2025-03-27
Hacker News görüşleri
  • SSH sertifikaları uzun zamandır mevcut ve kendi SSH CA'nizi oluşturup kısa ömürlü sertifikalar alabilirsiniz
    • Sertifikaları otomatik almak için çeşitli seçenekler var; bunlardan biri step-ca projesi
    • step-ca, OAUTH/OIDC sistemleri ve bulut sağlayıcılarıyla iletişim kurabiliyor
    • Ticari çözümler de mevcut
  • SSH CA ve donanım kullanma yaklaşımını tercih ediyorum
    • Bu sayede SSHD içinde üçüncü taraf kod çağırma ihtiyacı olmuyor ve saldırı yüzeyi ile vektörleri en aza indirilebiliyor
    • Anahtar sızıntısı veya yeniden kullanım saldırıları tamamen önlenebiliyor
    • Her şey varsayılan ssh-keygen komutuyla yapılabildiği için yönetici açısından avantajlı
  • ID token'larının kullanıcı açık anahtarını içermediği için SSH protokolünü doğrudan koruyamayacağı iddiasına kuşkuyla yaklaşıyor
    • SSH kimlik doğrulamasının mutlaka anahtar tabanlı olması gerekmiyor
    • Bunun GSSAPI üzerinden uygulanıp uygulanamayacağını merak ediyor
  • Teleport kullanarak sertifika tabanlı SSH kimlik doğrulaması yapıyor ve SSO kimlik doğrulamasıyla kısa ömürlü sertifikalar veriyor
    • Erişim kontrolü ve denetim günlükleri açısından avantajları var
  • Terminalwire adlı bir SSH alternatifini geliştiriyor
    • Geliştirici iş istasyonlarından SaaS üzerinde tek seferlik komut çalıştırmak için uygun
    • Sunucudan istemciye stdio akışı sunarak SSH'a benziyor, ancak ek komutlar da sağlıyor
  • Userify'nin SSH anahtar teknolojisiyle karşılaştırıyor
    • Userify, dağıtık sıradan anahtarlar kullanıyor ve yalnızca merkezi kontrol düzlemini merkezileştiriyor
    • Kimlik doğrulama sunucusu çevrimdışıyken bile sunuculara giriş yapılabiliyor
    • Kullanıcı oturumlarını sonlandırma ve hesap silme özellikleri var
  • Blog gönderisinin yazarı ve opkssh'in başlıca katkıcılarından biri olarak soruları yanıtlamaya hazır olduğunu söylüyor
  • OIDC destekleyen bir SSH CA işletmekten farkını anlamanın zor olduğunu belirtiyor
    • Sunucuların yalnızca CA'nin anahtarına güvenmesi yeterli
  • X.509 sertifika CA desteği sunan bir OpenSSH fork'u var
    • Açık anahtarları token olarak döndüren bir standart ile bunu kullanarak SSH oturumu açan sunucu tarafı kimlik doğrulama ikilisinin yenilikçi olarak sunulmasını ilginç buluyor