yum instal http - apakah ini aman?

10

Saya tidak terlalu terbiasa menggunakan yum untuk menginstal paket. Dalam kehidupan sebelumnya saya menggunakan apt.

Saat ini, saya sedang melihat beberapa instruksi untuk dijalankan

# yum install http://example.com/package.rpm

yang tampaknya akan berlangganan repositori tertentu, dari mana paket lebih lanjut dapat diunduh. Apakah ini hal yang aman untuk dilakukan?

Sebagai perbandingan, saya tahu bahwa paket apt memiliki tanda tangan gpg yang berarti unduhan melalui http tidak menjadi masalah. Seperti dijelaskan di sini . Dan ketika mengunduh paket di luar repositori utama dengan apt, Anda dapat menambahkan kunci gpg secara manual untuk diterima, untuk memastikan bahwa setiap paket non-standar memiliki sumber tepercaya yang sama.

Jika saya menjalankan perintah di atas, apakah Anda akan meminta saya untuk menerima kunci gpg sebelum mulai menginstal sesuatu, atau bisakah itu menginstal apa saja?

Dalam hal ini relevan, /etc/yum.conffile saya berisi gpgcheck=1di dalam [main]bagian ini.

Kode Saus
sumber

Jawaban:

11

Ada sedikit yang bisa dijelaskan dengan pertanyaan Anda.

Pertama, penting untuk memahami bagaimana YUMdan rpmbekerja bersama:

  1. RPM adalah format paket dan ada alat baris perintah bernama rpmyang bernama yang menginstal paket RPM individu. Anda dapat menganggap rpmalat baris perintah sebagai analog dengan dpkgalat baris perintah karena keduanya menginstal paket individual tanpa ketergantungannya.
  2. yumadalah program tingkat tinggi yang menginstal paket RPM dan dependensinya. Anda dapat menganggap yumperintah sebagai analog apt-getkarena keduanya dapat menginstal paket dan semua dependensinya.
  3. Ketika Anda menjalankan yum installAnda harus menggunakan nama paket, bukan URL. Sebagai contoh: yum install package, mirip dengan bagaimana Anda akan menjalankan: apt-get install package.
  4. Jika Anda memiliki URL paket, Anda dapat menjalankannya rpm -i https://url, tetapi jika Anda tidak memiliki dependensi dari paket yang diinstal, Anda harus menginstalnya satu per satu dengan rpm -i(menyakitkan) atau dengan yumdan repositori yang dikonfigurasi.

Sekarang, sejauh GPG ada beberapa hal untuk dipahami yang berlaku untuk sistem pengemasan Debian dan RPM, tetapi hal yang paling penting untuk dipahami adalah:

  1. Kedua sistem memiliki 2 set tanda tangan GPG: tanda tangan GPG pada paket itu sendiri dan tanda tangan GPG di repositori.
  2. Paket Debian tidak memiliki tanda tangan GPG mereka diperiksa dan paket resmi dari repositori proyek Ubuntu dan Debian tidak ditandatangani GPG.
  3. Kedua sistem rentan terhadap serangkaian serangan ulangan GPG ketika digunakan melalui HTTP teks jelas; Anda harus benar-benar, 100% menginstal paket Anda melalui HTTPS dan bukan HTTP teks biasa jika memungkinkan.

Sejauh RPM dan YUM GPG ditandatangani:

  1. Pertama, Anda dapat menentukan jalur atau URL ke kunci GPG dalam file konfigurasi dengan: gpgkey=https://example/gpg.keyatau gpgkey=/usr/share/example/gpg.key. Anda dapat menentukan beberapa kunci GPG, jika lebih dari 1 diperlukan.
  2. Kedua, ada dua opsi: gpgcheck=1dan repo_gpgcheck=1. Opsi pertama menyebabkan yum installmemverifikasi tanda tangan GPG pada paket itu sendiri, opsi kedua memverifikasi tanda tangan GPG dari repositori. Idealnya, Anda harus menggunakan keduanya, tetapi banyak repositori yang tidak dikonfigurasi dengan benar untuk mendukung keduanya.
  3. Pertama kali Anda menjalankan yum install, yumakan berusaha mengimpor kunci GPG yang terdaftar di gpgkeyjika belum diimpor. Anda akan diminta dan diminta untuk menerima atau menolak.
  4. Anda harus pygpgmemenginstal paket di sistem Anda agar tanda tangan GPG diverifikasi. Pada versi terbaru dari RHEL dan CentOS pygpgmediinstal secara otomatis yum, tetapi Anda harus memverifikasi bahwa itu diinstal pada sistem Anda.
  5. Tidak ada yang setara dengan apt-transport-https, yumdapat berbicara melalui HTTPS di luar kotak, tetapi Anda harus memastikan bahwa versi yang yumAnda gunakan memiliki sslverifyopsi default diaktifkan; beberapa versi yumtidak. Jika versi Anda tidak, Anda harus mengaktifkannya. Sangat penting untuk memverifikasi sertifikat SSL.

Bahkan dengan tanda tangan GPG pada paket dan repositori, repositori masih rentan terhadap serangan replay; Anda harus mengakses repositori Anda melalui HTTPS jika memungkinkan. Penjelasan singkat dari satu serangan adalah bahwa penyerang jahat dapat mengambil snapshot metadata repositori dan tanda tangan GPG terkait pada waktu tertentu dan memutar ulang metadata dan tanda tangan itu ke klien yang memintanya, mencegah klien melihat paket yang diperbarui. Karena metadata tidak tersentuh, tanda tangan GPG akan valid. Penyerang kemudian dapat menggunakan exploit terhadap bug yang dikenal dalam perangkat lunak yang tidak diperbarui untuk menyerang mesin. Anda dapat membaca lebih lanjut tentang serangan terhadap manajer paket di makalah ini .

Saya menulis dua posting blog yang luas tentang GPG dan YUM / rpm serta GPG dan APT .

Silakan tinggalkan komentar jika Anda memiliki pertanyaan tambahan yang bisa saya jawab; manajemen paket sangat sulit dilakukan dengan benar.

Joe Damato
sumber
Bagus. Ada banyak yang bisa diserap di sini. Satu pertanyaan spesifik: "Ketika Anda menjalankan yum installAnda harus menggunakan nama paket, bukan URL." - Setuju, ini yang biasanya saya lakukan dengan apt. Tetapi mengingat URL, apa yang akan Anda lakukan? Mungkin ini sudah jelas, tetapi bisakah Anda secara manual menambahkan repo http://example.comdan kemudian melakukannya yum install package?
SauceCode
"Kedua sistem rentan terhadap serangkaian serangan ulangan GPG ketika digunakan melalui HTTP teks yang jelas". Menarik - dapatkah Anda mengarahkan bacaan lebih lanjut di sini? Dan adakah setara dengan yum apt-transport-https?
SauceCode
@ SaauCode Saya memperbarui jawaban saya untuk menjawab pertanyaan Anda dan menautkan ke makalah dengan info keamanan manajer paket yang lebih banyak.
Joe Damato
Perhatikan bahwa aptrepositori sekarang memiliki tanggal validitas dalam Releasefile mereka , yang membatasi lamanya waktu serangan replay tetap valid. (Jika saya ingat dengan benar ini diterapkan sebagai hasil dari kertas yang terhubung ke dalam jawaban.) Tetapi menggunakan TLS adalah solusi yang lebih baik!
Stephen Kitt
@StephenKitt Ya, Valid-Untilditambahkan untuk mencegah serangan replay. Namun, tidak masuk akal untuk meminta pengguna repositori mengunduh metadata untuk repo baru dan memeriksanya secara manual untuk memastikan bahwa ada header. Jauh lebih mudah untuk hanya memberi tahu orang untuk selalu menggunakan TLS.
Joe Damato