Dlaczego nie ma transportu https dla narzędzia apt Debian?

45

Biorąc pod uwagę całą paranoję związaną z rewelacjami NSA i wszystkim innym, zastanawiam się, dlaczego mechanizm instalacji pakietu debian nie obsługuje HTTPS dla jego transportu, nie mówiąc już o domyślnym używaniu go.

Wiem, że pakiety Debiana mają pewnego rodzaju sprawdzanie poprawności podpisu przy użyciu GPG, ale nadal nie sądzę, aby użycie transportu HTTPS zamiast HTTP byłoby zbyt trudne, biorąc pod uwagę, jak ważne jest to ze względów bezpieczeństwa.

Edycja: Chcę przede wszystkim uchronić się przed atakami MitM (w tym po prostu wąchaniem ruchu), a nie administratorami kopii lustrzanych Debiana. Repozytoria HTTP umieszczają cały system na stole, jeśli ktoś szpieguje mój ruch przechodząc do mirrorów Debiana.

zaadeh
źródło
2
Zasadniczo to samo pytanie dotyczące bezpieczeństwa informacji : Dlaczego pobieranie aplikacji nie odbywa się rutynowo za pośrednictwem HTTPS?
Gilles „SO- przestań być zły”
niepotrzebne ... to treść publiczna ... pakiety mają podpisane sumy kontrolne
Skaperen
ok, więc nie chcesz, aby administrator sieci wiedział, które pakiety instalujesz / aktualizujesz.
Skaperen
administratorzy lub inny podsłuchujący.
zaadeh

Odpowiedzi:

49

Jest. Musisz zainstalować pakiet apt-transport-https. Następnie możesz użyć linii takich jak

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

w twoim sources.listpliku. Ale zwykle nie jest to konieczne, ponieważ i tak cała zawartość jest publiczna, co powoduje narzut szyfrowania i opóźnienie. Ponieważ nie ufasz kluczowi publicznemu atakujących, nawet ruch HTTP jest bezpieczny przed atakami MitM. aptostrzega cię i nie instaluje pakietów, gdy atakujący wstrzykuje zmanipulowane pakiety.

EDYCJA: Jak wspomniano w komentarzach, korzystanie z repozytorium TLS jest rzeczywiście bezpieczniejsze . Badania pokazują, że używanie apt na niezaszyfrowanych repozytoriach może rzeczywiście stanowić zagrożenie dla bezpieczeństwa, ponieważ transport HTTP jest podatny na ataki typu replay.

Marco
źródło
7
Nie, większość serwerów lustrzanych nie obsługuje protokołu https. Po prostu dlatego, że szyfrowanie tego rodzaju ruchu nie ma większego sensu. Pakiety i tak są weryfikowane, a informacja jest publiczna.
Marco
4
Mogę wymyślić kilka powodów, dla których nadal wolę pobierać przez TLS: 1) Mogę dbać o swoją prywatność podczas instalowania pakietów i 2) mogą występować błędy w kodzie sprawdzania podpisów pakietów, które MITM może wykorzystać.
Jack O'Connor
2
@ JackO'Connor, podczas gdy pierwszy zarzut dotyczący prywatności jest zrozumiały, drugi jest jak powiedzenie, że lubię strony internetowe do podpisywania treści za pomocą kluczy PGP, ponieważ mogą występować błędy w kodzie TLS. Zarówno PGP, jak i TLS ustanawiają zaufanie; nie potrzebujesz do tego obu.
Paul Draper,
7
@Marco twoja odpowiedź jest nieprawidłowa; liczne prace badawcze wykazały, że zarówno repozytoria APT, jak i YUM są podatne na ataki polegające na odtwarzaniu, gdy dostęp do repozytorium uzyskuje się przez HTTP, nawet przy podpisach GPG. Dostęp do repozytoriów powinien być możliwy tylko przez TLS, przez 100% czasu.
Joe Damato,
6
Oto artykuł, do którego odnosi się Joe Damato - patrz także jego odpowiedź tutaj
SauceCode
17

Twoje założenie jest błędne: możesz użyć pobrań HTTPS. Musisz tylko znaleźć serwer lustrzany, który go obsługuje, i umieścić jego adres URL na liście źródeł. Musisz zainstalować apt-transport-httpspakiet.

Debian nie ułatwia pobierania HTTPS, ponieważ korzyści są bardzo niewielkie. Dystrybucja pakietów Debiana zawiera już mechanizm weryfikacji pakietów: wszystkie pakiety są podpisane przy pomocy Gpg . Jeśli aktywny man-in-the-middle przekieruje twój ruch na serwer z uszkodzonymi pakietami, uszkodzenie zostanie wykryte, ponieważ podpisy GPG nie będą ważne. Korzystanie z GPG zamiast HTTPS ma tę zaletę, że chroni przed większą liczbą zagrożeń: nie tylko przed aktywnym pośrednikiem w połączeniu z użytkownikiem końcowym, ale także przed nieuczciwym lub zainfekowanym lustrem lub innymi problemami w dowolnym miejscu w łańcuchu dystrybucji pakietów .

HTTPS zapewnia niewielką przewagę nad prywatnością, ponieważ przesłania pobierane pakiety. Jednak pasywny obserwator nadal może wykryć ruch między twoim komputerem a serwerem pakietów, aby wiedzieli, że pobierasz pakiety Debiana. Mogą również dowiedzieć się, które pakiety pobierasz z rozmiarów plików.

Jedynym miejscem, w którym pomógłby HTTPS, jest zaufanie do ładowania początkowego, aby uzyskać znany obraz instalacyjny. Wydaje się, że Debian tego nie zapewnia: istnieją sumy kontrolne nośników instalacyjnych , ale tylko przez HTTP.

Gilles „SO- przestań być zły”
źródło
Dostępna jest wersja nośnika instalacyjnego HTTPS: cdimage.debian.org/debian-cd
Fedir RYKHTIK
2
Bardzo mało korzyści? Co z justi.cz/security/2019/01/22/apt-rce.html ?
Aaron Franke
@AaronFranke Jeden konkretny błąd, który łatwiej jest wykorzystać z HTTP niż z HTTPS, ma bardzo małą zaletę, tak. To nie tak, że HTTP miał większą powierzchnię ataku niż HTTPS: w rzeczywistości sam HTTPS ma większą powierzchnię ataku, ponieważ wymaga więcej kodu. Nie jest to więc nawet korzyść netto: jest to kompromis między dwoma marginalnymi ryzykami.
Gilles „SO- przestań być zły”
9

Niedawno natknąłem się na problem z repozytorium apt firmy. Problem polegał na tym, że jeśli użyjemy standardowego transportu HTTP, ktokolwiek inny może łatwo dostać paczkę. Ponieważ firma pakuje własne oprogramowanie i nie chce udostępniać go wszystkim, transport HTTP staje się problemem. Nie tragedia, ale problem. Istnieje kilka sposobów ograniczenia dostępu do pakietu - zapora ogniowa, ograniczenie dostępu na poziomie serwera WWW, użycie ssh jako transportu. Dość łatwą do przeczytania lekturę na ten temat można znaleźć tutaj: Ogranicz dostęp do swojego prywatnego repozytorium Debiana

W naszym przypadku zdecydowaliśmy się na użycie protokołu https + uwierzytelnianie certyfikatu klienta. Krótko mówiąc, wystarczy:

  1. Przygotuj samopodpisane certyfikaty, klienta i serwer (używając easy-rsa);
  2. Skonfiguruj serwer WWW, którego fronton repozytorium akceptuje tylko https; W przypadku nginx może wyglądać następująco:

    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. Umieść certyfikat klienta, klucz klienta i certyfikat ca w / etc / apt / ssl i, w przypadku Ubuntu, dodaj plik 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"; };

Pamiętaj, że jeśli używasz samopodpisanego certyfikatu, ważne jest, aby wyłączyć weryfikację hosta: Verify-Host "false";Jeśli tego nie zrobisz, zobaczysz błąd: SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'

I zaczynamy, nie ma już nieautoryzowanego dostępu do repozytorium. Jest to więc bardzo przydatna i potężna rzecz.

at0S
źródło
3
Dzięki za świetną odpowiedź. Ale myślę, że główny problem nadal istnieje. HTTPS powinien naprawdę stać się domyślnym protokołem dla transferów przez Internet, aw szczególności pakietów Debiana. Argumentem nie powinno być dlaczego HTTPS, powinno być dlaczego nie?
zaadeh
1
@aalizadeh, zgadzam się z tobą, korzystanie z https wiąże się z narzutem, ale nie ma narzutu ogromnego. Myślę, że głównym powodem, dla którego https nie jest domyślnym transportem, jest to, że niektóre organizacje wyraźnie zabraniają wszelkiego zaszyfrowanego ruchu (ponieważ chcą mieć możliwość zatkania nosa w tym, co robią pracownicy przez Internet), co oznacza, że ​​repozytoria muszą wspierać transporty http i https. Mogą istnieć inne względy
at0S
1
Niepoprawne jest użycie „false” hosta „Verify-Host”; «, nawet w przypadku certyfikatów z podpisem własnym. Zamiast tego musisz poinformować klientów o (poprawnym) certyfikacie serwera.
Axel Beckert,
1
Rzeczywiście, ale tutaj moi klienci byli tylko systemami wewnętrznymi. Więc zamiast tworzyć całą odpowiednią infrastrukturę pki, ucinam róg. I tak, później pki zostało poprawnie rozliczone, a Verify-Host false; został usunięty. I tak, punkt jest ważny.
at0S
1
z Ubuntu Xenial pakiety apt są pobierane jako nieuprzywilejowany użytkownik _apt, czy możesz zaktualizować ten wątek o szczegóły dotyczące zarządzania lub rozwiązywania problemów z uprawnieniami do plików.
David
7

Należy pamiętać, że z powodu luk w zabezpieczeniach, takich jak

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

... która omija podpisywanie InRelease, prawdopodobnie dobrym pomysłem jest skonfigurowanie HTTPS.

Royce Williams
źródło
1
A teraz także: mirror.fail AKA usn.ubuntu.com/3746-1 AKA CVE-2018-0501. Podpisywanie InRelease nie jest wystarczające . „Ale przeniesienie wszystkich serwerów lustrzanych do HTTPS wymaga czasu i koordynacji!”. Tak. Zacząć teraz. To nie będzie ostatnia awaria InRelease.
Royce Williams,
1
Oto kolejny przykład z innego ekosystemu - alpejski. System zarządzania pakietami domyślnie nie korzysta z HTTPS i polega wyłącznie na podpisaniu w celu weryfikacji integralności pakietu ... a we wrześniu 2018 r. Weryfikacja zawierała błąd, który można zdalnie wykorzystać: justi.cz/security/2018/09/13/alpine- apk-rce.html Alpine powinna teraz zacząć domyślnie używać HTTPS.
Royce Williams,
4

W przypadku użycia „anonimowości” istnieje również apt-transport-tormożliwość umieszczania identyfikatorów URI jak tor+http://w plikach sources.list. Jest to znacznie lepsza ochrona anonimowości niż po prostu szyfrowanie połączenia z lustrem.

Na przykład lokalny obserwator nadal wiedziałby, że aktualizujesz lub instalujesz oprogramowanie, nawet za pomocą HTTPS, i prawdopodobnie może zgadywać, które z nich robisz (a być może nawet jakie pakiety, w zależności od rozmiaru).

Debian udostępnia repozytoria APT za pośrednictwem „usług cebulowych” Tora, dzięki czemu można uzyskać kompleksowe szyfrowanie (podobne do TLS) bez konieczności ufania systemowi nazw domen. Zobacz cebula.debian.org dla wszystkich usług Debiana dostępnych w ten sposób. Główne repozytorium FTP Debiana znajduje się pod adresemvwakviie2ienjx6t.onion

meejah
źródło