Apakah lokasi pusat untuk otor_keys adalah ide yang bagus?

29

Saya sedang dalam proses mengkonfigurasi server cloud untuk menjalankan tumpukan berikut: Ruby, Penumpang, Apache; di bawah Ubuntu 10,04 (Lucid Lynx).

Dalam proses ingin membuat server lebih mudah untuk mengelola saya mengatur kunci RSA aktif root, dan www-datasehingga saya bisa sshmasuk ke server. Hal yang saya tidak suka adalah bahwa www-data's .sshdirektori duduk di /var/wwwyang merupakan setup direktori default untuk apache. Kekhawatiran saya adalah jika apache tidak dikonfigurasi dengan benar maka .sshdirektori dapat diekspos.

Saya datang di solusi untuk memindahkan ~/.ssh/authorized_keysfile ke lokasi pusat dengan mengubah AuthorizedKeysFiledi /etc/ssh/sshd_config. Ini dilengkapi dengan 2 pro: Satu lokasi untuk kunci, dan tidak perlu khawatir tentang konfigurasi apache yang buruk. Satu-satunya con yang dapat saya pikirkan adalah bahwa sekarang setiap pengguna tersedia untuk login di server (jelas pedang bermata dua dari file kunci pusat.)

Apakah ada yang saya lewatkan dalam konfigurasi ini? Apakah saya sudah terlalu sering mengekspos diri saya, atau apakah ini solusi yang lebih baik daripada authorized_keysfile individual ?

Saya hijau ketika datang ke manajemen server, tetapi saya benar-benar siap disebut nama buruk untuk melakukan hal-hal buruk. : D

Gavin Miller
sumber
1
Setidaknya kunci publik diekspos (hanya-baca) di internet bukan risiko terbesar ... (Ini mungkin memungkinkan penyerang untuk melihat apakah mereka dapat masuk ke server dengan kunci pribadi yang mereka peroleh di tempat lain, tetapi itu tidak akan akan mengizinkan mereka untuk masuk hanya dengan mendapatkan itu ...) (Masalah seriusnya adalah jika ada id_rsafile di dalamnya ~/.sshdan mereka berhasil membacanya)
Gert van den Berg

Jawaban:

51

Semua file kunci dapat dipusatkan di direktori yang sama dan tidak dicampur dalam file yang sama.

Cukup atur sshd_configfile seperti ini:

AuthorizedKeysFile  /etc/ssh/authorized_keys/%u

Di server Anda:

  • kunci data-www akan dimasukkan /etc/ssh/authorized_keys/www-data
  • kunci root akan masuk /etc/ssh/authorized_keys/root

Mengenai hak akses, pengaturan ini diterima oleh sshd:

/etc/ssh/authorized_keysdimiliki oleh root:rootdan memiliki mode 755. File-file utama dimiliki oleh root:rootdan memiliki mode 644.

Mode lain mungkin berfungsi tetapi saya belum mengujinya.

mahn
sumber
3
+1, tapi saya tidak akan mengatur yang lain. Tetapkan kepemilikan file% u ke pengguna sehingga ini tidak perlu.
Aaron Copley
1
Solusi bagus untuk masalah dimana pengguna jahat dapat menambahkan lebih banyak kunci publik ke ~ / .ssh / otor_keys mereka yang memberikan akses kepada orang lain.
bbaassssiiee
Saya baru saja mengkonfirmasi bahwa mode 600 untuk file kunci resmi pengguna tidak berfungsi; itu perlu mode 644
Luis E.
@bbaassssiiee Ini TIDAK BENAR-BENAR menyelesaikan masalah itu. Mereka hanya dapat membagikan kunci pribadi mereka dengan siapa pun yang ingin mereka beri akses (kemungkinan ini dapat dikurangi, tetapi jawaban ini benar-benar nol untuk meredakannya)
DylanYoung
1
@DylanYoung Saya mengakui berbagi kunci pribadi adalah mungkin. Tetapi dengan chattr saya dapat mencabut akses tulis ke file-file berwenang_ sehingga saya dapat mendistribusikan secara eksklusif, menjaga satu baris di setiap file juga.
bbaassssiiee
15

Secara umum saya tidak akan melakukan apa yang Anda sarankan. Itu melanggar asumsi umum (seperti ~/.ssh/authorized_keysbekerja untuk pengguna Anda, dan memperkenalkan masalah yang sudah Anda sebutkan dalam pertanyaan Anda. Jika Anda melihat masalah mencolok sebelum implementasi itu berarti solusi Anda tidak ideal.

Dari segi keamanan, saya juga berpikir itu adalah ide yang MENGERIKAN untuk membuat semua orang berbagi akun layanan: Saat ini hanya Anda, dan Anda tahu Anda yang membuat perubahan. Dalam 5 tahun ketika Anda memiliki 5 admin Anda akan ingin tahu siapa yang mengubah apa, dan menggali melalui log audit untuk melihat siapa yang menggunakan kunci apa saat sakit kerajaan.
Anda lebih baik meminta orang masuk sebagai diri mereka sendiri dan menggunakan sudoatau sesuatu yang serupa untuk meningkatkan hak istimewa mereka dan melakukan apa pun yang perlu mereka lakukan.


Jika Anda masih ingin memusatkan kunci SSH saya sarankan melihat ke dalam sistem penyebaran seperti Wayang atau Radmind untuk mengelola / mendistribusikan authorized_keysfile ke ~user/.ssh/direktori yang sesuai (atau meretas solusi buatan rumah yang SCPs mereka menempatkannya).
Saat Anda memperluas ke beberapa server, Anda mungkin ingin melihat ke dalam patch Kunci Publik LDAP untuk versi OpenSSH yang lebih lama (atau AuthorizedKeysCommandarahan dan skrip yang sesuai dalam versi OpenSSH yang lebih baru) juga sehingga Anda dapat memusatkan pengguna Anda dan tidak perlu mendistribusikan kunci mereka di seluruh jaringan Anda, tetapi itu mungkin cukup jauh untuk Anda.

voretaq7
sumber
1
+1 untuk argumen berbagi. Singkat karena butuh beberapa saat untuk menyadari implikasinya: Seharusnya tidak ada direktori ~ www-data / .ssh sama sekali, jadi tidak ada risiko keamanan oleh browser web.
thiton
Terima kasih untuk umpan baliknya! Jika saya memahami Anda dengan benar. Saya seharusnya tidak memiliki rootatau www-datadiakses melalui kunci ssh apakah itu benar?
Gavin Miller
1
Memiliki ~www-data/.sshdirektori bukanlah hal yang mengerikan (dengan izin yang sesuai itu bukan risiko yang besar), tetapi jika Anda akan menggunakannya ~www-data/.sshmungkin lebih baik tidak membuat webroot Anda ~www-data(baik memindahkan webroot atau memindahkan www-datadirektori home). Diferensiasi pengguna adalah argumen yang lebih besar IMHO - Saya tahu jika saya melihat jsmithlogin saya tahu itu adalah John Smith. Jika saya melihat www-datalogin saya perlu menggali lebih banyak untuk mengetahui siapa itu.
voretaq7
Alasan mengapa saya memerlukan kunci ssh untuk data-www adalah karena saya menggunakan Beanstalk (SCM & deploy tool) untuk melakukan penyebaran melalui SFTP. Haruskah saya membuat akun terpisah untuk Beanstalk untuk melakukan ftp'ing? Apa yang akan menjadi solusi terbaik di sana?
Gavin Miller
1
Cara ini ada di sebagian besar sistem AuthorizedKeysFiledi /etc/ssh/sshd_configdefault %h/.ssh/authorized_keys. Berikut %hadalah pengganti untuk direktori home. Apa yang membuat Anda tidak menyetel ke /some/folder/ssh_keys_by_user/%h/atau bahkan /root/ssh_keys/%u. Anda bahkan dapat memberikan akses tulis kepada masing-masing pengguna ke file individualnya di sana (dan hanya file-nya) yang menautkan file ke lokasi standar (dengan ln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys) dan tidak mematahkan asumsi yang disebutkan.
con-f-use