Чому для програми debian apt не існує транспорту https?


45

При всій параноїї, яка прийшла з викриттями NSA, і все, мені цікаво, чому механізм встановлення пакунків debian не підтримує HTTPS для його транспортування, не кажучи вже про використання його за замовчуванням.

Я знаю, що пакети Debian мають певну перевірку підписів за допомогою GPG, але все ж я не думаю, що використання транспорту HTTPS замість HTTP було б надто важким, враховуючи, наскільки це важливо для безпеки.

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



не потрібен ... це загальнодоступний вміст ... пакунки підписали контрольні суми
Скаперен

добре, тому ви не хочете, щоб ваш адміністратор мережі знав, які пакунки ви встановлюєте / оновлюєте.
Скаперен

адміністратори або будь-який інший підслуховувач.
zaadeh

Відповіді:


49

Існує. Вам потрібно встановити пакет apt-transport-https. Тоді ви можете використовувати лінії типу

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

у вашому sources.listфайлі. Але зазвичай це не потрібно, оскільки весь вміст все одно є загальнодоступним, і він додає шифрування накладних витрат та затримки. Оскільки ви не довіряєте відкритому ключу зловмисників, навіть трафік http захищений від атак MitM. aptпопередить вас і не вдасться встановити пакунки, коли зловмисник вводить маніпульовані пакети.

EDIT: Як зазначалося в коментарях, користуватися сховищем TLS дійсно безпечніше . Дослідження показують, що використання apt на незашифрованих сховищах дійсно може становити загрозу безпеці, оскільки транспорт HTTP вразливий для повторних атак.


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

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

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

7
@Marco ваша відповідь неправильна; численні дослідницькі роботи показали, що як сховища APT, так і YUM вразливі для відтворення атак, коли доступ до сховища здійснюється через HTTP, навіть із підписами GPG. Доступ до сховищ слід здійснювати лише через TLS, 100% часу.
Джо Дамато

6
Ось документ, на який посилається @Joe Damato - також дивіться його відповідь тут
SauceCode

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, він повинен бути, чому ні?
zaadeh

1
@aalizadeh, я згоден з вами, накладні витрати при використанні https, але немає масових накладних витрат. Думаю, головна причина, по якій https не є транспортом за замовчуванням, полягає в тому, що деякі організації прямо забороняють будь-який зашифрований трафік (оскільки вони хочуть мати змогу приклеїти ніс до того, що працівники роблять через Інтернет), а це означає, що сховища повинні підтримувати як транспорт, так і https. Можливо, є й інші міркування
о0S

1
Використання »Verify-Host« false »;« помилково, навіть із сертифікатами, що підписуються самостійно. Натомість потрібно повідомити своїх клієнтів про (правильний) сертифікат сервера.
Аксель Беккерт

1
Дійсно, але тут мої клієнти були лише внутрішніми системами. Тож замість створення всієї належної інфраструктури pki я вирізав кут. І так, пізніше pki було врегульовано належним чином і Verify-Host false; було видалено. І так, пункт справедливий.
at0S

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.
Royce Williams

1
Ось ще один приклад з іншої екосистеми - альпійської. Його система управління пакунками не використовує HTTPS за замовчуванням і покладається виключно на підписання, щоб перевірити цілісність пакету ... і ця верифікація мала віддалену експлуатацію помилку у вересні 2018 року: justi.cz/security/2018/09/13/alpine- APK-rce.html Alpine повинна почати рух в даний час для використання HTTPS за замовчуванням.
Ройс Вільямс

4

Для випадків використання "анонімності" також існує такий варіант, apt-transport-torякий дозволяє вам розміщувати URI, як tor+http://у файлах source.list. Це набагато кращий захист від анонімності, ніж просто шифрування з'єднання з дзеркалом.

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

Debian надає сховища APT через Tor-сервіси "Onion" Tor, щоб ви могли отримати повне шифрування (подібне до TLS), не довіряючи системі доменних імен. Дивіться onion.debian.org про всі доступні таким чином послуги Debian. Основний сховище Debian FTP знаходиться вvwakviie2ienjx6t.onion

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.