SSH: İki Faktör Kimlik Doğrulama


30

Şu anda Samba ve birkaç başka servisle birlikte OpenSSH çalıştıran bir Ubuntu Sunucusu 12.04'üm var. Şu anda ortak anahtar kimlik doğrulaması ayarlarım ve iki faktörlü kimlik doğrulaması kurmanın mümkün olup olmadığını merak ediyorum. Şu anda Gmail hesabımla kullandığım Google Authenticator'a bakıyorum.

Uyumlu olacak gibi görünen bir PAM modülü buldum, ancak bir şifre ve oluşturulan kodu kullanmak zorunda kalıyorsunuz.

SSH sunucuma kimlik doğrulaması yapmak için genel anahtarımla birlikte Google Authenticator Uygulamasını (veya benzer bir şeyi) kullanmanın bir yolu olup olmadığını merak ediyorum.


Yorumların çoğu, OpenSSH ile PAM ve genel anahtar kimlik doğrulaması kullanmanın imkansız olduğunu belirten hata raporları gibi görünüyor. Anahtarımla bir geçiş cümlesi kullandığımdan bunun gereksiz olduğunu söyleyen kısımlar da buldum. Tüm çözümler görünüşte yalnızca Google Authenticator ve bir şifre değil bir ortak anahtar sağlayan izin. Tamamen özlüyorum ama ikisini de nasıl uygulayacağımı göremiyorum.
Beton Eşek

Bunun neden -1 olduğundan emin değilim, bu çok ilginç bir soru ve ben de cevabı bilmek istiyorum (bunu kullanacağımı sanmıyorum ama yine de, bilgi bankalarında saklamak için iyi)
Mark Henderson

@Pierre Hem genel anahtar kimlik doğrulaması hem de bir Google OTP gerektiriyor musunuz?
mgorven

@mgorven Evet, hem genel anahtar hem de Google OTP ayarlamaya çalışıyordum. Bazı kişilerin, anahtar üzerinde bir parola kullanmanın iki faktör olarak sayılmasının yeterli olduğunu söylediklerini duydum, ancak şifrelenmemiş anahtarı bellekten çalmak konusunda endişeliyim. Kimlik doğrulama için kullanılan iki ayrı aygıta sahip olmayı tercih ederim, biraz paranoyak oluyorum.
Beton Eşek

Bunun resmi olarak 6.2'de uygulanması amaçlanmıştır: bugzilla.mindrot.org/show_bug.cgi?id=983#c59
Tobias Kienzler

Yanıtlar:


8

Red Hat, çoklu kimlik doğrulama mekanizmaları gerektirmesi için RHEL (ve dolayısıyla CentOS) 6.3’deki OpenSSH’e bir yama eklemiştir, böylece şöyle bir şey yapabilirsiniz:

RequiredAuthentications2 publickey,keyboard-interactive

Daha fazla ayrıntı için sürüm notlarına bakın .

Ne yazık ki bu özellik OpenSSH'nin yukarı akışında ya da Ubuntu 12.04'te görünmüyor, bu nedenle yamayı bulmak ve OpenSSH'yi yeniden derlemek istemediğiniz sürece, şansınız tükendiğinden korkuyorum.


Bana cevap bulmak için harcadığınız çabayı takdir ettiğimi söylemeliyim, kesinlikle Google’ın birkaç sayfasının sonuçlarına bakmaya çalıştım, ancak hepsi sadece bir şifre ve bir OTP kullanmak zorunda kaldığımı ima etti. Muhtemelen bu özellik ile oynamak için bir CentOS VM oluşturacağım.
Beton Eşek

@Pierre Çok çaba değil , daha önce bu özelliği biliyordum ;-)
mgorven

İlgili hatayı ve bazı ek notları buldum . Hata, eki bir ek olarak içerir.
Robie Basak

Ve işte bir yukarı akış openssh böceği . Benzer işlevselliğin yakında openssh içinde yukarı akışa geçeceği anlaşılıyor.
Robie Basak

openssh 6.2, Ubuntu'nun gelişim sürümüne girdi, bu nedenle bu destek beklenen 13.10 sürümünde olacaktır. AuthenticationMethodsBirden çok gerekli yöntemi belirlemek için giriş yönünü kullanır , böylece Google Authenticator'ın sonunu yapan PAM ile hem ssh hem de PAM gerektirebilir.
Robie Basak

8

Duo Security arıyorsunuz


1
Bu. Evet. Bu şeyi seviyorum!
LVLAaron

Kesinlikle - Duo'nun Unix / Linux (cevapta bağlantı), OpenVPN ( duosecurity.com/docs/openvpn_as ) veya herhangi bir OATH TOTP tabanlı iki faktörlü hizmet veya LastPass şifre yönetimi için kurulumu kolaydır . Google Authenticator ile uyumlu (TOTP kullanan) herhangi bir hizmet Duo'nun mobil uygulamasıyla veya TOTP'yi destekleyen bir donanım belirteci ile kullanılabilir.
RichVel

5

Hem Google Authenticator PAM modülünü hem de genel anahtarları kullanabilirsiniz, ancak belirli bir kimlik doğrulaması için yalnızca bir seferde kullanılacaktır. Diğer bir deyişle, bir kullanıcı yetkili bir ortak anahtarla oturum açarsa, hiçbir jeton gerekmez.

Veya, başka türlü söylemek gerekirse: belirteçler SSH anahtarları için değil, yalnızca parola doğrulaması için gereklidir.

Bu sınırlama, bu arada Google Authenticator modülünden değil, ChallengeResponseAuthenticationPAM için yalnızca iki faktörlü kimlik doğrulaması (via ) uygulayan , ancak geçerli bir genel anahtar sağlandığında PAM'i aramayan SSH'den geliyor.


Bu doğruydu, ancak şimdi değişti. openssh 6.2 AuthenticationMethods, bunu çevirebilen bir yapılandırma paragrafı ekler . Şimdi ikisine de ihtiyaç duyabilirsiniz.
Robie Basak

3

Bu soru 2012'den geliyor. O zamandan beri SSH değişti ve SSH2 protokolü uygulandı.

SSH'nin daha yeni sürümlerinde (> = 6.2), adam sshd_config şöyle diyor:

AuthenticationMethods
       Specifies the authentication methods that must be successfully completed for a user to be
       granted access.  This option must be followed by one or more comma-separated lists of
       authentication method names.  Successful authentication requires completion of every method
       in at least one of these lists.

       For example, an argument of ``publickey,password publickey,keyboard-interactive'' would
       require the user to complete public key authentication, followed by either password or key-
       board interactive authentication.  Only methods that are next in one or more lists are
       offered at each stage, so for this example, it would not be possible to attempt password or
       keyboard-interactive authentication before public key.

       This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
       protocol 1 is also enabled.  Note that each authentication method listed should also be
       explicitly enabled in the configuration.  The default is not to require multiple authentica-
       tion; successful completion of a single authentication method is sufficient.

Bu sayfa http://lwn.net/Articles/544640/, aynı zamanda bir publickey ve PAM kimlik doğrulaması kullanma olasılığından da bahseder.


2

Bu sorunun biraz eski olduğunu biliyorum, ancak bir çözüm arayan gelecekteki insanların (kendim dahil) uğruna, sshd_config dosyasındaki ForceCommand seçeneğini kullanarak daha sonra kimlik doğrulamasını yapan bir komut dosyasını çalıştırmaktan bahsettik. Bir örnek komut dosyası var burada o örnekte o sshd_config en ForceCommand ile sistem genelinde bunu yapmak yerine authorized_keys dosyadan deyimiyle olsa da, ihtiyaçlarınıza biraz değiştirebilir.



0

Özel anahtarınıza bir parola ayarladıysanız, zaten iki faktörlü kimlik doğrulamanız vardır. Giriş yapmak için insanların ihtiyaç duyacağı şeyler:

  1. sahip olduğunuz bir şey - özel anahtarınız
  2. bildiğiniz bir şey - özel anahtarınızın parolası

3
İki şifreleri do not iki faktörlü kimlik doğrulama yapmak. Anahtarın kendisi geçerli bir "sahip olduğunuz bir şey" değildir, çünkü bir şey değildir, sadece bir bilgi parçasıdır. Bir şey bir kimlik doğrulama faktörü olarak kullanılmak için kopyalanamaz veya en azından önemsiz şekilde kopyalanamaz olmalıdır.
MadHatter

2
Tamamen aynı fikirde değilim. Anahtarlar ve sertifikalar "sahip olduğunuz bir şey" değilse, bunlar ne? Kesinlikle "bildiğiniz bir şey" değil (SSH anahtarınızı öğrenme alışkanlığınız var mı?) Ve kesinlikle "olduğunuz bir şey" değil. Bunlar sadece üç seçenek, bu yüzden bir eleme süreci ile, kesinlikle "sahip olduğunuz bir şey".
Bart B

1
Katılıyorum; benim için sorun en fazladır (bildiğiniz | bildiğiniz bir şeydir). İki faktörlü kimlik doğrulaması fikri, farklı özelliklere sahip iki sınıf üyesine ihtiyaç duymaktır; Bildiğiniz bir şeyin taşınması kolaydır, ancak sizin bildiğiniz gibi başkası tarafından da bilinir; bu yüzden ikinci, farklı bir faktör ekleriz. "Sahip olduğunuz bir şey" ancak, kopyalanamadığında (veya kopyalanması zorsa) farklıdır. Aksi takdirde, elbette, bildiğiniz bir şey değildir, ancak tanıdığınız bir şeyden niteliksel olarak farklı değildir , çünkü bir başkası sizinle aynı anda alabilir.
MadHatter, Monica

2
Parola korumalı bir keypair'in doğrudan kullanıcı adı ve parola ile ilgili güvenlik konusunda büyük bir gelişme olduğuna kesinlikle katılıyorum. Ne yazık ki, böyle bir çiftin iki faktör olarak sayıldığına katılıyorum ve muhtemelen buna katılmamayı kabul etmek zorunda kalacağız.
MadHatter, Monica

3
Bir parola ile şifrelenmiş özel bir anahtarınız varsa, sunucuya yalnızca bir şeyi kanıtlarsınız: müşterinizin özel anahtarı bildiğini kanıtlayın. Parolanızı bildiğinizi sunucuya kanıtlamaz; Sunucu parolanızın varlığını bile bilmiyor. Bu nedenle, yalnızca “bildiğiniz bir şey” dir (müşteriniz bunu bildiğinden beri) ve yalnızca bir faktördür. Bir saldırgan sadece bir şeyi ele geçirirse (özel anahtarın) o zaman tehlikeye girersin. Bu bir faktör. Parolanızın ve özel anahtarınızın iki faktör olarak sayıldığını iddia etmek, sadece sofistike bir alıştırmadır. Önemli olan telde olan şey.
Robie Basak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.