Як використовувати https з apt-get?


51

Чи apt-getвикористовується https чи будь-який вид шифрування? Чи є спосіб налаштувати його на використання?


3
Зауважте, що через такі вразливості, як bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467 ... що обходить підпис InRelease, напевно, було б корисно налаштувати HTTPS у будь-якому випадку.
Ройс Вільямс

whydoesaptnotusehttps.com - це веб-сторінка, яка точно і широко відповідає на це питання.
м.райнал

1
Є більш приземлена причина, чому це було б корисно. Я часто перебуваю в Інтернеті зі зламаним "прозорим" проксі-сервером, який, як правило, блокує певні завантаження дебютів (вони, ймовірно, викликають якийсь дурний блокатор шкідливих програм). Але під час https проксі не знає, що я завантажую, і тому це не заважає.
Нейт Елдредж

Відповіді:


53

apt-get(та інші команди маніпулювання пакетом, які є переднім до тих же бібліотек APT) можуть використовувати HTTP, HTTPS і FTP (і змонтовані файлові системи). Якщо вказати https://URL-адреси в /etc/apt/sources.listі /etc/apt/sources.list.d/*, тоді APT використовуватиме HTTPS.

APT перевіряє підпис пакетів. Тому вам не потрібно мати транспортну форму, яка забезпечує аутентифікацію даних. Якщо зловмисник модифікує завантажені файли, це буде помічено. Використовувати перевірку підпису краще, ніж використовувати з'єднання HTTPS, оскільки воно виявить атаку на сервері, з якого ви завантажуєте, а не лише атаку під час транзиту.

Точніше, (спрощений) потік даних для пакету полягає в наступному:

  1. Упаковка виробляється на машині складання.
  2. Пакет підписаний на складальній машині.
  3. Підписаний пакет копіюється в дзеркало для завантаження.
  4. Ви завантажуєте пакет.

HTTPS забезпечує, що крок 4 відбувається правильно. Підписи пакета гарантують, що кроки 2 - 4 відбуваються правильно.

Насправді, для кроку 4 є одна невелика перевага для HTTPS: підписи пакета гарантують лише достовірність пакета. Зловмисник на кроці 4 може представити себе законним сервером і обслуговувати устарені версії пакету. Наприклад, зловмисник може перешкодити вам завантажувати будь-які оновлення безпеки, сподіваючись скористатися вразливістю на вашій машині, яку ви б зафіксували, якби не атака. Це не дуже реалістичний сценарій, тому що він вимагає активного зловмисника (так що це повинен був би хтось контролювати ваше інтернет-з'єднання), але це може статися в принципі.

Іншою перевагою для HTTPS буде, якщо ви намагаєтесь приховати факт завантаження пакетів Ubuntu від когось, хто прослуховує ваше мережеве з'єднання. Вже тоді підслуховувач міг бачити, до якого господаря ви підключаєтесь; якщо ви підключитесь до дзеркала Ubuntu і завантажуєте сотні мегабайт, зрозуміло, що ви завантажуєте пакети Ubuntu. Підслуховувач також може здебільшого визначити, які пакунки ви завантажуєте з розміру файлів. Тож HTTPS буде корисний лише у тому випадку, якщо ви завантажуєте з сервера, який також пропонує інші файли подібного розміру - я не бачу жодного сенсу, крім сторонніх пакетів, і лише в дуже незвичних обставинах.

Повторюю: звичайна перевага HTTPS, яка полягає в тому, що ви знаєте, що ви підключені до реального сервера, марно під час завантаження пакетів Ubuntu. Підтвердження підпису на пакетах дає більш гарантію, ніж HTTPS.


11
Справа не в тому, що вона менш безпечна, це в тому, що вона менше стосується того, що ви намагаєтесь захистити. З APT шифрування вмісту транзакції не так важливо, тому що те, що ви завантажуєте, дуже суперечливе: це просто ті самі пакети Ubuntu, які завантажують багато людей. Але що важливо - це гарантувати, що файли під час їх отримання не були підроблені.
thomasrutter

3
Деякі тижні тому я намагався змінити джерела на https, і це просто не вийшло, apt-get updateповідомляв про помилку при спробі доступу до посилань. З ppas: те саме. Хтось пробував?
Страпаковський

8
Репозиторій (сервер оновлень) повинен підтримувати https / SSL, щоб це працювало. Основне archive.ubuntu.com ні . Ви можете перевірити в вашому браузері , якщо сервер підтримує випереджаючи https: // в URL і побачити , якщо ви отримаєте список каталогів і т.д.
іш

7
"Зловмисник на кроці 4 може представити себе законним сервером і обслуговувати устарені версії пакету." Насправді, ми захищаємося від цього, надаючи інформації про упаковку термін придатності. APT після цієї дати попередить, що дзеркало застаріле.
переплетення

4
Ось список усіх 15 дзеркал, які підтримують HTTPS, та сценарій, який генерує список: pastebin.com/QY2TQ1dq
Шнацель,

13

Для APT, як правило, важливіше не те, що ваше з'єднання зашифроване, а те, що файли, які ви отримуєте, не були підроблені.

APT має вбудовану перевірку підписів для забезпечення цього.

Шифрування перешкоджало б підслуховувачам не бачити, що ви завантажуєте, але те, що ви насправді завантажуєте (і запитуєте), є досить суперечливим: воно буде таким самим, як завантажують тисячі інших користувачів Ubuntu, а файли нічого не містять " t вільно доступний на багатьох серверах. Однак якщо вам потрібна конфіденційність щодо пакунків, які ви завантажуєте, HTTPS можна використовувати (вказати його у своєму source.list).

Підтвердження підпису, вбудоване в APT, гарантує, що отримані файли не були підроблені. Насправді не важливо, звідки беруться файли, і навіть можна отримати проксі-сервери або зворотні проксі-сервери між вами та сервером, щоб зменшити завантаження сервера або пришвидшити вас. Перевірка підпису все ще гарантує, що ви отримуєте немодифікований файл, співпадаючи з підписом, який можна було б виготовити криптографічно, з оригінальним файлом та копією приватного ключа Ubuntu.

Якщо ви перейдете на HTTPS, ви більше не зможете скористатися проксі-серверами для прискорення доступу або зменшення навантаження. І це не додасть більше впевненості щодо невтручання, яке підтвердження підписів APT вже не дає. Однак це означатиме, що підслуховувачі (наприклад, ваш Інтернет-провайдер) не зможуть побачити, які пакунки ви завантажуєте (що, швидше за все, не є конфіденційним, і як зазначив Жилл, вони могли вгадати з розміру файлу).


3
HTTPS не надасть великої конфіденційності, оскільки розмір файлів видно. Насправді для HTTPS є невелика перевага, яка полягає в тому, що він забезпечує те, що зловмисник, який контролює ваше мережеве з'єднання, не може мовчки прослизнути в усталі дані. Це трохи надумано.
Жил "ТАК - перестань бути злим"

6
Хороші бали. Під "застарілими даними" я припускаю, що ви маєте на увазі налаштування "людиною в середині" версії дзеркала Ubuntu, що складається з трохи більш ранніх версій, але все ще незмінних від того, що Ubuntu підписав у той час.
thomasrutter

5
Так, це все. Не соромтеся зазначити, чи я трохи жаргоні - мені потрібно пам’ятати, що це запитання Ubuntu, а не інформаційна безпека .
Жил "ТАК - перестань бути злим"

Здається, що в apt є велика дірка - коли ти apt updateі чоловік у середині годує тебе фіктивними показниками, apt з радістю бере все, що дає тобі чоловік у середині, і записує це у / var / lib / apt / списки. Це не лише зі злим чоловіком посередині, але, як якщо ви перебуваєте на WiFi готелю та перенаправляєтесь на сторінку входу, якщо ви запускаєтесь apt updateперед тим, як увійти, ваш / var / lib / apt / списки потраплять у сміття з HTML-сторінкою готелю. БОГУС! У будь-якому разі, звичайна перевірка сертифіката TLS виключила б це негайно.
Маріус

@Marius це, мабуть, неможливо через перевірку, яка охоплює списки, а також пакети. Якщо ви відтворили це за допомогою стандартної установки Apt, ви повинні повідомити про це технічному обслуговуючому апарату.
thomasrutter

1

Останні версії APT мають вбудовану підтримку TLS, тому вам просто потрібно замінити дзеркальні URL-адреси ваших пакетів сховищ на https-фіксовані. Для Debian це може виглядати так:

deb https://deb.debian.org/debian/ stretch main
deb https://deb.debian.org/debian-security stretch/updates main
deb https://deb.debian.org/debian/ stretch-updates main

Це корисно, навіть якщо APT включає власний протокол підпису для запобігання підробці пакунків, оскільки в APT можуть бути помилки (як це було: CVE-2016-1252 , CVE-2019-3462 ). Протоколи HTTP / TLS та їх шифри підлягають інтенсивному контролю, тому серйозна вразливість за нульовий день набагато менше, якщо ви додасте цей рівень безпеки.


На жаль, я лише зараз розумію, що цей сайт - Ask Ubuntu. :) Я не зміг знайти подібне рішення CDN для Ubuntu.
Leif Arne Storset

0

Я думаю, що це питання може використовувати відповідь із вказівками для мирян, так що ...

APT досі не використовує HTTPS за замовчуванням у щоденних складах Ubuntu 19.10 (Eoan) (який ще розробляється). Це можна перевірити, вивчивши файл /etc/apt/sources.list та зазначивши, що всі вихідні URL-адреси використовують схему URL-адрес "http:".

Щоб налаштувати його на використання HTTPS, можна дотримуватися наступних інструкцій:

Спочатку знайдіть надійне офіційне дзеркало архіву Ubuntu, яке підтримує HTTPS:

  1. Перейдіть до Офіційних дзеркал архіву для веб-сторінки Ubuntu .
  2. У таблиці на цій веб-сторінці визначте дзеркала, розміщені на (A) на веб-сайтах, які ви вважаєте надійними, (B) дзеркало "http:" і, необов'язково, (C) відповідає географічній близькості, швидкості сервера та оновлення. переваги свіжості.
  3. У таблиці на цій веб-сторінці натисніть посилання "http" дзеркала, визначеного на кроці (2), щоб відвідати "дзеркальну" версію дзеркала.
  4. У адресному рядку веб-переглядача вручну змініть "http:" в URL-адресі веб-сторінки на "https:".
  5. Знову перейдіть до дзеркала (через URL-адресу "https:"), щоб побачити, чи вирішено воно.

Наприклад, я вважаю, що фонд Вікімедіа є надійним, тому я відвідав дзеркальну URL-адресу http://mirrors.wikimedia.org/ubuntu/ і згодом змінив її на https://mirrors.wikimedia.org/ubuntu/ , яка успішно вирішується.

Якщо ви використовуєте Firefox (67.0.4) і встановлено розширення HTTPS Everywhere (2019.6.27) з увімкненою функцією "Шифрувати всі сайти, придатні" (через панель кнопки інструментів), кроки (4) та (5) можна пропустити оскільки розширення автоматично модифікує URL-адресу для використання HTTPS, дозволяючи одночасно визначити, чи буде вирішена версія "https:" URL-адреси.

По-друге , оновіть список джерел APT:

  1. Виконайте команду sudo cp /etc/apt/sources.list /etc/apt/sources.list.backupдля резервного копіювання списку джерел оновлення.
  2. Замініть базову URL-адресу дзеркала - показану тут як https://mirrors.wikimedia.org - в команді базовоюsudo sed --in-place --regexp-extended 's http://(us\.archive\.ubuntu\.com|security\.ubuntu\.com) https://mirrors.wikimedia.org g' /etc/apt/sources.list дзеркальною URL-адресою потрібного дзеркала та виконайте команду.

По-третє , слід вивчити вміст каталогу /etc/apt/sources.list.d/ на предмет "http:" джерел, які можуть бути змінені на "https:" після встановлення програмного забезпечення за межами архіву Ubuntu.

Наприклад, пакет Visual Studio Code від Microsoft додає до цього каталогу файл vscode.list, який вказує URL "http:". Проста зміна схеми URL з "http:" на "https:" дозволяє оновлювати HTTPS.

Розгляньте резервну копію будь-яких таких вихідних файлів, перш ніж змінювати їх.

Нарешті , проведіть оновлення, щоб переконатися, що оновлення працюватимуть правильно:

  1. Виконай sudo apt-get updateкоманду.
  2. Якщо це не працює, як очікувалося, відновіть створені вами файли списку резервного копіювання, виконавши sudo cp /etc/apt/sources.list.backup /etc/apt/sources.listкоманду.

Також варто зазначити, що існує пакет apt-transport-https для додавання HTTPS-підтримки до APT. Однак цей пакет, мабуть, непотрібний відповідно до веб-сторінки https://launchpad.net/ubuntu/eoan/+package/apt-transport-https і не потрібен з APT 1.5 відповідно до інформації, показаної після виконання команди apt-cache show apt-transport-https.

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