Proč pro debian apt nástroj neexistuje přenos https?

Se vší paranoiou, která přišla s odhaleními NSA, mě zajímá, proč mechanismus instalace balíčků Debian nepodporuje HTTPS pro jeho transport, natož jeden ve výchozím nastavení.

Vím, že balíčky Debianu mají nějaký druh ověřování podpisů pomocí GPG, ale přesto si nemyslím, že použití přenosu HTTPS místo HTTP by bylo příliš těžké, vzhledem k tomu, jak důležité je to z hlediska bezpečnosti .

Upravit: Chci se hlavně chránit před útoky MitM (včetně pouze čichání provozu), ne administrátory zrcadlení Debianu. Úložiště HTTP umístí celý systém nastavený na stůl pro kohokoli, kdo nasává provoz do zrcadel Debianu.

Komentáře

odpověď

Existuje. Musíte si nainstalovat balíček apt-transport-https . Pak můžete použít řádky jako

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

ve vašem souboru sources.list. Obvykle to ale není nutné, protože celý obsah je stejně veřejný a přidává režii a latenci šifrování. Protože nedůvěřujete veřejnému klíči útočníků, je dokonce i provoz HTTP bezpečný před útoky MitM. apt vás upozorní a neinstaluje balíčky, když útočník vloží manipulované balíčky.

EDIT: Jak je uvedeno v komentářích, je bezpečnější použít repozitář TLS . Výzkumy ukazují , že používání apt na nezašifrovaných úložištích může skutečně představovat bezpečnostní riziko, protože přenos HTTP je zranitelný při opakovaných útocích.

Komentáře

  • Ne, většina zrcadel nepodporuje https. Jednoduše proto, že ‚ nemá smysl tento druh provozu šifrovat. Balíčky se i tak ověřují a informace jsou veřejné.
  • Napadá mě několik důvodů, proč bych mohl stále raději stahovat přes TLS: 1) Při instalaci balíčků by mi mohlo záležet na mém soukromí a 2) tam mohou to být chyby v kódu kontroly podpisu balíčku, které by mohl MITM zneužít.
  • @JackO ‚ Connor, zatímco první námitka o ochraně soukromí je pochopitelná, druhá je jako říkat Mám rád webové stránky, aby podepisovaly svůj obsah pomocí klíčů PGP, protože v kódu TLS mohou být chyby. Jak PGP, tak TLS vytvářejí důvěru; k tomu nepotřebujete ‚ obojí.
  • @Marco vaše odpověď je nesprávná; četné výzkumné práce ukázaly, že úložiště APT i YUM jsou zranitelná vůči přehrání útoků, když je úložiště přístupné přes HTTP, dokonce i s podpisy GPG. Do repozitářů by měl být přistupován pouze přes TLS, a to 100% času.
  • Zde je článek, na který @Joe Damato odkazuje – viz také jeho odpověď zde

odpověď

Vaše předpoklad je špatný: můžete použít stahování HTTPS. Musíte jen najít zrcadlo, které to podporuje, a umístit jeho URL do seznamu zdrojů. Budete si muset nainstalovat balíček apt-transport-https .

Debian nevytváří HTTPS stahování je snadné, protože existuje jen velmi malá výhoda. Distribuce balíčků Debianu již obsahuje mechanismus pro ověřování balíků: všechny balíčky jsou podepsány Gpg . Pokud aktivní man-in-the-middle přesměruje váš provoz na server s poškozenými balíčky, poškození bude detekováno, protože podpisy GPG nebudou platné. Použití GPG namísto HTTPS má tu výhodu, že chrání před více hrozbami: nejen proti aktivnímu man-in-the-middle na připojení koncového uživatele, ale také proti nepoctivému nebo infikovanému zrcadlu nebo jiným problémům kdekoli v distribučním řetězci balíčků.

HTTPS poskytuje mírnou výhodu ochrany osobních údajů v tom zakrývá stažené balíčky. Pasivní pozorovatel však stále může detekovat provoz mezi vaším počítačem a balíkovým serverem, takže bude vědět, že stahujete balíčky Debianu. Mohli by také získat dobrou představu o tom, které balíčky stahujete z velikostí souborů.

Jediným místem, kde by HTTPS pomohlo, je bootstrapping trust, aby získali známý platný instalační obraz. Debian ne “ Zdá se, že to neposkytuje: existují kontrolní součty instalačního média , ale pouze přes HTTP.

Komentáře

  • Existuje instalační médium HTTPS: cdimage.debian.org/debian -cd
  • Velmi malá výhoda? A co justi.cz/security/2019/01/22/apt-rce.html ?
  • @AaronFranke Jedna konkrétní chyba, kterou je snadnější zneužití s HTTP než s HTTPS má velmi malou výhodu, ano. ‚ to není, jako kdyby měl HTTP větší útočnou plochu než HTTPS: ve skutečnosti má HTTPS větší útočnou plochu, protože zahrnuje více kódu. Není to tedy vůbec ‚ čistý přínos: ‚ je kompromis mezi dvěma marginálními riziky.

Odpověď

Nedávno jsem narazil na problém s apt repozitářem mé společnosti. Problém byl v tom, že pokud použijeme standardní http transport kdokoli jiný může snadno získat balíček. Jelikož společnost balí vlastní proprietární software a nechce jej sdílet se všemi, http transport se stává problémem. Ne tragédií, ale problémem. Existuje několik způsobů, jak omezit přístup k balíčku – firewalling, omezení přístupu na úrovni webového serveru, použití ssh jako přenosu. Čtení na toto téma, které se snadno spotřebovává, naleznete zde: Omezit přístup do vašeho soukromého úložiště Debianu

V našem případě jsme se rozhodli použít https transport + autentizaci klientského certifikátu. Stručně řečeno, stačí:

  1. Připravit certifikáty s vlastním podpisem, klientské a server (pomocí easy-rsa);
  2. Nakonfigurujte webový server, který je v čele úložiště, aby přijímal pouze https; V případě nginx to může vypadat takto:

    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. Vložte certifikát klienta, klíč klienta a certifikát ca do / etc / apt / ssl a v případě Ubuntu přidejte soubor 00https do /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"; };

Pamatujte, že pokud používáte certifikát s vlastním podpisem, je důležité vypnout ověření hostitele: Verify-Host "false"; Pokud tak neučiníte, můžete „Chytím chybu: SSL: certificate subject name (blah-blah-blah) does not match target host name "example.com"

A jdeme na to, již neexistuje neautorizovaný přístup k úložišti. To je tedy docela užitečná a mocná věc.

Komentáře

  • Děkujeme za skvělou odpověď. Ale myslím, že hlavní problém stále existuje. HTTPS by se měl skutečně stát výchozím protokolem pro převody přes web a zejména balíčky debian. Argument by neměl být důvod, proč HTTPS, měl by být důvod, proč ne?
  • @aalizadeh, souhlasím s vámi, při použití https je režie, ale neexistuje žádná masivní režie. Myslím, že hlavním důvodem, proč https není výchozím přenosem, je to, že některé organizace výslovně zakazují jakýkoli šifrovaný provoz (protože chtějí být schopni strčit nos za to, co zaměstnanci dělají přes internet), což znamená, že úložiště musí podporovat transporty http i https. Možná existují i další úvahy
  • Použití » Verify-Host “ false „; « se mýlí, dokonce is certifikáty s vlastním podpisem. Musíte místo toho upozornit své klienty na (správný) certifikát serveru.
  • Skutečně, ale tady byli moji klienti pouze interní systémy. Takže místo toho, abych vytvořil veškerou správnou infrastrukturu pki, jsem prolomil roh. A ano, později bylo pki správně vyrovnáno a Verify-Host false; byl odebrán. A ano, bod je platný.
  • s ubuntu xenial jsou balíčky apt načteny jako neprivilegovaný uživatel _apt, můžete prosím aktualizovat toto vlákno podrobnostmi o tom, jak jste spravovali nebo vyřešili problémy s oprávněním souboru.

Odpověď

Všimněte si, že kvůli zranitelnosti, jako je

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

… což obchází podpis InRelease, je pravděpodobně dobrý nápad nakonfigurovat HTTPS stejně.

A toto není jediný příklad – mnoho dalších aktualizačních systémů, které používají výchozí HTTP, také mělo historii selhání ověření podpisu.

Mechanismy aktualizace důležité pro zabezpečení by měly používat HTTPS i ověření podpisu, aby bylo robustní. Každá zmírňuje selhání druhé.

Komentáře

  • A nyní i tato: mirror.fail AKA usn.ubuntu.com/3746-1 AKA CVE-2018-0501. Podepisování InRelease nestačí . “ Ale přesun všech zrcadel na HTTPS bude vyžadovat čas a koordinaci! „. Ano. Začněte hned. Toto nebude poslední selhání InRelease.
  • Zde ‚ je další příklad z jiného ekosystému – Alpine. Jeho systém správy balíčků nepoužívá ‚ ve výchozím nastavení HTTPS a při ověřování integrity balíčku se spoléhá pouze na podepsání …a toto ověření mělo v září 2018 vzdáleně zneužitelnou chybu: justi.cz/security/2018/09/13/alpine-apk-rce.html Alpine by měl začít ve výchozím nastavení přejít nyní na používání HTTPS.
  • (Úplné zveřejnění: moje vlastní podstata, ale ‚ je jediný odkaz, který znám z), zde je seznam všech selhání selhání ověřování podepisování na straně klienta, kterých jsem si ‚ vědom. Seznam je netriviální velikosti a pravidelně roste. Dodává se vítáno. gist.github.com/roycewilliams/cf7fce5777d47a8b22265515dba8d004

Odpovědět

Pro případ použití„ anonymity “existuje také apt-transport-tor, který vám poté umožňuje vložit URI jako tor+http:// soubory sources.list. To je mnohem lepší ochrana anonymity než pouhé šifrování připojení k vašemu zrcadlu.

Například místní pozorovatel by stále věděl, že aktualizujete nebo instalujete software i přes HTTPS, a pravděpodobně dokáže udělat slušné odhady. o tom, kdo z nich děláte (a možná i jaké balíčky, podle velikosti).

Debian poskytuje úložiště APT prostřednictvím Tor „cibulových služeb“, takže můžete získat šifrování typu end-to-end (podobné na TLS), aniž byste museli důvěřovat systému doménových jmen. Viz cibule.debian.org pro všechny služby Debianu dostupné tímto způsobem. Hlavní úložiště FTP Debianu je na vwakviie2ienjx6t.onion

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *