Aynı SSH sunucu anahtarlarına sahip birden fazla cihaza sahip olmak ne kadar kötü?


21

FreeBSD ve SSH çalıştıran gömülü bir cihaz üzerinde çalışıyorum.

Bildiğiniz gibi, sshd ilk başlatıldığında rasgele bir dizi sunucu anahtarı oluşturmayı seviyor. Sorun şu ki, ürünü salt okunur bir sd kart dosya sistemiyle (pazarlık dışı) gönderiyoruz.

Gördüğüm gibi iki seçeneğim:

  • Tüm cihazlarda aynı sshd server anahtarlarını gönderin
  • Bir bellek dosya sistemi kurun ve her açılışta sunucu anahtarlarını oluşturun (yavaş ...)

Tüm cihazlarda aynı sunucu anahtarlarını göndermek büyük bir güvenlik sorunu mu? Bu öğeler doğrudan internette olmayacak. Bazen aynı kişinin ve aynı ağın sahip olduğu birden fazla cihaz olacaktır.

Cihaz çoğu zaman internete bağlı olmayacaktır.

SSH ile giriş yapmak normal çalışmanın bir parçası değildir. Çoğunlukla programcıların ve teknisyenlerin rahatlığı içindir. Müşteriler SSH ile cihaza giriş yapamayacaklar.

Birden fazla donanım aygıtında aynı sunucu anahtarlarını kullanmanın sonuçları nelerdir?

PS birisi lütfen bir şeylerin interneti etiketi oluşturabilir mi?

EDIT : Tüm hostlara (cihazlar) aynı host private anahtarlarını kurmaktan bahsediyorum. Kullanıcının genel / özel anahtarlarına gelince, şu anda anahtar tabanlı giriş yapma planı yoktur - şifre girişi olur. Yine, tüm sunucularda (cihazlarda) aynı şifre.

Bunun muhtemelen kötü bir fikir olduğunu biliyorum. Nedenini tam olarak kötü bir fikir olduğunu bilmek isterdim, böylece takasları anlayabiliyorum.


Ana bilgisayar tuşlarını kastediyorsanız, cihazınızdan birden fazla kullanıcıya sahip olan kullanıcılar, ssh istemcisi yapılandırmalarına bağlı olarak uyarılar alabilir. En büyük endişeler gerçek ssh kimlik doğrulama anahtarlarının etrafında olacaktır. Umarım herhangi bir özel anahtar yüklemiyorsunuzdur ve umarım ortak anahtarlarınız belirli kaynak ağları ile sınırlandırılmıştır ve umarım teknisyenlerin sahip olduğu özel anahtarlarınızın üzerinde güçlü bir parola bulunur ve umarım bu anahtarlar yanlışlıkla bir depoya kontrol edilmez. IoT'ler bu şeyler yüzünden gerçekten kötü bir isim alıyor. Yapacağını söylememek, sadece bunun büyük bir sorun olduğunu söylemek.
Aaron

Aynı ana bilgisayar anahtarını tüm sunuculara kurmaktan bahsediyorum, eğer demek istediğin buysa.
NXT

2
Tüm cihazlarda aynı kullanıcı adı / şifreyi kullanmak çok kötü bir fikirdir. Bunlar kaba kuvvete zorlamak, genel anahtar kimlik doğrulaması için kullanılan özel anahtardan daha kolaydır. Bu aygıtın doğrudan internete bağlı olmaması gerekse bile, birisi yine de yapacak. Ve eğer "doğrudan bağlanmadı", NAT anlamına gelirse, yeterince bağlanırlar ...
Tero Kilkanen

7
SSH anahtarının paylaşılması, bir cihazda özel anahtara erişebilen birinin tüm bu cihazları taklit edebileceği anlamına gelir.
kullanıcı253751

3
Bu ilginç bir soru olmasına rağmen, sistem yönetimi ile ilgili hiçbir şey göremiyorum ve bu nedenle Sunucu Hatası için konu dışı. Gönderdiğiniz gömülü bir cihaz için bir hata ayıklama / tanılama arayüzü tasarlamayı düşünüyorsunuz, sistem yöneticileriyle alakalı bir arayüz değil. Bu soru Bilgi Güvenliğine aktarılabilir .
200_success

Yanıtlar:


27

SD kartta ssh ana bilgisayar anahtarları veya diğer salt okunur ortamlar gibi ana bilgisayara özgü verileri depolamak yerine, bunu gömülü bir sistemde olduğu gibi NVRAM'da saklayabilirsiniz. Anahtarları önyükleme sırasında saklamak ve almak için bazı özel komut dosyaları yapmanız gerekir, ancak komut dosyaları her aygıt için tam olarak aynı olacaktır.


12

Aynı anahtar çiftini tüm cihazlarınızla göndermenin etkisi, doğrudan kendilerine bağlanan müşterilerin güvenliği ile ilgilidir, çünkü (SSH istemcisinden) bağlanabileceği cihazı benzersiz bir şekilde tanımlamanın bir yolu yoktur. Anahtar çiftiniz sızdırılmışsa, MITM saldırıları için kullanılabilir.

Öte yandan, her önyüklemedeki anahtarları yeniden oluşturmak istemcilere de uyarı verir.

Başvuru için man ssh(1):

sshhiç kullanılmamış tüm ana bilgisayarlar için kimliğini içeren bir veritabanını otomatik olarak tutar ve denetler. Ana bilgisayar anahtarları ~/.ssh/known_hostskullanıcının ana dizininde saklanır . Ek olarak, dosya /etc/ssh/ssh_known_hostsbilinen ana bilgisayarlar için otomatik olarak kontrol edilir. Yeni ana bilgisayarlar otomatik olarak kullanıcının dosyasına eklenir. Bir ana bilgisayarın kimliği hiç değişmezse, sshbu konuda uyarır ve şifrelemeyi atlatmak için kullanılabilecek sunucu sahtekarlığını veya ortadaki adam saldırılarını önlemek için parola doğrulamayı devre dışı bırakır. Bu StrictHostKeyCheckingseçenek, ana bilgisayar anahtarı bilinmeyen veya değiştirilmiş makinelere girişleri kontrol etmek için kullanılabilir.


2
Neden sadece bir kez üretemediklerini anlamıyorum (her cihazda, ilk açılışta) ve sonra bir daha asla tekrar üretilemiyorlar (kaldırılmadıkları sürece)?
djsmiley2k - CoW,

Mükemmel yapılabilir. Ancak OP şunları yapmak istediğini belirtir: 'Bir bellek dosyası sistemi kurun ve her önyüklemede sunucu anahtarlarını oluşturun'. Yani cevabım bunu varsayıyor.
dawud

ah yup İlk defa okuduğumda bunu özledim.
djsmiley2k - CoW

5

İlk seçenekte olduğu gibi geliyor, SSH tuşları SD kartta mevcut olacak. Böylece herhangi bir kullanıcı kartı alabilir ve okuyabilir. Yani temelde özel anahtarlarınız (çoğunlukla) herkese açık hale geldi.

Bu, aşağıdaki gibi, ortadaki adam saldırılarına izin verecektir:

  1. Bir kullanıcı, cihazınızdan alınan özel anahtarlarla bir SSH sunucusu kurar ve bu IP adresini teknisyeninize verir.
  2. Teknisyeniniz kök şifreyi SSH bağlantısı üzerinden giriyor.
  3. Kullanıcı artık tüm cihazlarınız için geçerli olan kök şifresini biliyor.

Ancak, ilk başta kök parola kullanmamalısınız, bunun yerine kimlik doğrulama için ssh anahtarlarını kullanın. Sonra paylaşılan sunucu tuşlarının etkisi oldukça küçüktür eğer sadece bir LAN oturum.

SSH ayrıca ileri gizlilik sağlar, bu nedenle saldırganın anahtarlardan yararlanmak için sahte bir sunucu kurması gerekir; trafiğin pasif olarak kokutulması şifresini çözmek için izin vermeyecektir.


Önyargımızın bizi nasıl körleştirebileceği komik. SD Kart, ünitenin içinde bir panelin arkasında ve bir devre kartının altında olduğu için birinin çıkardığı aklıma hiç gelmedi. Ancak, haklısın, kesinlikle tornavida olan herkes için erişilebilir. Sistemin fiziksel güvenliğini göz önüne aldığınızı hatırlattığınız için teşekkür ederiz.
NXT,

WRT # 2, root şifresi SSH bağlantısı üzerinden gönderilmemelidir. Terminal istemcisine girilmeli ve sırrı iletmeden ("bilgi kanıtı") sırrı bulunduğunu kanıtlayan bir kimlik doğrulama protokolünün yerel yarısı için kullanılmalıdır. Onlarca yıllık sistemler bile şifrenin kendisine bir şifre göndermeyi biliyordu. Meydan okuma / yanıt protokolüne bir not dahil edin; saldırgan orijinal şifreyi veya onun yerinde kullanılabilecek herhangi bir jetonu bilmez.
Ben Voigt

1
@BenVoigt Çoğu unix sisteminin şifreyi sunucuya ilettiğini düşünüyorum. Gölge dosyası yalnızca bir karma depolar, ancak müşteri tarafından oluşturulan bir karma değere güvenmek istemezsiniz - çünkü aksi halde herkes çalınan bir karma ile oturum açabilir, tersini yapmadan. Bu yüzden sunucunun bcrypt veya benzeri bir program çalıştırabilmesi için gerçek şifreyi bilmesi gerekir.
jpa

2

Bunu dehşet içinde okudum! Aynı kümede aynı ssh ana bilgisayar anahtarına sahip birden fazla makine yapmış olan bunu asla yapmaya cüret edemem. Hiçbir koşulda, farklı yönetici grubuna sahip makinelerin ssh ana bilgisayar anahtarlarını paylaşmasına izin vermeyin. Bu şekilde, güvenlik eksikliğinizden haberdar olduğunuzda delilik ve çığlık atan korku yatmaktadır.

Bakın size gerçeği söyleyeyim, bir cihazı tehlikeye atan herkes hepsini tehlikeye atıyor. Bir kere edinildikten sonra, kötü insanların istediklerinde birbirlerinden diğerine atlamasını bekleyin ve güvenlik sanki ince bir kağıtmış gibi geri döndü.


1
Bir saldırganın, diğer cihazları tehlikeye atmak için çalınan bir sunucu özel anahtarını nasıl kullanacağını açıklayabilir misiniz?
jpa

jpa: Ana bilgisayar anahtarları için, parolaları arayarak ve çalarak, vb. çalarak. Ayrıca, bu kurulum kullanıcı tuşlarıyla aynı şeyi yapmayı öneriyor gibi görünüyor.
joshudson,

1

SSH erişiminin son kullanıcı / müşteri tarafından kullanılmadığından bahsettiğinizden, SSH erişimini varsayılan olarak kapatmak ve yalnızca cihaz "hata ayıklama" moduna geçirildiğinde geçici olarak etkinleştirmek isteyebilirsiniz.

Ardından, "debug" modunu koruduğunuzu varsayarak tüm cihazlara aynı anahtarla gönderebilirsiniz, böylece cihazı kesmeye çalışan bir kişi tarafından uzaktan tetiklenemez.

Veya cihaz "hata ayıklama" moduna geçtiğinde yeni bir anahtarınız olur; bu nedenle, her açılışta anahtarları üretmek için önyükleme zamanı harcamak zorunda kalmazsınız.


Bu fikri sevdim.
NXT

1

İşte sahip olduğunuz kısıtlamalara dayanan örnek bir saldırı senaryosu:

Cihazlarınız varsa, örneğin bir Ahududu Pi söyleyin. SD kartı birinden yukarı çekip çıkarabilirsem, SD kartı kendi bilgisayarıma sokabilir, sshd anahtarını bulabilir ve istediğim her yere kopyalayabilirim. Belki kendi ahududu pi'm ve bir USB ethernet kartımı alıyorum. Şimdi bunu bir hedef cihaz arasına ve nereye gittikleri her yere sokabilir ve ssh bağlantılarını izleyebilirim. Hedef cihazın ssh bağlantısı kurmaya çalıştığını gördüğümde, şunu yapıyorum:

(target) <---> (my evil sshd <--> decrypted traffic <--> ssh) <---> (real server)
                                       |
                                       V
                                    log file

Ah o ne? Şifreniz "kedileri severim" mi? Evlat, bu karına gönderdiğin ilginç bir e-posta. Bahse girerim yan komşularınızın karısına gönderdiğiniz bu e-postayı okuması daha da ilginç olurdu.

Olasılıklar sonsuzdur . Ve hedef asla bilemez, çünkü sshd anahtarı gerçek sunucuda bulunanla aynıdır. Cihazınızı alan tesislerin fiziksel güvenliğine bağlı olarak, bu inanılmaz derecede önemsiz olabilir . Bunu yapma

Bunun yerine, teklif ettiğin şeyi yap ama düzelt . Resminizi yazmadan önce şöyle bir şey çalıştırın:

ssh-keygen -f some-new-server
cp some-new-server /path/to/the/mounted/image/sshd/key
cp some-new-server.pub /path/to/the/mounted/image/sshd/key.pub

Ve şimdi her sunucunun yeni bir anahtarı var. Çünkü sen gerçekten, gerçekten bir anahtarın kopyalarını dağıtmak istemiyorsun. Dürüst olmak gerekirse, en azından ev anahtarlarınızın bir fotoğrafını çekmek ve ev adresinizle internete yüklemek kadar kötü.


1
Birisi donanımınıza fiziksel olarak erişebiliyorsa ve verileri istirahatte şifreleyemiyorsanız, tüm bahisler kapalı demektir.
GoFundMonica
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.