Birinin SSH anahtarında boş bir parola olup olmadığını nasıl belirleyebilirim?


44

Linux ve FreeBSD sistemlerimin bazılarında düzinelerce kullanıcı var. Personel bu "ssh ağ geçidi" düğümlerini SSH'ye diğer dahili sunucularda kullanacak.

Bu kişilerin bazılarının şifrelenmemiş bir özel SSH anahtarı kullanmasından endişe duyuyoruz ( Parola içermeyen bir anahtar . Bu kötü , çünkü bir kırıcı bu makinedeki hesabına erişebilseydi, özel anahtarı çalabilir ve şimdi erişebilir Aynı anahtarı kullanan herhangi bir makineye Güvenlik nedeniyle, tüm kullanıcıların özel SSH anahtarlarını bir parola ile şifrelemelerini istiyoruz.

Özel bir anahtarın şifrelenmediğini nasıl anlayabilirim (örn. Parola içermiyor)? Bunu ASCII zırhlı bir anahtara karşı ASCII zırhlı bir anahtara karşı yapmak için farklı bir yöntem var mı?

Güncelleme:

Netleştirmek için, makineye süper kullanıcı erişimim olduğunu ve herkesin özel anahtarlarını okuyabildiğimi varsayalım.


2
homur ssh-agent homur geçidi üzerinde herhangi özel tuşlar olmamalıdır.
derobert,

Birkaç bilgiçlik notu: - Kullanıcılar genellikle zayıf parolalara sahiptir . - Kullanıcılar parolaları değiştirebilir. - Kullanıcı anahtarlarını birden çok yerde saklayabilir. - Kullanıcıların ssh agent'ı kullanmaları muhtemeldir, böylece dizüstü bilgisayarda anahtarın kilidini açabilirler.
Ben Hyde,

Yanıtlar:


59

Eh, boş parolaları olan OpenSSH özel anahtarları aslında şifrelenmez.

Şifreli özel anahtarlar, özel anahtar dosyasında olduğu gibi bildirilir. Örneğin:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BD2F97F977F71FC

BT8CqbQa7nUrtrmMfK2okQLtspAsZJu0ql5LFMnLdTvTj5Sgow7rlGmee5wVuqCI
/clilpIuXtVDH4picQlMcR+pV5Qjkx7BztMscx4RCmcvuWhGeANYgPnav97Tn/zp
...
-----END RSA PRIVATE KEY-----

Yani bir şey gibi

# grep -L ENCRYPTED /home/*/.ssh/id_[rd]sa

hile yapmalı.


3
@ jmanning2k: Az önce parola içermeyen bir RSA özel anahtarı oluşturdum ve 'Şifreleme: yok' dizesini içermiyor.
Stefan Lasiewski

@ jmanning2k: -Lbayrak sadece desenle uyuşmayan dosya adlarını listeler. Yani bu cevap kendi başına doğrudur.
bahamat

Düzeltilmiş duruyorum, netlik için yorum kaldırıldı. Kayıt için, 'Şifreleme: yok' yazısını okuyan ve kopyalanan birkaç adet Özel Macun anahtarı var.
jmanning2k

2
veya string OPENSSH: bkz. tedunangst.com/flak/post/…
Jack Wasey

10

Bunun için her tarafa baktım ve tatmin edici bir cevap bulamadım, ancak bir tane yapmayı başardım, bu yüzden ...

Bunun çalışırsa dosyayı güncelleyeceğini unutmayın; bu nedenle, sınamalarını yaptığınız kullanıcılar tarafından fark edilmemeye çalışıyorsanız, önce anahtarı kopyalamak isteyebilirsiniz. OTOH, kullanıcıyı sadece şifresiz bir anahtarla yakaladığınızdan, belki fark etmeleri umrunda değil. : D

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Key has comment '/home/rlpowell/.ssh/KEYTEST'
Your identification has been saved with the new passphrase.
$ echo $?
0

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Bad passphrase.
$ echo $?
1

3
Neden -N ''parola her zaman değişmeden bırakılsın ki?
Mods'e iyi

facepalm 's mükemmel, çok teşekkür ederim bu.
rlpowell

+1 çünkü bu çözüm SSH'nin yeni özel anahtar biçimiyle bile çalışıyor.
Sebastian Krysmanski

8

Özel anahtara erişiminiz varsa sanırım, genel anahtara karşı kimlik doğrulaması yapmak için parola kullanmadan kullanabilirsiniz. Bu işe yararsa, hiçbir parolaya sahip olmadığını biliyorsunuz. Olsaydı, size bir hata mesajı verirdi.

Özel anahtara erişiminiz yoksa, bunu tespit edebileceğinizden şüpheliyim. Parola'nın amacı, özel anahtarın "kilidini" açmaktır, genel anahtar ile ilgili hiçbir işlevi yoktur.

Aslında, eğer öyle olsaydı, sistemi daha az güvenli hale getirirdi. Biri ortak anahtarı kullanabilir; bu, kaba kuvvet veya parolayı kırmaya çalışan diğer saldırıları toplamaya çalışmak için kullanılabilir.

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.