Почему нет транспорта https для инструмента Debian apt?


45

Мне кажется, почему механизм установки пакетов Debian не поддерживает HTTPS для его транспортировки, не говоря уже о его использовании по умолчанию.

Я знаю, что пакеты debian имеют своего рода проверку подписи с использованием GPG, но все же я не думаю, что использование транспорта HTTPS вместо HTTP было бы слишком сложно, учитывая, насколько это важно с точки зрения безопасности.

Редактировать: я в основном хочу защитить себя от MitM-атак (включая только анализ трафика), а не администраторов зеркал Debian. HTTP-репозитории помещают все настройки системы на стол, если кто-нибудь подсматривает за моим трафиком, идущим на зеркала Debian.



не нужно ... это общедоступный контент ... пакеты имеют подписанные контрольные суммы
— Skaperen

Итак, вы хотите, чтобы ваш сетевой администратор не знал, какие пакеты вы устанавливаете / обновляете
— Skaperen

администраторы или любой другой подслушивающий.
— Заад

Ответы:


49

Есть. Вам необходимо установить пакет apt-transport-https. Тогда вы можете использовать такие строки, как

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

в вашем sources.listфайле. Но, как правило, в этом нет необходимости, поскольку все содержимое в любом случае является общедоступным, и это добавляет накладные расходы на шифрование и задержку. Поскольку вы не доверяете открытому ключу злоумышленника, даже http-трафик защищен от атак MitM. aptпредупредит вас и не сможет установить пакеты, когда злоумышленник внедряет манипулируемые пакеты.

РЕДАКТИРОВАТЬ: Как уже упоминалось в комментариях, действительно более безопасно использовать TLS- репозиторий. Исследования показывают, что использование apt в незашифрованных репозиториях действительно может представлять угрозу безопасности, поскольку транспорт HTTP уязвим для атак воспроизведения.


7
Нет, большинство зеркал не поддерживают https. Просто потому, что нет смысла шифровать этот тип трафика. Пакеты проверяются в любом случае, и информация является общедоступной.
— Марко

4
Я могу вспомнить пару причин, по которым я все еще предпочитаю скачивать через TLS: 1) я мог бы позаботиться о своей конфиденциальности при установке пакетов, и 2) могут быть ошибки в коде проверки подписи пакетов, которые MITM может использовать.
— Джек О'Коннор,

2
@ JackO'Connor, хотя первое возражение о конфиденциальности понятно, второе похоже на то, что мне нравится, когда веб-сайты подписывают свое содержимое ключами PGP, поскольку в коде TLS могут быть ошибки. И PGP, и TLS устанавливают доверие; вам не нужны оба для этого.
— Пол Дрейпер

7
@ Марко ваш ответ неверен; многочисленные исследовательские работы показали, что хранилища APT и YUM уязвимы для атак воспроизведения, когда к хранилищу обращаются через HTTP, даже с подписями GPG. Хранилища должны быть доступны только через TLS, 100% времени.
— Джо Дамато

6
Вот статья, на которую ссылается @Joe Damato - см. Также его ответ здесь
— SauceCode 22.10.16

17

Ваше предположение неверно: вы можете использовать HTTPS-загрузки. Вам просто нужно найти зеркало, которое поддерживает его, и поместить его URL в список источников. Вам нужно будет установить apt-transport-httpsпакет.

Debian не облегчает загрузку HTTPS, потому что это дает очень мало преимуществ. В дистрибутив Debian уже включен механизм проверки пакетов: все пакеты подписаны с помощью Gpg . Если активный посредник перенаправит ваш трафик на сервер с поврежденными пакетами, повреждение будет обнаружено, поскольку подписи GPG не будут действительными. Преимущество использования GPG вместо HTTPS заключается в том, что он защищает от большего количества угроз: не только от активного посредника в соединении конечного пользователя, но также от мошеннического или зараженного зеркала или других проблем в любом месте цепочки распространения пакетов. ,

HTTPS обеспечивает небольшое преимущество конфиденциальности в том, что скрывает загруженные вами пакеты. Однако пассивный наблюдатель все еще может обнаружить трафик между вашим компьютером и сервером пакетов, поэтому он будет знать, что вы загружаете пакеты Debian. Они также могут получить хорошее представление о том, какие пакеты вы загружаете из файлов разного размера.

Единственное место, где HTTPS мог бы помочь, - для начальной загрузки доверия, чтобы получить известный действительный установочный образ. Похоже, что Debian этого не обеспечивает: есть контрольные суммы установочных носителей , но только через HTTP.


Существует HTTPS-версия установочного носителя: cdimage.debian.org/debian-cd
— Федир РИХТИК,

2
Очень мало пользы? Как насчет justi.cz/security/2019/01/22/apt-rce.html ?
— Аарон Франке

@AaronFranke Одна конкретная ошибка, которую проще использовать с HTTP, чем с HTTPS, да, очень мало пользы. Дело не в том, что у HTTP была большая поверхность атаки, чем у HTTPS: на самом деле сам HTTPS имеет большую поверхность атаки, поскольку в нем задействовано больше кода. Так что это даже не чистая выгода вообще: это компромисс между двумя предельными рисками.
— Жиль "ТАК - прекрати быть злым"

9

Совсем недавно я решил проблему с подходящим хранилищем моей компании. Проблема заключалась в том, что если мы используем стандартный транспорт http, любой другой может легко получить пакет. Поскольку компания упаковывает свое собственное проприетарное программное обеспечение и не хочет делиться им со всеми, http-транспорт становится проблемой. Не трагедия, а проблема. Есть несколько способов ограничить доступ к пакету - межсетевой экран, ограничение доступа на уровне веб-сервера, использование ssh в качестве транспорта. Довольно простое чтение по этой теме можно найти здесь: ограничить доступ к вашему личному репозиторию Debian

В нашем случае мы решили использовать протокол проверки подлинности с использованием протокола https + сертификат клиента. Вкратце, все, что нужно, это:

  1. Подготовить самозаверяющие сертификаты клиента и сервера (используя easy-rsa);
  2. Сконфигурируйте веб-сервер, который выходит из репозитория и принимает только https; В случае nginx это может выглядеть так:

    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. Поместите сертификат клиента, ключ клиента и сертификат CA в / etc / apt / ssl и, в случае с Ubuntu, добавьте файл 00https в /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"; };

Имейте в виду, что если вы используете самозаверяющий сертификат, важно отключить проверку хоста: Verify-Host "false";если вы этого не сделаете, вы увидите ошибку: SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'

И вот мы здесь, больше нет несанкционированного доступа к хранилищу. Так что это довольно полезная и мощная вещь.


3
Спасибо за отличный ответ. Но я думаю, что главная проблема все еще там. HTTPS действительно должен стать протоколом по умолчанию для передачи по сети и, в частности, пакетов Debian. Аргумент не должен быть почему HTTPS, а почему нет?
— Заад

1
@aalizadeh, я согласен с вами, есть издержки при использовании https, но нет больших накладных расходов. Я думаю, что основная причина, по которой https не является транспортом по умолчанию, заключается в том, что некоторые организации явно запрещают любой зашифрованный трафик (поскольку они хотят иметь возможность совать свои носы в то, что сотрудники делают через Интернет), что означает, что репозитории должны поддерживать оба http и https переносят. Может быть, есть и другие соображения
— at0S

1
Использование »Verify-Host" false ";« неправильно даже с самозаверяющими сертификатами. Вместо этого вам нужно сообщить своим клиентам (правильный) сертификат сервера.
— Аксель Бекерт

1
Действительно, но здесь моими клиентами были только внутренние системы. Таким образом, вместо того, чтобы создавать всю надлежащую инфраструктуру pki, я сократил угол. И да, позже pki был установлен правильно и Verify-Host false; был удален. И да, точка в силе.
— 0

1
с Ubuntu Xenial пакеты apt выбираются как непривилегированный пользователь _apt. Не могли бы вы обновить эту ветку с подробностями о том, как вы справились или разрешили проблемы с разрешениями файлов.
— Дэвид

7

Обратите внимание, что из-за таких уязвимостей, как

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

... которая обходит подпись InRelease, вероятно, в любом случае, неплохо бы настроить HTTPS.


1
А теперь и этот: mirror.fail AKA usn.ubuntu.com/3746-1 AKA CVE-2018-0501. InRelease подписания не достаточно . «Но перемещение всех зеркал в HTTPS потребует времени и координации!». Да. Начать сейчас. Это не будет последний сбой InRelease.
— Ройс Уильямс

1
Вот еще один пример из другой экосистемы - Alpine. Его система управления пакетами по умолчанию не использует HTTPS и полагается исключительно на подпись для проверки целостности пакета ... и эта проверка имела удаленно используемую ошибку в сентябре 2018 года: justi.cz/security/2018/09/13/alpine- APK-rce.html Alpine должна начать движение в настоящее время для использования HTTPS по умолчанию.
— Ройс Уильямс

4

Для варианта использования «анонимность» есть также, apt-transport-torкоторый затем позволяет вам помещать URI, как tor+http://в файлах sources.list. Это намного лучшая защита от анонимности, чем простое шифрование соединения с вашим зеркалом.

Например, местный наблюдатель по-прежнему будет знать, что вы обновляете или устанавливаете программное обеспечение даже с HTTPS, и, вероятно, может подсказать, какие из них вы делаете (и, возможно, даже какие пакеты в зависимости от размера).

Debian предоставляет APT-репозитории через Tor «Onion services», чтобы вы могли получить сквозное шифрование (аналогично TLS) без необходимости доверять системе доменных имен. Смотрите onion.debian.org для всех сервисов Debian, доступных таким образом. Основной FTP-репозиторий Debian находится по адресуvwakviie2ienjx6t.onion

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.