Bagaimana cara menggunakan https dengan apt-get?

51

Apakah apt-getmenggunakan https atau jenis enkripsi apa pun? Apakah ada cara untuk mengkonfigurasinya untuk menggunakannya?

Strapakowsky
sumber
3
Perhatikan bahwa karena kerentanan seperti bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467 ... yang menghindari penandatanganan InRelease, mungkin merupakan ide yang baik untuk mengkonfigurasi HTTPS.
Royce Williams
whydoesaptnotusehttps.com adalah halaman web yang menjawab pertanyaan ini dengan tepat dan luas.
m.raynal
1
Ada alasan yang lebih duniawi mengapa ini akan berguna. Saya sering menggunakan koneksi Internet dengan proxy "transparan" yang rusak yang cenderung memblokir unduhan deb tertentu (mereka mungkin memicu beberapa pemblokir malware bodoh). Tetapi melalui https, proksi tidak tahu apa yang saya unduh sehingga tidak mengganggu.
Nate Eldredge

Jawaban:

53

apt-get(dan perintah manipulasi paket lainnya, yang merupakan front-end untuk pustaka APT yang sama) dapat menggunakan HTTP, HTTPS dan FTP (dan sistem file yang dipasang). Jika Anda menentukan https://URL di /etc/apt/sources.listdan /etc/apt/sources.list.d/*, maka APT akan menggunakan HTTPS.

APT memverifikasi tanda tangan paket. Jadi Anda tidak perlu memiliki bentuk transportasi yang menyediakan otentikasi data. Jika penyerang memodifikasi file yang Anda unduh, ini akan diperhatikan. Menggunakan verifikasi tanda tangan lebih baik daripada menggunakan koneksi HTTPS, karena itu akan mendeteksi serangan pada server yang Anda unduh, bukan hanya serangan dalam perjalanan.

Lebih tepatnya, aliran data (disederhanakan) untuk suatu paket adalah sebagai berikut:

  1. Paket diproduksi pada mesin build.
  2. Paket ditandatangani pada mesin build.
  3. Paket yang ditandatangani disalin ke cermin unduhan.
  4. Anda mengunduh paket.

HTTPS memastikan bahwa langkah 4 terjadi dengan benar. Tanda tangan paket memastikan bahwa langkah 2 hingga 4 terjadi dengan benar.

Faktanya, ada satu manfaat kecil untuk HTTPS untuk langkah 4: tanda tangan paket hanya memastikan bahwa paket tersebut asli. Seorang penyerang di langkah 4 bisa menyamar sebagai server yang sah dan melayani versi basi paket. Misalnya, penyerang dapat mencegah Anda mengunduh pembaruan keamanan apa pun, dengan harapan mengeksploitasi kerentanan pada mesin Anda yang akan Anda tambal jika bukan karena serangan itu. Ini bukan skenario yang sangat realistis, karena membutuhkan penyerang aktif (sehingga harus menjadi seseorang yang mengendalikan koneksi Internet Anda), tetapi itu bisa terjadi secara prinsip.

Manfaat lain untuk HTTPS adalah jika Anda mencoba menyembunyikan fakta bahwa Anda mengunduh paket Ubuntu dari seseorang yang mengintip koneksi jaringan Anda. Bahkan kemudian, penyadap bisa melihat host apa yang Anda hubungkan; jika Anda terhubung ke mirror Ubuntu dan mengunduh ratusan megabyte, jelas Anda mengunduh paket Ubuntu. Eavesdropper sebagian besar juga bisa mengetahui paket mana yang Anda unduh dari ukuran file. Jadi HTTPS hanya akan berguna jika Anda mengunduh dari server yang juga menawarkan file lain dengan ukuran yang sama - Saya tidak melihat titik apa pun kecuali untuk paket pihak ketiga, dan hanya dalam keadaan yang sangat tidak biasa.

Untuk mengulangi: manfaat biasa dari HTTPS, yaitu Anda tahu Anda terhubung ke server sebenarnya, tidak berguna ketika Anda mengunduh paket Ubuntu. Verifikasi tanda tangan pada paket memberikan jaminan yang lebih kuat daripada yang dapat diberikan HTTPS.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
11
Bukannya kurang aman, tapi kurang relevan dengan apa yang Anda coba lindungi. Dengan APT, mengenkripsi konten transaksi Anda tidak begitu penting, karena apa yang Anda unduh sangat tidak kontroversial: itu hanya paket Ubuntu yang sama dengan yang diunduh banyak orang. Tapi yang penting, memastikan bahwa file yang Anda terima belum dirusak.
thomasrutter
3
Beberapa minggu yang lalu saya mencoba mengubah sumber ke https dan itu tidak berhasil, apt-get updateakan melaporkan kesalahan ketika mencoba mengakses tautan. Dengan ppas: sama. Adakah yang pernah mencobanya?
Strapakowsky
8
Repositori (server pembaruan) harus mendukung https / SSL agar ini berfungsi. Utama archive.ubuntu.com tidak . Anda dapat memeriksa di browser Anda jika server mendukungnya dengan mengawali https: // ke URL dan melihat apakah Anda mendapatkan daftar direktori, dll.
ish
7
"Seorang penyerang di langkah 4 bisa menyamar sebagai server yang sah dan melayani versi basi paket." Sebenarnya, kami melindungi hal ini dengan memberikan informasi paket tanggal kedaluwarsa. APT akan memperingatkan setelah tanggal ini bahwa cermin Anda sudah basi.
tumbleweed
4
Berikut daftar semua 15 mirror yang mendukung HTTPS bersama dengan skrip yang menghasilkan daftar: pastebin.com/QY2TQ1dq
Shnatsel
13

Dengan APT, biasanya yang lebih penting bukanlah koneksi Anda dienkripsi, tetapi file yang Anda terima belum dirusak.

APT memiliki verifikasi tanda tangan bawaan untuk memastikan hal ini.

Enkripsi akan mencegah penguping agar tidak dapat melihat apa yang Anda unduh, tetapi apa yang sebenarnya Anda unduh (dan minta) cukup tidak kontroversial: itu akan sama dengan ribuan pengguna Ubuntu lainnya yang mengunduh dan file tidak mengandung apa pun yang bukan. ' t tersedia secara bebas di banyak server. Namun, jika Anda memerlukan privasi tentang paket apa yang sedang Anda unduh, HTTPS dapat digunakan (sebutkan di sources.list Anda).

Verifikasi tanda tangan yang ada di APT akan memastikan bahwa file yang Anda terima belum dirusak. Tidak masalah dari mana file berasal dan bahkan mungkin untuk memiliki proksi atau membalikkan proksi di antara Anda dan server untuk mengurangi beban server atau mempercepat Anda. Verifikasi tanda tangan masih memastikan bahwa Anda mendapatkan file yang tidak dimodifikasi, cocok dengan tanda tangan yang hanya dapat diproduksi secara kriptografi dengan file asli dan salinan kunci pribadi Ubuntu.

Jika Anda beralih ke HTTPS, maka Anda tidak akan dapat memanfaatkan server proxy untuk mempercepat akses atau mengurangi beban lagi. Dan itu tidak akan menambah jaminan lagi tentang tidak merusak bahwa verifikasi tanda tangan APT belum memberikan. Namun, itu berarti bahwa penyadap (seperti ISP Anda) tidak akan dapat melihat paket mana yang Anda unduh (yang kemungkinan tidak akan dirahasiakan, dan seperti yang ditunjukkan Gilles, mereka dapat menebak dari ukuran file).

thomasrutter
sumber
3
HTTPS tidak akan memberikan banyak privasi, karena ukuran file terlihat. Sebenarnya ada manfaat kecil untuk HTTPS, yaitu memastikan bahwa penyerang yang mengendalikan koneksi jaringan Anda tidak dapat diam-diam menyelipkan data basi. Ini agak dibuat-buat.
Gilles 'SO- berhenti bersikap jahat'
6
Poin bagus. Dengan "data basi", saya kira maksud Anda adalah man-in-the-middle menyiapkan versi cermin Ubuntu yang terdiri dari versi yang sedikit lebih awal, tetapi masih tidak berubah dari apa yang ditandatangani Ubuntu pada saat itu.
thomasrutter
5
Ya itu saja. Jangan ragu untuk menunjukkan jika saya agak jargony - saya perlu diingat bahwa ini adalah Tanya Ubuntu dan bukan Keamanan Informasi .
Gilles 'SO- berhenti bersikap jahat'
Tampaknya ada lubang besar di apt - ketika Anda apt updatedan ada seorang pria di tengah memberi Anda indeks palsu, Anda dengan senang hati mengambil apa pun yang diberikan orang di tengah Anda dan menulisnya di / var / lib / apt / daftar. Ini bukan hanya dengan orang jahat di tengah, tetapi seperti jika Anda menggunakan WiFi hotel dan dialihkan ke halaman masuk, jika Anda menjalankan apt updatesebelum Anda masuk, / var / lib / apt / daftar Anda akan dibuang ke tempat sampah dengan HTML beranda hotel. PALSU! Pokoknya pemeriksaan dasar TLS cert akan mengesampingkan hal ini segera.
Marius
@Marius ini tidak seharusnya dimungkinkan karena verifikasi, yang mencakup daftar dan juga paket. Jika Anda mereproduksi ini dengan instalasi Apt standar, Anda harus melaporkannya ke pengelola.
thomasrutter
1

Rilis APT baru-baru ini memiliki dukungan TLS bawaan, jadi Anda hanya perlu mengganti URL mirror paket-repositori Anda dengan yang https-prefixed. Untuk Debian, bisa terlihat seperti ini:

deb https://deb.debian.org/debian/ stretch main
deb https://deb.debian.org/debian-security stretch/updates main
deb https://deb.debian.org/debian/ stretch-updates main

Ini berguna, meskipun APT menyertakan protokol tanda tangannya sendiri untuk memastikan paket tidak dirusak, karena mungkin ada bug di APT (seperti yang sudah ada: CVE-2016-1252 , CVE-2019-3462 ). Protokol HTTP / TLS dan kode sandi mereka harus diawasi secara ketat, sehingga kerentanan zero-day yang parah jauh lebih kecil kemungkinannya jika Anda menambahkan lapisan keamanan ini.

Leif Arne Storset
sumber
Ups, saya baru sekarang menyadari bahwa situs ini adalah Tanya Ubuntu. :) Saya tidak dapat menemukan solusi CDN serupa untuk Ubuntu.
Leif Arne Storset
0

Saya pikir pertanyaan ini bisa menggunakan jawaban dengan instruksi untuk orang awam, jadi ...

APT masih tidak menggunakan HTTPS secara default dalam versi harian Ubuntu 19.10 (Eoan) (yang masih dalam pengembangan). Orang dapat memverifikasi ini dengan memeriksa file /etc/apt/sources.list dan mencatat bahwa semua URL sumber menggunakan skema URL "http:".

Untuk mengkonfigurasinya menggunakan HTTPS, seseorang dapat mengikuti instruksi berikut:

Pertama , cari mirror arsip resmi Ubuntu yang dapat dipercaya yang mendukung HTTPS:

  1. Menavigasi ke Mirror Arsip Resmi untuk halaman web Ubuntu .
  2. Dalam tabel di halaman web itu, identifikasi mirror yang (A) di-host di situs web yang Anda anggap dapat dipercaya, (B) memiliki mirror "http:" dan, opsional, (C) memenuhi kedekatan geografis Anda, kecepatan server, dan pembaruan preferensi kesegaran.
  3. Pada tabel di halaman web itu, klik tautan "http" cermin yang diidentifikasi pada langkah (2) untuk mengunjungi versi "http:" cermin.
  4. Di bilah alamat browser, ubah secara manual "http:" di URL halaman web menjadi "https:".
  5. Arahkan ke mirror lagi (melalui URL "https:") untuk melihat apakah itu teratasi.

Misalnya, saya menganggap Wikimedia Foundation tepercaya, jadi saya mengunjungi http://mirrors.wikimedia.org/ubuntu/ mirror URL dan kemudian mengubahnya menjadi https://mirrors.wikimedia.org/ubuntu/ , yang berhasil diselesaikan.

Jika Anda menggunakan Firefox (67.0.4) dan memiliki ekstensi HTTPS Everywhere (2019.6.27) diinstal dengan fitur "Enkripsi Semua Situs yang Layak" diaktifkan (melalui panel tombol bilah alat), langkah (4) dan (5) dapat dihilangkan karena ekstensi akan secara otomatis mengubah URL untuk memanfaatkan HTTPS, memungkinkan seseorang untuk lebih segera menentukan apakah versi "https:" dari URL akan diselesaikan.

Dua , perbarui daftar sumber APT Anda:

  1. Jalankan perintah sudo cp /etc/apt/sources.list /etc/apt/sources.list.backupuntuk membuat cadangan daftar sumber pembaruan Anda.
  2. Ganti URL basis cermin — ditampilkan di sini sebagai https://mirrors.wikimedia.org —di dalam perintah sudo sed --in-place --regexp-extended 's http://(us\.archive\.ubuntu\.com|security\.ubuntu\.com) https://mirrors.wikimedia.org g' /etc/apt/sources.listdengan URL dasar mirror dari cermin pilihan Anda dan, kemudian, jalankan perintah.

Ketiga , Anda harus memeriksa isi direktori /etc/apt/sources.list.d/ untuk sumber "http:" yang mungkin diubah menjadi "https:" setelah menginstal perangkat lunak dari luar arsip Ubuntu.

Misalnya, paket Microsoft Visual Studio Code menambahkan file vscode.list ke direktori ini yang menentukan URL "http:". Sederhana mengubah skema URL dari "http:" ke "https:" memungkinkan pembaruan melalui HTTPS.

Pertimbangkan untuk mencadangkan file sumber semacam itu sebelum memodifikasinya.

Terakhir , lakukan pembaruan untuk memastikan bahwa pembaruan akan berfungsi dengan benar:

  1. Jalankan sudo apt-get updateperintah.
  2. Jika itu tidak berfungsi seperti yang diharapkan, pulihkan file daftar sumber cadangan yang Anda buat dengan menjalankan sudo cp /etc/apt/sources.list.backup /etc/apt/sources.listperintah.

Perlu juga dicatat bahwa ada paket apt-transport-https untuk menambahkan dukungan HTTPS ke APT. Namun, paket ini tampaknya tidak perlu menurut halaman web https://launchpad.net/ubuntu/eoan/+package/apt-transport-https dan belum diperlukan sejak APT 1.5 sesuai dengan informasi yang ditampilkan setelah menjalankan perintah apt-cache show apt-transport-https.

Patrick Dark
sumber