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

45

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

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

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

zaadeh
источник
не нужно ... это общедоступный контент ... пакеты имеют подписанные контрольные суммы
Skaperen
Итак, вы хотите, чтобы ваш сетевой администратор не знал, какие пакеты вы устанавливаете / обновляете
Skaperen
администраторы или любой другой подслушивающий.
Заад

Ответы:

49

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

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

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

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

Marco
источник
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'

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

at0S
источник
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

meejah
источник