it-swarm-tr.com

Ssh oturumu açmak için hem özel anahtar hem de parola kimlik doğrulaması kullanılabilir mi?

Birinin devre dışı bırakılması bana diğerini verdiğinden, bunun tersi de, birbirlerini dışlayan görünüyorlar. Ssh sunucularım için iki faktörlü kimlik doğrulama gerçekten güzel geliyor, bu yüzden bunu başarmanın herhangi bir yolu var mı?

56
chrisdotcode

Son Fedora ve RHEL 6 sürümleriyle RequiredAuthentications2 pubkey,password için hem pubkey hem de şifre kimlik doğrulaması gerekir. Bu genellikle kullanıcının şifresini değil, pubkey ve 2 faktörlü kimlik doğrulama jetonunu gerektirir.

Güncelleme: Şimdi RHEL/CentOS 7'de ve son OpenSSH sürümüne sahip herhangi bir sistemde şunları kullanabilirsiniz:

AuthenticationMethods "publickey,password" "publickey,keyboard-interactive"

IP'leri hariç tutmak için Eşleme yönergesini kullanmak veya Kullanıcılar da mümkündür.

48
mricon

Aynı sunucuda hem ortak anahtar hem de parola doğrulaması yapabilirsiniz. Ortak anahtar kimlik doğrulaması başarısız olursa, şifre kimlik doğrulamasına gider.

Her ikisini de gerektiriyorsa, bu aptalca ve verimsiz görünüyor ve man sshd_config Bunu yapmak için bir seçenek yok.

Ssh özel anahtarınızın güvenli bir parolası olmalıdır. Dolayısıyla, bir saldırgan özel anahtarınızı alırsa, önce parolanızı almadan hiçbir şey yapamaz. Eğer bu parolayı tehlikeye attılarsa (büyük olasılıkla bir keylogger ile; ya da son derece zayıf bir parolayı zorlayan kaba), ezberlenmiş herhangi bir şifreyi önemsiz bir şekilde de tutabilirler.

Gerçekten isterseniz, muhtemelen ForceCommand ile bir şey kurabilirsiniz (örneğin, yalnızca ortak anahtar kimlik doğrulamasına izin verin ve ardından kullanıcıyı parola isteyen bir Shell'e yönlendirin). Bunu tavsiye etmiyorum.

Pozlamayı sınırlamak istiyorsanız daha iyi bir alternatif, ssh portuna erişebilen IP'leri sınırlamak için bir güvenlik duvarı kurulumuna sahip olmaktır; bir noktada başka bir bilgisayardan tünel açmanız gerekebiliyorsa, bir yerde bir sunucuda ek bir VPN çalışıyor olabilir. Ayrıca, belirli bir bağlantı noktası vurma düzeninden sonra güvenlik duvarında bir delik açmak için knockd gibi bir şey kullanabilirsiniz, ancak trafikte gizlice dinleyen herkesin bir bağlantı noktasını açmak için vurma düzenini yeniden oynatabileceğini unutmayın.

18
dr jimbob

(çapraz gönderme SO yanıtı bu güne güncellenmiş çözüm ile)

sshd_config(5) için manuel sayfayı okursanız, erişim izni verilmeden önce geçmeniz gereken yöntemlerin listesini alan AuthenticationMethods seçeneği vardır. Gerekli kurulumunuz:

AuthenticationMethods publickey,password

Bu yöntem en son openssh (openssh-6, openssh-7) ile mevcut tüm Linux sistemlerini çalıştırmalıdır.

Eski sistemler

Bildiğim tek istisna, aynı değerlerle (diğer cevapta açıklandığı gibi) farklı seçeneklerin ayarlanmasını gerektiren RHEL 6 (openssh-5.3):

RequiredAuthentications2 publickey,password
12
Jakuje

Bunu biraz daha araştırdım ve aşağıdakileri buldum.

PAM'ı iki faktörlü kimlik doğrulaması için kullanabilirsiniz, ancak bunu yaparken SSH anahtarlarını kullanmayacaksınız, farklı iki faktör kullanacaksınız.

Örneğin, google'ı iki faktörlü kimlik doğrulamasıyla kullanabilir ve kimlik doğrulaması için pam'i kullanarak

http://www.techrepublic.com/blog/opensource/two-factor-ssh-authentication-via-google-secures-linux-logins/2607

4
Phillip Nordwall

Benim için çalışan tek çözüm/etc/ssh/sshd_config'de (CentOS7 ile test edilmiştir) aşağıdakilere sahip olmaktır:

PubkeyAuthentication yes 
AuthenticationMethods publickey password
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication yes 
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes

Bu, PAM'ın etkinleştirilmiş olması, publik anahtarıyla ilgili her satırı etkinleştirmiş olması ve son olarak AuthenticationMethods'ın her iki yöntemi de düzgün bir şekilde listelemesi anlamına gelir. Jakuje tarafından yazılan olmasına rağmen, AuthenticationMethods'dan sonra publickey ve şifre arasına virgül eklememeniz gerektiğini lütfen unutmayın.

2