SSH şifre doğrulama neden güvenlik riski taşıyor?


68

OpenSSH yapılandırmasıyla ilgili çoğu kılavuz, anahtar kimlik doğrulaması lehine parola doğrulamayı devre dışı bırakmanızı önerir. Ancak bence parola doğrulamanın önemli bir avantajı var: kesinlikle herhangi bir yerden bir anahtar olmadan bağlanma yeteneği. Her zaman güçlü bir parola ile kullanılırsa, bu bir güvenlik riski olmamalıdır. Yoksa öyle mi?


2
Şifreler, koklanabilen, tahmin edilebilecek ve tekrarlanabilen tek faktörlü bir kimlik doğrulamadır. Anahtarlar (muhtemelen) iki faktörlüdür. Herhangi bir yerden tek bir faktörle giriş yapabilmek bazı sistemlerde kabul edilemez.
Alex Holst

Yanıtlar:


25

Pw veya anahtar tabanlı kimlik doğrulama için pro ve con's vardır.

Bazı durumlarda, örneğin, anahtar tabanlı kimlik doğrulama, şifre kimlik doğrulamasından daha az güvenlidir. Diğer durumlarda, daha az güvenli olan pw tabanlı. Bazı durumlarda, bir kişi diğerlerinde daha az uygundur.

Her şey buna bağlı olarak ortaya çıkıyor: Anahtar tabanlı kimlik doğrulama yaptığınızda , anahtarınızı bir parola ile güvenceye almalısınız . Ssh-agent'ı çalıştırmıyorsanız (ssh-agent her seferinde parolanıza girmenizi serbest bırakır), kolaylık açısından hiçbir şey kazanmadınız. Güvenlik tartışmalıdır: Saldırı vektörü şimdi sunucudan SİZE veya hesabınıza veya kişisel makinenize kaydırıldı, (...) - kırılması daha kolay olabilir veya olmayabilir.

Buna karar verirken kutunun dışında düşünün. Güvenlik açısından kazanıp kaybetmemeniz, ortamınızın geri kalanına ve diğer önlemlere bağlıdır.

düzenleme: Oh, sadece bir ev sunucusu hakkında konuştuğunuzu gördüm. Aynı durumdaydım, "şifre" ya da "üstünde anahtar olan USB bellek" her zaman yanımda mı? Birincisine gittim ama SSH dinleme portunu 22'den farklı bir şeyle değiştirdim. Bu, bütün bu topal senaryo çocuklarını durdurarak bütün ağ alanlarını zorlayan kaba davranıyor.


SSH portunu 22'den değiştirmek, pek çok durumda hiç iyi bir fikir olmayabilir. adayinthelifeof.nl/2012/03/12/…
Tymek

75

Ssh tuşlarını kullanmak parola girişine kıyasla benzersiz bir özelliğe sahiptir: izin verilen komutları belirleyebilirsiniz. Bu ~/.ssh/authorized_keys, sunucudaki dosyayı değiştirerek yapılabilir .

Örneğin,

command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

bu anahtarla sadece `/usr/local/bin/your_backup_script.sh" komutuna izin verirdi.

Anahtar için izin verilen ana bilgisayarları da belirleyebilirsiniz:

from="yourclient,yourotherclient", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

Veya ikisini birleştirin:

from="yourbackupserver", command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

Anahtarlarla, belirli bir hesabın parolasını açıklamadan, bir kullanıcıya geçici olarak erişim izni verebilirsiniz (örneğin, bir danışman). Danışman işini bitirdikten sonra geçici anahtar kaldırılabilir.


Çok çok yararlı bir ipucu.
Sachin Divekar

3
D: Daha o kullanarak Keys (iyi teknik onun daha da kuvvet) elle terminalde girebilirsiniz karşılaştırmalı olarak ne uzun 2000 karakter şifresini olması gibi
Abhishek Dujari

3
SSH kimlik doğrulaması ile ilgili iki çok yararlı ipucu, ancak gerçekten benim için soruyu cevaplamıyor ...
MikeMurko

Parola doğrulanmış bir kullanıcıyı belirli bir komutu geçmeye zorlamak istiyorsanız, giriş kabuğunu değiştirin. Ayrıca, "şifreyi açıklamadan geçici erişim izni verme" çok kötü bir fikirdir. Daha sonra erişim sağlamak için yüzlerce farklı yolu vardır.
b0fh

Sadece son paragraf IMO - soruları ayrıntılı bir şekilde iptal edilmesine izin verirken, şifrelerle değiştirdiğinizi herkese bildirmeniz gerekir.
Riking

48

Her iki dünyanın en iyisini, yalnızca ağınızın içinden parola doğrulamasına izin vererek alabilirsiniz. Şunun sonuna aşağıdakileri ekleyin sshd_config:

PasswordAuthentication no
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

7

Sorunuza kısmen yanıt verdiniz - saldırgan ne kadar çok yerden bağlantı kurabiliyorsa, kaba kuvvetle zorla sunucunuza zorla girme olasılığı o kadar artar (DDoS'yi düşünün).

Ayrıca, şifrenizin uzunluğunu anahtar boyutuyla karşılaştırın (genellikle binlerce bit).


4
96 bit entropi, İngilizce yazılmışsa 80 karakterlik bir şifre anlamına gelir; Yazdırılabilir karakter kümesinden rastgele anlamsızsa 15 karakter. ssh şifrelerinizin o kadar uzun / güçlü olduğundan emin misiniz?
MadHatter

3
Sözlük saldırılarına açık olmayacak 96 bit entropiye sahip birden fazla şifreniz varsa, yine de bir şekilde bir şifre yönetim yazılımı kullanmanız gerekecek, böylece şifreler kullanmanın her yerinden erişilebilir bir şekilde etkili bir şekilde kaybedeceksiniz. .
Nick Downton

5
@SachinDivekar sadece [a-zA-Z] kümesinden rastgele şifreler kullanıyorsanız, İngilizce kelime ise değil, 96 bit entropi.
Jaap Eldering

16
@NickDownton - Keypass yazılımına başvurmadan güzel ve uzun bir şifreniz olabilir. Gibi bir şey mywifesnameisangelaandshehasanicebuttsözlük saldırılarına yenilmez, çok güçlü ve hatırlaması çok basit ama tahmin etmek imkansız. Ve eğer kazancı karınıza verirseniz, browni işaret ederse bonusla birlikte gelir.
Mark Henderson

7
Üzgünüm, Mark, ama bu yanlış. Verdiğiniz parola 37 karaktere sahiptir ve bu nedenle kabaca 44 rastgele yazdırılabilir karakterden zayıftır ve saldırıya açık 44 bit entropi vardır. Vikipedi'nin Claude Shannon'un çalışmaları hakkındaki makalesini okuyun, ancak sonuçta ortaya çıkan sonuçta İngilizce yazmanın oldukça öngörülebilir olduğu söylenebilir - örneğin, "mywifesname" den sonra, "is" kelimesi neredeyse garantilidir. Kelimeleri içeren güçlü şifreler için , bir sözlükten dizilmiş dört rastgele kelime, yaklaşık 77 bit entropi; hala harika değil ama fena değil.
MadHatter

7

Bir şifre ile giriş yaptığınızda, şifrenizi sunucuya iletirsiniz. Bu, sunucunun operatörünün, şifrenize erişmek için SSHD'yi değiştirebileceği anlamına gelir. Genel anahtar kimlik doğrulamasında, her biri sunucuya giden yalnızca genel anahtarınız olduğundan özel anahtarınızı alamazlar.


2
Bu, özellikle bir yazım hatası nedeniyle yanlış sunucuya bağlandığınızda geçerlidir. Örneğin, zamanın belirli bir noktasında .cg, ssh etkin olan tek bir makineye işaret eden bir jokerdir. .Ch için .cg dosyasını her ne zaman yanlış yazarsanız, o kutuya bağlanır ve şifrenizi
sızdırırsınız

@ b0fh gerçekten. Söyleyebileceğim kadarıyla, ssh ile şifreleri kullanarak getirilen tek gerçek güvenlik açığı budur. Bağlandığınız sunucunun sahibi zaten varsa veya bağlandığınız IP adreslerini (MITM) taklit edebilirseniz, zaten kaybettiniz.
Ocak

6

ssh tuşları ortadaki adam parolanıza yapılan saldırıları önler.

Bir anahtarla giriş yapmaya çalıştığınızda, sunucu genel anahtarınıza göre bir meydan okuma oluşturacak ve bunu müşterinize gönderecektir. bu şifresini çözecek ve göndermek için uygun bir cevap oluşturacaktır.

Özel anahtarınız hiçbir zaman sunucuya gönderilmez ve dinleyen hiç kimse bu tek oturumu kesmek dışında hiçbir şey yapamaz.

bir şifre ile sizin kimlik bilgilerine sahip olurlardı.

Benim çözümüm, bir usb anahtarındaki şifreli bir bölümdeki uygun formatlarda taşınabilir bir ssh anahtarının bulunmasıdır. bu bana izin verir:
kaybolması durumunda o anahtarı kolayca geri çeker.
hangi sunuculara erişmeme izin verdiğini sınırlandırın
ve etrafımda taşımamı sağlayın

takma yazılımı yüklemek bir ağrı olsa da (truecrypt)


1
Bu yanlış. Sunucunun ortak anahtarını öğrendiğiniz an (önbelleğe eklerseniz ve ilk bağlantıda MITM'i alamazsanız yaparsınız), MITM saldırılarına karşı bağışıklığa sahip olursunuz. Anahtar / şifre tabanlı kimlik doğrulamanın bununla ilgisi yok. Parola hiçbir zaman kablo üzerinden net olarak gönderilmez, makine düzeyinde kimlik doğrulamasında güvenli bir bağlantı (sizin / genel anahtarım sizin) her zaman kullanıcı düzeyinde kimlik doğrulamasından önce kurulur (şifreniz / bu ortak anahtarın sizin olduğunu kanıtlayın) .
Thomas,

3
Thomas, gerçekte birçok insan parmak izi değişikliği hakkındaki uyarıyı görmezden geliyor. Pubkey auth, sunucunun özel anahtarının bir şekilde tehlikeye girmesine veya bir insanın "evet" türünün kullanılmayacak şekilde "evet" olmasına rağmen MITM korumasını garanti eder: Saldırganın, trafiği görememekle giriş yapamayacak bir genel anahtar göndermek arasında bir seçim yapması gerekir. kazan.
Score_Under

5
Cevaplayıcıya: Truecrypt kullanmanıza gerek yok, openssh özel anahtarları kendi isteğe bağlı parola tabanlı şifrelemeleriyle birlikte gelir.
Score_Under

5

@ MartinVejmelka'nın dediği gibi bir takas.

Anahtar tabanlı auth kullanmanın nedeni, anahtarın şu an üstünde veya gelecekteki brute zorlamalarının üstünde olması ya da kendi PC'nizden gelmeniz veya bir USB çubuğundaki ya da benzeri bir tuşa sahip olmanız gerektiğidir.

Bir parola aşağıdaki sorunlara sahiptir:

  • Kısa ise zorla zorlanabilir
  • Uzunsa kolayca unutulur.
  • Omuz sörf olabilir

Bir anahtar, büyüklükteki emirlerin uzunluğudur ve hiçbir noktada gösterilmez, bu yüzden bu üç sorunu önler.


ancak bir anahtar dosyası kullanmak, kalem sürücüyü kaybetme sorununu veya kullandığınız herhangi bir depolamayı da ekler.
João Portela

1
bu noktada kayıp anahtar kaldırılabilir ve yeni bir anahtar eklenebilir. Parolalarla (özellikle paylaşılan parolalar), bu BÜYÜK bir acı olabilir ve çok fazla inleme içerir.
SplinterReality

Benim (Yakın zamanda emekli) şifreleri biri: 08Forging2?seminal*^Rajas-(Posed/|. Rasgele üretildi, ancak hatırlamakta hiç zorlanmıyorum. Ve iyi şanslar omuz sörf veya kaba zorlama.
finnw

1
@finnw Doğru Horse Battery Staple :-) security.stackexchange.com/q/6095/485
Rory Alsop

2

Zaten burada belirtilen iyi noktalar.

En temel riski göz önünde bulundurduğumda, temel prensiplere güçlü bir parola ile dikkat ettiğiniz göz önüne alındığında, birçok bilgisayarda kullanıcının farkına varmadan yüklü olan keylogger'ları olması. Truva atlarını içeren faydalı yararların tüm sitelerini yaratan insanlar bile var, bu yüzden en iyisini yapabiliriz. Bir keylogger örneğin giriş bilgilerini bir bilgisayar korsanına e-posta ile gönderir ve ardından sunucuya kolayca erişir.

Geçenlerde Norton tarafından Minecraft kavanoza uçuş eklemek için Zombee Mod yükleyicisini (kavanozun değil, yükleyicinin) indirmesi konusunda uyarıldım. Ayrıntılara baktım ve Norton bu sitede bir truva atı olarak işaretlenmiş birçok yardımcı program listeledi. Bunun doğru olup olmadığını bilmiyorum, ancak dosya adlarına göre oldukça belirgindi. Ayrıca, truva atlarının dağılmadan önce (bazı) warezlere kondukları da bilinen bir gerçektir.


2

SSH'nin şifreler üzerindeki potansiyel faydalarından biri, bir SSH şifresi belirtmezseniz, bir daha asla şifre girmenize gerek kalmaması ... bilgisayarınız, sunucuda kendinden emin bir anahtar olduğundan dolayı güvenilirdir. Bununla birlikte, genellikle her zaman bir SSH parolası kullanırım, bu yüzden faydasını ekarte ederim.

Kullanıcı kılavuzlarının SSHOpenSSHKeys için Ubuntu el kitabından gelmesinin neden genellikle şifre doğrulama konusunda SSH'yi önerdiğinin en iyi cevabını buluyorum. Alıntı yaparım,

Önemli olduğunu düşünmüyorsanız, gelecek hafta alacağınız tüm kötü amaçlı oturum açma girişimlerini kaydetmeyi deneyin. Tamamen sıradan bir masaüstü bilgisayar olan bilgisayarım, yalnızca geçen hafta şifremi tahmin etmek için 4.000'den fazla girişimde ve neredeyse 2.500 deneme girişimi yaptı. Bir saldırganın şifrenizi geçmeden önce kaç tane rastgele tahmin olacağını düşünüyorsunuz?

Temelde, noktalama işaretleri, büyük ve küçük harfler ve sayılarla dolu, sağlam, uzun boylu bir şifreniz varsa ... muhtemelen şifre doğrulaması ile tamam olacaksınız. Ayrıca, kayıtlarınızı izlemeyi planlıyorsanız ve ağ üzerinde "süper güvenli" şeyler yapmıyorsanız ... yani bir ev sunucusu için kullanıyorsanız. O zaman elbette bir şifre iyi çalışıyor.


1

Passwd auth yöntemi gerçekten güvensizdir (imho). Bu mekanizma ile şifre sshd sunucusuna iletilecektir (@ramon'un zaten söylediği gibi). Bu, bazı kişilerin şifreyi almak için sshd sunucusunu değiştirebileceği anlamına gelir. Ortadaki Bir Adam saldırısıyla, yerel bir ağ içinde gerçekleştirilmesi çok kolaydır.

Bu yamayı yükleyerek sadece sshd sunucusunu düzeltebilirsiniz ( https://github.com/jtesta/ssh-mitm ). Yamalı sunucunuzu istemci ile otantik sshd sunucusu arasına koymak için arpspoofve iptablesdüğmelerini kullanın .

Lütfen şifre yetkisini devre dışı bırakın: config dosyasını açın /etc/ssh/ssh_configve satırı ekleyin PasswordAuthentication no.


SSH istemcisi sunucuyu RSA parmak izi için kontrol etmiyor mu? Bu özel sunucuya en az bir kez ayırdıktan sonra, parmak izi hatırlanacaktı, bu nedenle MITM saldırılarında SSH bir uyarıyı yakar, değil mi?
Septagram

1
Evet. Uyarı belirir, ancak bunun nedeni zamanın% 99'unun os yeniden kurulumundan, config ecc'yi değiştirmesinden kaynaklanır, çoğu kullanıcı uyarıyı görmezden gelir ve devam eder.
Pioz

@Septagram Birçok kabuk hesabı sağlayıcısı, kullanıcı hesaplarının yeni sunuculara
taşınması

-2

-o StrictHostKeyChecking=noSeçeneği ile bypass edebilirsiniz . Bir kabuk betiğinde ssh kullanılırken bu çok kullanışlıdır.

ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o PasswordAuthentication=no -o ConnectionAttempts=5 xxUser@xxxHost
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.