Saran untuk mengelola kunci SSH

13

Apa praktik terbaik yang Anda temukan untuk mengelola banyak keypairs SSH?

Saya menggunakan SSH untuk terhubung ke beberapa sistem, baik di rumah maupun di tempat kerja. Saat ini saya memiliki koleksi keypairs yang cukup kecil dan dapat dikelola untuk sistem kerja dan rumah. Saya memiliki skrip yang menghasilkan keypair bernama sehingga saya dapat menghindari kebingungan.

Jaringan rumah saya terdiri dari laptop saya (ubuntu), dua desktop (ubuntu / fedora dual boot, fedora / windows dual boot), dan sistem media (ubuntu). Di tempat kerja saya memiliki laptop pribadi saya (yang saya gunakan untuk bekerja dari rumah), desktop saya (fedora), sistem produksi (RHEL), dan laptop dengan windows (mendesah) dan VM (fedora). Semuanya baik sejauh ini.

(Saya tidak tertarik untuk meletakkan rumah saya keypair pada sistem kerja saya, atau keypair pekerjaan saya di sistem rumah saya. Dan kami memiliki akun pengguna virtual untuk memekanisasi transfer file dengan sistem lain, di mana kunci pribadi harus berada pada mesin produksi, untuk mentransfer file antara sistem lain.)

Tapi sekarang hadir Hadoop, sekelompok besar sistem 100+, dan dengan kompleksitas yang lebih banyak, lebih banyak pengguna, dan lebih banyak keypairs. Sekarang saya perlu mengelola kunci.

(Saya perlu mengklarifikasi. Saya seorang pengembang perangkat lunak yang berkonsultasi dengan klien yang menggunakan cluster Hadoop. Mereka perlu mengelola kunci. Akan ada banyak orang yang mengakses cluster, perlu menempatkan kunci publik ke dalam sistem. Sebagai penduduk Linux savant, mereka meminta bantuan kepada saya. Saya menyarankan untuk menyewa admin sistem, tetapi sampai mereka melakukannya, saya membantu)

Ketika saya perlu mempublikasikan kunci publik ke sistem jarak jauh, semua halaman web 'cara-' menyarankan menimpa (>) (menghancurkan kunci yang ada), atau menambahkan (>>) (yang bagus, mempertahankan kunci yang ada) . Tapi saya pikir menjaga setiap kunci publik pada mesin tujuan secara terpisah, dan menggabungkannya akan lebih baik. Saya mencari saran.

Apa praktik terbaik yang Anda temukan untuk mengelola banyak kunci?

Terima kasih!


Sunting: Satu aspek perlu menempatkan kunci pada banyak sistem, dan CRUD yang bersamaan (buat, baca, perbarui, hapus / nonaktifkan) untuk pengguna tertentu, yang berarti harus dapat mengidentifikasi kunci mana yang menjadi milik pengguna tersebut.

ChuckCottrill
sumber
Apakah Anda berbicara tentang keypairs pengguna atau host? sshfpmemecahkan masalah hostkey dengan meletakkan tanda tangan kunci publik di DNS. Untuk kredensial pengguna, Anda mungkin ingin melihat sertifikat OpenSSH atau menggunakan sesuatu seperti Spacewalk atau boneka untuk menyimpan semua pasangan kunci ke lokasi pusat dan menyebarkannya sesuai kebutuhan. Kedengarannya seperti Anda mungkin menginginkan yang terakhir karena Anda hanya akan mengatur server baru sebagai klien dan kemudian menggunakan versi terbaru file.
Bratchley
Saya punya laptop lain (fedora), ke disk jaringan MyBook Live (menjalankan linux), dua desktop yang dibangun menunggu hard drive, dan berencana untuk dua lagi untuk membangun sebuah rumah hadoop cluster (pembelajaran). Ya, saya perlu memahami manajemen kunci.
ChuckCottrill

Jawaban:

12

Umumnya Anda tidak boleh memiliki lebih dari 1 kunci per mesin klien (penekanan pada "umumnya"). Saya tidak yakin apakah saya memahami pertanyaan Anda dengan benar, tetapi jika Anda mengatakan Anda memiliki kunci terpisah untuk setiap sistem jarak jauh, maka Anda pasti salah melakukannya.

Ssh menggunakan kriptografi kunci publik. Kunci yang Anda pasang pada sistem jarak jauh adalah kunci publik, sama sekali tidak ada salahnya menggunakan kembali kunci ini di tempat lain. Ini adalah kunci pribadi yang harus dilindungi dan tetap berada di sistem pribadi Anda.

Ini juga merupakan ide yang baik untuk memiliki kunci pribadi berada hanya pada satu klien, tidak dibagikan. Ini dimaksudkan agar jika klien dikompromikan, Anda dapat mencabut satu kunci saja.


Sekarang, jika Anda bertanya bagaimana Anda bisa mendapatkan kunci publik Anda ke ratusan sistem ada beberapa cara untuk melakukan ini.

Cara paling umum adalah dengan menggunakan direktori home yang dibagikan. Memiliki NFS (atau sistem file jaringan lainnya) terpasang (atau di-automount) semua sistem.

Cara lain adalah memanfaatkan fitur baru di ssh. Ini adalah direktif konfigurasi yang disebut AuthorizedKeysCommand. Pada dasarnya itu adalah perintah yang sshd akan berjalan setiap kali perlu mencari kunci publik. Perintah hanya menulis kunci publik dari pengguna yang ditanyai tentang STDOUT itu. Ini terutama digunakan ketika Anda tidak menginstal direktori home, tetapi masih memiliki server otentikasi pusat ( FreeIPA mengambil keuntungan dari ini).

Tentu saja Anda dapat melakukan hal-hal lain seperti cron job rsync di /homeserver pusat. Tapi itu bukan praktik umum.

Patrick
sumber
Saya memiliki 8 mesin di rumah dan sejumlah "server" di cloud (diskalakan sesuai kebutuhan). Akan konyol memiliki 300 kunci klien ketika saya meningkatkan skala hingga 300 contoh server. Jadi saya punya 16 kunci publik (2 pengguna per masing-masing 8 host). Untuk mesin keras, saya menekan tombol setiap 3 bulan. Untuk instance cloud, mereka diintegrasikan ke dalam gambar khusus.
Skaperen
2

Ketika saya perlu mempublikasikan kunci publik ke sistem jarak jauh, semua halaman web 'cara-' menyarankan menimpa (>) (menghancurkan kunci yang ada), atau menambahkan (>>) (yang bagus, mempertahankan kunci yang ada) . Tapi saya pikir menjaga setiap kunci publik pada mesin tujuan secara terpisah, dan menggabungkannya akan lebih baik. Saya mencari nasihat

saya tidak melihat keuntungan apa pun dalam menyimpan kunci publik baik di dalam .ssh/authorized_keysmaupun di file terpisah.

jika Anda melihat kunci aktual yang disimpan dalam file * Authorized_key * Anda melihat bahwa mereka sudah mengandung meta-informasi yang dapat dibaca manusia tentang asal-usul kunci. misalnya kunci publik untuk user@foobiasanya memiliki entri seperti:

ssh-rsa AAAAB3Nza...LiPk== [email protected]

dengan demikian membuatnya sangat mudah untuk memeriksa / mengekstrak / menghapus kunci-kunci tertentu (dilampirkan ke pengguna tertentu) dari file * otor_keys *.

id pengguna adalah bidang "komentar" bentuk-bebas, sehingga Anda dapat memasukkan informasi apa pun di sana, yang menurut Anda perlu untuk mengidentifikasi kunci yang diberikan.

dalam hal apa pun, Anda hanya boleh membuat pasangan kunci untuk "pengguna" yang perlu mengakses sumber daya jarak jauh. kemungkinan besar, bahwa Anda tidak perlu masuk dari setiap host hadoop ke host hadoop lainnya. alih-alih Anda akan memiliki beberapa mesin manajemen, yang perlu mengakses semua host hadoop. Anda hanya perlu satu pasangan kunci per mesin manajemen, dan instal setiap kunci publik pada semua host hadoop.

umläute
sumber
Setiap pengguna akan menghasilkan kunci sendiri, saya yakin Anda mengatakan setiap pengguna harus memberikan nama pengguna @ hostname sebagai bagian dari asal kunci. Yang berarti bahwa skrip yang memberlakukan nama pengguna @ hostname disediakan, bukan?
ChuckCottrill
itu tergantung bagaimana mereka membuat kunci mereka; misalnya ssh-keygenakan menambahkan komentar dari formulir user@host; keygenerators lain (seperti yang datang dengan dempul) mungkin tidak melakukan itu. tetapi ya, itu seharusnya sepele untuk membuat skrip kecil yang memastikan bahwa setiap kunci memiliki bidang komentar yang mengidentifikasi kombinasi pengguna / host.
umläute
1

OpenSSH terbaru memungkinkan untuk mendapatkan kunci ssh dari LDAP, lihat 'AuthorizedKeysCommand' di halaman manual sshd_config . Secara pribadi saya lebih suka sertifikat OpenSSH, bukan kunci, lihat http://blog.habets.pp.se/2011/07/OpenSSH-certificates . Anda dapat mengelola kunci dengan manajer konfigurasi apa pun seperti cfengine, boneka, koki, garam ...

jirib
sumber
0

Cara lain yang super mudah diterapkan dan memungkinkan fleksibilitas yang lebih besar dalam hal menambahkan banyak pengguna adalah dengan menggunakannya. https://userify.com/

Hal ini memungkinkan Anda untuk menentukan berbagai kelompok server dan memiliki kunci untuk pengguna yang berbeda yang diaktifkan atau dinonaktifkan untuk server tersebut.

Instalasi dan manajemen super sederhana.

nelaaro
sumber