Mengapa tidak ada https transport untuk alat debian apt?

45

Dengan semua paranoia yang datang dengan wahyu NSA dan segalanya, saya bertanya-tanya mengapa mekanisme instalasi paket debian tidak mendukung HTTPS untuk transpornya, apalagi menggunakannya secara default.

Saya tahu paket debian memiliki semacam validasi tanda tangan menggunakan GPG, tapi tetap saya tidak berpikir menggunakan transportasi HTTPS alih-alih HTTP akan terlalu sulit, mengingat betapa pentingnya ini dari segi keamanan.

Sunting: Saya sebagian besar ingin melindungi diri dari serangan MitM (termasuk hanya mengendus lalu lintas), bukan administrator mirror debian. Repositori HTTP menempatkan seluruh pengaturan sistem di atas meja, jika ada yang mengintai lalu lintas saya pergi ke mirror debian.

zaadeh
sumber
2
Pada dasarnya pertanyaan yang sama tentang Keamanan Informasi : Mengapa unduhan aplikasi tidak dilakukan secara rutin melalui HTTPS?
Gilles 'SO- stop being evil'
tidak diperlukan ... konten publik ... paket telah menandatangani checksum
Skaperen
ok jadi Anda tidak ingin admin jaringan Anda tahu paket mana yang Anda instal / tingkatkan.
Skaperen
admin, atau penyadap lainnya.
zaadeh

Jawaban:

49

Ada. Anda perlu menginstal paket apt-transport-https. Maka Anda dapat menggunakan garis seperti

 deb https://some.server.com/debian stable main

dalam sources.listfile Anda . Tetapi biasanya itu tidak perlu, karena seluruh konten adalah milik umum dan itu menambah overhead dan latensi enkripsi. Karena Anda tidak mempercayai kunci publik penyerang, bahkan lalu lintas http aman dari serangan MitM. aptakan memperingatkan Anda dan gagal menginstal paket ketika penyerang menyuntikkan paket yang dimanipulasi.

EDIT: Seperti yang disebutkan dalam komentar memang lebih aman untuk menggunakan repositori TLS . Penelitian menunjukkan bahwa menggunakan apt pada repositori tidak terenkripsi memang dapat menimbulkan risiko keamanan karena transportasi HTTP rentan terhadap serangan replay.

Marco
sumber
7
Tidak, sebagian besar mirror tidak mendukung https. Hanya karena tidak masuk akal untuk mengenkripsi lalu lintas semacam ini. Paket tetap diverifikasi dan informasinya bersifat publik.
Marco
4
Saya dapat memikirkan beberapa alasan saya mungkin masih memilih untuk mengunduh lebih dari TLS: 1) Saya mungkin peduli dengan privasi saya ketika menginstal paket, dan 2) mungkin ada bug dalam kode tanda tangan paket pengecekan, yang dapat dieksploitasi oleh MITM.
Jack O'Connor
2
@ JackO'Connor, sementara keberatan pertama tentang privasi dapat dimengerti, yang kedua adalah seperti mengatakan saya suka situs web untuk menandatangani konten mereka dengan kunci PGP karena mungkin ada bug dalam kode TLS. PGP dan TLS keduanya membangun kepercayaan; Anda tidak perlu keduanya untuk itu.
Paul Draper
7
@ Marsco jawaban Anda salah; banyak makalah penelitian menunjukkan bahwa repositori APT dan YUM rentan terhadap serangan replay ketika repositori diakses melalui HTTP, bahkan dengan tanda tangan GPG. Repositori hanya dapat diakses melalui TLS, 100% dari waktu.
Joe Damato
6
Inilah makalah yang mengacu pada @Joe Damato - juga lihat jawabannya di sini
SauceCode
17

Asumsi Anda salah: Anda dapat menggunakan unduhan HTTPS. Anda hanya perlu menemukan cermin yang mendukungnya, dan meletakkan URL-nya di daftar sumber Anda. Anda harus menginstal apt-transport-httpspaket.

Debian tidak membuat unduhan HTTPS mudah karena hanya ada sedikit manfaatnya. Distribusi paket Debian sudah termasuk mekanisme untuk memverifikasi paket: semua paket ditandatangani dengan Gpg . Jika seorang man-in-the-middle yang aktif mengalihkan lalu lintas Anda ke server dengan paket yang rusak, korupsi akan terdeteksi karena tanda tangan GPG tidak akan valid. Menggunakan GPG daripada HTTPS memiliki keuntungan yang melindungi terhadap lebih banyak ancaman: tidak hanya terhadap man-in-the-middle yang aktif pada koneksi pengguna akhir, tetapi juga terhadap cermin yang rusak atau terinfeksi atau masalah lain di mana saja dalam rantai distribusi paket .

HTTPS memang memberikan sedikit keuntungan privasi karena mengaburkan paket yang Anda unduh. Namun pengamat pasif masih dapat mendeteksi lalu lintas antara komputer Anda dan server paket, sehingga mereka akan tahu bahwa Anda mengunduh paket Debian. Mereka juga bisa mendapatkan ide bagus tentang paket mana yang Anda unduh dari ukuran file.

Satu tempat di mana HTTPS akan membantu adalah untuk kepercayaan bootstrap, untuk mendapatkan gambar instalasi yang dikenal-valid. Debian tampaknya tidak menyediakan: ada checksum dari media instalasi , tetapi hanya melalui HTTP.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Ada versi HTTPS dari media instalasi: cdimage.debian.org/debian-cd
Fedir RYKHTIK
2
Sangat sedikit manfaatnya? Bagaimana dengan justi.cz/security/2019/01/22/apt-rce.html ?
Aaron Franke
@ AaronFranke Satu bug khusus yang lebih mudah untuk dieksploitasi dengan HTTP daripada dengan HTTPS memiliki sedikit manfaat, ya. Ini bukan seolah-olah HTTP memiliki permukaan serangan yang lebih besar daripada HTTPS: pada kenyataannya HTTPS sendiri memiliki permukaan serangan yang lebih besar karena melibatkan lebih banyak kode. Jadi itu bahkan bukan keuntungan bersih sama sekali: itu adalah trade-off antara dua risiko marjinal.
Gilles 'SANGAT berhenti menjadi jahat'
9

Baru-baru ini saya menemukan masalah dengan repositori apt Perusahaan saya. Masalahnya adalah bahwa jika kita menggunakan transportasi http standar, orang lain dapat dengan mudah mendapatkan paket. Karena Perusahaan mengemas perangkat lunak miliknya sendiri dan tidak ingin membagikannya kepada semua orang, transportasi http menjadi masalah. Bukan tragedi tapi masalah. Ada beberapa cara bagaimana membatasi akses ke paket - firewall, membatasi akses pada tingkat server web, menggunakan ssh sebagai transportasi. Cukup mudah untuk membaca membaca tentang topik ini dapat ditemukan di sini: Batasi Akses Ke Gudang Debian Pribadi Anda

Dalam kasus kami, kami memutuskan untuk menggunakan https transport + otentikasi sertifikat klien. Secara singkat, yang diperlukan hanyalah:

  1. Mempersiapkan sertifikat yang ditandatangani sendiri, klien dan server (menggunakan easy-rsa);
  2. Konfigurasikan server web yang akan menerima repositori hanya untuk https; Dalam kasus nginx mungkin terlihat seperti:

    server {
    
      listen 443;
    
      root /path/to/public;
      server_name secure_repo;
    
      ssl on;
      ssl_certificate /etc/nginx/ssl/server.crt;
      ssl_certificate_key /etc/nginx/ssl/server.key;
    
      ssl_session_timeout 5m;
    
      ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:;
    
      ssl_prefer_server_ciphers on;
      ssl_client_certificate /etc/nginx/ssl/ca.crt;
      ssl_verify_client on;
    
      location / {
         autoindex on;
      }
    }
    
  3. Masukkan sertifikat klien, kunci klien dan sertifikat ca ke / etc / apt / ssl dan, dalam kasus dengan Ubuntu, tambahkan file 00https ke /etc/apt/apt.conf.d:

    Debug::Acquire::https "true"; Acquire::https::example.com { Verify-Peer "true"; Verify-Host "false"; CaInfo "/etc/apt/ssl/ca.crt"; SslCert "/etc/apt/ssl/client.crt"; SslKey "/etc/apt/ssl/client.key"; };

Perlu diingat, bahwa jika Anda menggunakan sertifikat yang ditandatangani sendiri, penting untuk mematikan verifikasi host: Verify-Host "false";Jika Anda tidak melakukan ini, Anda akan menemukan kesalahan: SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'

Dan di sini kita mulai, tidak ada lagi akses tidak sah ke repositori. Jadi ini hal yang cukup berguna dan kuat.

at0S
sumber
3
Terima kasih atas jawabannya. Tapi saya pikir masalah utamanya masih ada. HTTPS harus benar-benar menjadi protokol default untuk transfer melalui web dan paket debian pada khususnya. Argumen seharusnya bukan mengapa HTTPS, harus mengapa tidak?
zaadeh
1
@ aalizadeh, saya setuju dengan Anda, ada overhead saat menggunakan https, tetapi tidak ada overhead besar. Saya pikir, alasan utama mengapa https bukan transportasi default adalah bahwa beberapa organisasi secara eksplisit melarang lalu lintas terenkripsi (karena mereka ingin dapat menempelkan hidung mereka dalam apa yang dilakukan karyawan melalui Internet), yang berarti bahwa repositori harus mendukung http dan https transport. Mungkin ada pertimbangan lain
at0S
1
Menggunakan »Verifikasi-Tuan Rumah" false ";« salah, bahkan dengan sertifikat yang ditandatangani sendiri. Anda perlu membuat klien Anda mengetahui sertifikat server (yang benar) sebagai gantinya.
Axel Beckert
1
Memang, tetapi di sini klien saya hanya sistem internal. Jadi alih-alih membuat semua infrastruktur pki yang tepat saya memotong sudut. Dan ya, nanti pki diselesaikan dengan benar dan Verifikasi-Host salah; telah dihapus. Dan ya, intinya valid.
at0S
1
dengan ubuntu xenial paket apt diambil sebagai pengguna _riprivileged, dapatkah Anda memperbarui utas ini dengan perincian tentang bagaimana Anda mengelola atau menyelesaikan masalah izin file.
David
7

Perhatikan bahwa karena kerentanan suka

https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467

... yang menghindari penandatanganan InRelease, mungkin merupakan ide yang baik untuk mengkonfigurasi HTTPS.

Royce Williams
sumber
1
Dan sekarang yang ini juga: mirror.fail AKA usn.ubuntu.com/3746-1 AKA CVE-2018-0501. Penandatanganan InRelease tidak cukup . "Tetapi memindahkan semua mirror ke HTTPS akan membutuhkan waktu dan koordinasi!" Iya. Mulai sekarang. Ini bukan kegagalan InRelease terakhir.
Royce Williams
1
Berikut contoh lain, dari ekosistem yang berbeda - Alpine. Sistem manajemen paketnya tidak menggunakan HTTPS secara default, dan hanya mengandalkan penandatanganan untuk memverifikasi integritas paket ... dan verifikasi itu memiliki bug yang dapat dieksploitasi dari jarak jauh pada September 2018: justi.cz/security/2018/09/13/alpine- apk-rce.html Alpine seharusnya mulai bergerak sekarang untuk menggunakan HTTPS secara default.
Royce Williams
4

Untuk kasus penggunaan "anonimitas" ada juga apt-transport-toryang memungkinkan Anda untuk meletakkan URI seperti tor+http://di file sources.list. Ini adalah perlindungan anonimitas yang jauh lebih baik daripada hanya mengenkripsi koneksi ke mirror Anda.

Misalnya, pengamat lokal masih akan tahu bahwa Anda memperbarui atau menginstal perangkat lunak bahkan dengan HTTPS, dan mungkin dapat membuat beberapa tebakan yang layak tentang yang Anda lakukan (dan mungkin bahkan paket mana, berdasarkan ukuran).

Debian menyediakan repositori APT melalui Tor "Onion services" sehingga Anda bisa mendapatkan enkripsi ujung-ke-ujung (mirip dengan TLS) tanpa harus mempercayai sistem nama domain. Lihat onion.debian.org untuk semua layanan Debian yang tersedia dengan cara ini. Repositori FTP Debian utama adalah divwakviie2ienjx6t.onion

meejah
sumber