SSH anahtarlarını yönetmeyle ilgili tavsiyeler


13

Çok sayıda SSH anahtar çiftini yönetmek için bulduğunuz en iyi uygulama nedir?

Evde ve işte çeşitli sistemlere bağlanmak için SSH kullanıyorum. Şu anda hem iş hem de ev sistemleri için oldukça küçük, yönetilebilir bir anahtar çifti koleksiyonum var. Karışıklığı önlemek için adlandırılmış bir keypair üreten bir komut dosyası var.

Ev ağım dizüstü bilgisayarım (ubuntu), iki masaüstü bilgisayar (ubuntu / fedora çift önyükleme, fedora / windows çift önyükleme) ve bir medya sisteminden (ubuntu) oluşur. İş yerinde kişisel dizüstü bilgisayarım (evden çalışmak için kullandığım), masaüstüm (fedora), bir üretim sistemi (RHEL) ve pencereli (iç çekme) ve VM (fedora) olan bir dizüstü bilgisayarım var. Şimdiye kadar iyi.

(Ya ev anahtar çiftimi çalışma sistemime ya da ev anahtar çiftimi ev sistemlerime koymakla ilgilenmiyorum. Ve özel anahtarın üretim makinesinde bulunması gereken diğer sistemlerle dosya aktarımlarını mekanize etmek için sanal kullanıcı hesaplarımız var, dosyaları diğer sistemler arasında aktarmak için.)

Ancak şimdi 100'den fazla sistemden oluşan büyük bir küme olan Hadoop geliyor ve bu daha karmaşık, daha fazla kullanıcı ve daha fazla anahtar çifti. Şimdi anahtarları yönetmem gerekiyor.

(Açıklığa kavuşturmam gerekiyor. Bir Hadoop kümesi dağıtan bir müşteriye danışan bir yazılım geliştiricisiyim. Anahtarları yönetmeleri gerekiyor. Kümeye erişen, ortak anahtarlarını sisteme yerleştirmesi gereken birçok kişi olacak. Linux savant, benden yardım istediler.Bir sistem yöneticisi işe almanızı tavsiye ettim, ama yapana kadar yardım ediyorum)

Ortak anahtarı uzaktaki bir sistemde yayınlamam gerektiğinde, tüm 'nasıl yapılır' web sayfaları üzerine yazmayı (>) (mevcut anahtarları yok etmeyi) veya (>>) (ki iyi, var olan anahtarları korumayı) önerir . Ancak hedef makinedeki her bir ortak anahtarı ayrı ayrı korumayı ve bunları birleştirmenin daha iyi olacağını düşünüyorum. Tavsiye arıyorum.

Çok sayıda anahtarı yönetmek için bulduğunuz en iyi uygulama nedir?

Teşekkür ederim!


Düzenleme: Bir yönü çok sayıda sisteme anahtar yerleştirmek gerekir ve belirli kullanıcılar için eşzamanlı CRUD (oluşturma, okuma, güncelleme, silme / devre dışı bırakma), hangi anahtarların hangi kullanıcılara ait olduğunu tanımlayabilmeniz gerekir.


Kullanıcı veya ana bilgisayar anahtar çiftlerinden mi bahsediyorsunuz? sshfpgenel anahtarın imzalarını DNS'ye koyarak hostkey sorununu çözer. Kullanıcı kimlik bilgileri için, tüm anahtar çiftlerini merkezi bir konuma kaydetmek ve gerektiğinde dağıtmak için OpenSSH sertifikalarına bakmak ya da Spacewalk veya kukla gibi bir şey kullanmak isteyebilirsiniz . Yeni sunucuyu bir istemci olarak ayarlayıp daha sonra dosyanın en son sürümünü dağıtacağınızdan muhtemelen ikincisini istemişsiniz gibi görünüyor.
Bratchley

Başka bir dizüstü bilgisayarım (fedora), MyBook Live ağ disklerine (linux çalıştıran), sabit diskleri bekleyen iki yerleşik masaüstüne ve iki tane daha ev hadoop kümesi (öğrenme) inşa etmeyi planlıyorum. Evet, anahtar yönetimi anlamam gerek.
ChuckCottrill

Yanıtlar:


12

Genellikle, istemci makine başına 1'den fazla anahtar olmamalıdır ("genel" e vurgu). Sorunuzu doğru bir şekilde anladığımdan emin değilim, ancak her uzak sistem için ayrı bir anahtarınız olduğunu söylüyorsanız, kesinlikle yanlış yapıyorsunuz demektir.

Ssh, ortak anahtar şifrelemesi kullanır. Uzaktaki sisteme yüklediğiniz anahtar ortak anahtardır, bu anahtarı başka bir yerde yeniden kullanmanın kesinlikle bir zararı yoktur. Korunması gereken ve kişisel sisteminizde kalan özel anahtardır.

Özel anahtarın paylaşılmayan tek bir istemcide bulunması da iyi bir fikirdir. Bu, eğer bir müşteri tehlikeye düşerse, sadece bir anahtarı iptal edebilirsiniz.


Şimdi, açık anahtarınızı yüzlerce sisteme nasıl çıkarabileceğinizi soruyorsanız, bunu yapmanın birkaç yolu vardır.

En yaygın yol, paylaşılan ev dizinlerini kullanmaktır. Tüm sistemleri bir NFS'ye (veya başka bir ağ dosya sistemine) monte edin (veya otomatik olarak bağlayın).

Diğer yol, ssh'deki yeni bir özellikten yararlanmaktır. Bu bir yapılandırma yönergesi olarak adlandırılır AuthorizedKeysCommand. Temelde, sshd'nin genel bir anahtar araması gerektiğinde çalışacağı bir komuttur. Komut, sorgulanan kullanıcının ortak anahtarını STDOUT'a yazar. Bu, birincil olarak ev dizinlerini bağlamadığınızda , ancak yine de merkezi bir kimlik doğrulama sunucunuz olduğunda kullanılır ( FreeIPA bundan yararlanır).

Tabii ki /homemerkezi bir sunucudan cron job rsync gibi başka şeyler yapabilirsiniz . Ancak bu yaygın bir uygulama değildir.


Evde 8 makine ve bulutta değişken sayıda "sunucu" var (gerektiği gibi ölçeklendirilmiş). 300 sunucu örneğine kadar ölçeklendiğimde 300 istemci anahtarına sahip olmak saçma olurdu. Yani 16 ortak anahtarım var (her 8 ana bilgisayar için 2 kullanıcı). Sert makineler için her 3 ayda bir tuşlara basarım. Bulut bulut sunucuları için özel görüntüye entegre edilirler.
Skaperen

2

Ortak anahtarı uzaktaki bir sistemde yayınlamam gerektiğinde, tüm 'nasıl yapılır' web sayfaları üzerine yazmayı (>) (mevcut anahtarları yok etmeyi) veya (>>) (ki iyi, var olan anahtarları korumayı) önerir . Ancak hedef makinedeki her bir ortak anahtarı ayrı ayrı korumayı ve bunları birleştirmenin daha iyi olacağını düşünüyorum. Tavsiye arıyorum. A

i genel anahtarları depolamak herhangi bir avantaj görmüyorum hem de .ssh/authorized_keysve ayrı bir dosyada.

* yetkili_anahtarlar * dosyasında saklanan gerçek anahtarlara bakarsanız, anahtarın kökeni hakkında zaten okunabilir meta bilgiler içerdiklerini görürsünüz. örneğin, açık anahtarın user@foogenellikle aşağıdaki gibi bir girişi vardır:

ssh-rsa AAAAB3Nza...LiPk== user@example.net

böylece * yetkili_anahtarlar * dosyasındaki belirli anahtarların (belirli kullanıcılara eklenmiş) incelenmesini / çıkarılmasını / silinmesini kolaylaştırır.

kullanıcı kimliği gerçekten serbest biçimli bir "yorum" alanıdır, böylece verilen anahtarı tanımlamak için gerekli olduğunu düşündüğünüz herhangi bir bilgiyi buraya koyabilirsiniz.

her durumda, yalnızca uzak kaynaklara erişmesi gereken "kullanıcılar" için anahtar çiftleri oluşturmanız gerekir. her hadoop ana bilgisayarından birbirlerine hadoop ana bilgisayarına giriş yapmanız gerekmez. bunun yerine tüm hadoop sunucularına erişmesi gereken birkaç yönetim makineniz olacak. her yönetim makinesi için tek bir anahtar çiftine ihtiyacınız vardır ve her bir ortak anahtarı tüm hadoop ana bilgisayarlarına yükleyin.


Her kullanıcı kendi anahtarlarını üretecektir, her kullanıcının anahtarın bir parçası olarak kullanıcı adı @ hostname sağlaması gerektiğini söylüyorsunuz. Yani, kullanıcıadı @ hostname'yi zorunlu kılan bir betik sağlanmış demektir, değil mi?
ChuckCottrill

anahtarlarını nasıl oluşturduklarına bağlıdır; örneğin ssh-keygenbu formun bir yorumunu ekleyecektir user@host; diğer keygeneratörler (macunla gelen gibi) bunu yapamayabilir. ancak evet, her anahtarın bir kullanıcı / ana bilgisayar kombinasyonunu tanımlayan bir yorum alanına sahip olmasını sağlayan küçük bir komut dosyası yapmak önemsiz olmalıdır.
umläute

1

Son OpenSSH, LDAP'den ssh anahtarları alınmasına izin verir, sshd_config man sayfasındaki 'AuthorizedKeysCommand' sayfasına bakın. Şahsen anahtarları değil OpenSSH sertifikalarını tercih ederim, bkz. Http://blog.habets.pp.se/2011/07/OpenSSH-certificates . Anahtarları cfengine, kukla, şef, tuz gibi herhangi bir yapılandırma yöneticisiyle yönetebilirsiniz ...


0

Uygulanması çok kolay olan ve birden fazla kullanıcı ekleme konusunda biraz daha esneklik sağlayan başka bir yol da kullanmaktır. https://userify.com/

Farklı sunucu grupları tanımlamanıza ve farklı sunucular için bu sunucular için etkinleştirilmiş veya devre dışı bırakılmış anahtarlara sahip olmanızı sağlar.

Süper basit kurulum ve yönetim.

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.