ням установить http - это безопасно?

10

Я не очень знаком с использованием yum для установки пакетов. В прошлой жизни я использовал apt.

В настоящее время я смотрю на некоторые инструкции для запуска

# yum install http://example.com/package.rpm

который, по-видимому, подпишется на определенный репозиторий, из которого можно загрузить дополнительные пакеты. Это безопасная вещь?

Для сравнения я знаю, что пакеты apt имеют подписи gpg, что означает, что загрузка через http не является проблемой. Как описано здесь . А при загрузке пакетов за пределы основных репозиториев с помощью apt вы можете вручную добавить ключ gpg, который apt принимает, чтобы гарантировать, что любые нестандартные пакеты имеют одинаковый доверенный источник.

Если я выполню приведенную выше команду, попросит ли yum принять ключ gpg до того, как он начнет что-то устанавливать, или он может просто установить что-нибудь?

Если это актуально, мой /etc/yum.confфайл содержится gpgcheck=1внутри [main]раздела.

SauceCode
источник

Ответы:

11

Есть немного, чтобы объяснить с вашим вопросом.

Во-первых, важно понимать, как YUMи rpmработать вместе:

  1. RPM - это формат пакета, и существует инструмент командной строки с аналогичным названием, rpmкоторый устанавливает отдельные пакеты RPM. Вы можете думать об rpmинструменте командной строки как аналогdpkg командной строки, поскольку оба устанавливают отдельные пакеты без их зависимостей.
  2. yumэто программа более высокого уровня, которая устанавливает пакет RPM и его зависимости. Вы можете думать о yumкоманде как аналогapt-get как оба могут установить пакет и все его зависимости.
  3. При запуске yum installвы должны использовать имя пакета, а не URL. Например: yum install packageаналогично тому, как вы будете запускать:apt-get install package .
  4. Если у вас есть URL-адрес пакета, вы можете запустить его rpm -i https://url, но если у вас нет установленных зависимостей пакета, вам нужно будет установить их один за другим с rpm -i(болезненным) или с yumнастроенным репозиторием.

Теперь, что касается GPG, есть несколько вещей, которые нужно понять, которые применимы как к пакетным системам Debian, так и к RPM, но самые важные вещи, которые нужно понять:

  1. Обе системы имеют 2 набора подписей GPG: подписи GPG на самих пакетах и ​​подписи GPG в репозиториях.
  2. Пакеты Debian не проверяют подписи GPG, а официальные пакеты из репозиториев проектов Ubuntu и Debian не подписаны GPG.
  3. Обе системы уязвимы для целого ряда атак воспроизведения GPG при использовании поверх открытого текста HTTP; Вы должны абсолютно, 100% устанавливать свои пакеты через HTTPS, а не текстовый HTTP, если это вообще возможно.

Что касается подписей RPM и YUM GPG:

  1. Во-первых, вы можете указать путь или URL-адрес ключа GPG в файле конфигурации с помощью: gpgkey=https://example/gpg.keyили gpgkey=/usr/share/example/gpg.key. Вы можете указать несколько ключей GPG, если требуется более 1.
  2. Во-вторых, есть два варианта: gpgcheck=1и repo_gpgcheck=1. Первый параметр вызывает yum installпроверку подписи GPG на самом пакете, второй параметр проверяет подпись GPG хранилища. В идеале, вы должны использовать оба, но многие репозитории не настроены должным образом для поддержки обоих.
  3. Первый раз при запуске yum install, yumбудет пытаться импортировать GPG ключей , перечисленные вgpgkey случае , если они еще не были импортированы. Вам будет предложено принять или отклонить.
  4. У вас должен быть pygpgmeустановлен пакет в вашей системе для проверки подписей GPG. На последних версиях RHEL и CentOS pygpgmeавтоматически устанавливается зависимость yum, но вы должны убедиться, что она установлена ​​в вашей системе.
  5. Там нет эквивалента apt-transport-https, yumможно говорить по HTTPS из коробки, но вы должны убедиться , что версия yumвы используете имеет sslverifyопцию , чтобы дефолт включены; некоторые версии yumне делают. Если ваша версия этого не делает, вы должны включить ее. Очень важно проверять сертификаты SSL.

Даже с подписями GPG как на пакетах, так и в репозиториях, репозитории по-прежнему уязвимы для атак воспроизведения; Вы должны получить доступ к своим репозиториям через HTTPS, если это вообще возможно. Краткое объяснение одной атаки состоит в том, что злоумышленник может снимать метаданные репозитория и соответствующую подпись GPG в определенное время и воспроизводить эти метаданные и подпись клиенту, который их запрашивает, не давая клиенту видеть обновленные пакеты. Поскольку метаданные не затрагиваются, подпись GPG будет действительной. Затем злоумышленник может использовать эксплойт против известной ошибки в программном обеспечении, которая не была обновлена, для атаки на компьютер. Вы можете прочитать больше о нападениях на менеджеров пакетов в этой статье .

Я написал два обширных поста в блоге о GPG и YUM / об / мин, а также о GPG и APT .

Пожалуйста, оставьте комментарий, если у вас есть дополнительные вопросы, на которые я могу ответить; Управление пакетами невероятно сложно сделать правильно.

Джо Дамато
источник
Ницца. Здесь есть что поглотить. Один конкретный вопрос: «При запуске yum installвы должны использовать имя пакета, а не URL». - Согласитесь, это то, что я обычно делаю с apt. Но учитывая URL, что бы вы сделали? Возможно, это очевидно, но вы можете просто вручную добавить репо, http://example.comа затем сделать yum install package?
SauceCode
«Обе системы уязвимы для целого ряда атак воспроизведения GPG при использовании через открытый текст HTTP». Интересно - можете ли вы указать на дальнейшее чтение здесь? И есть ли ням эквивалент apt-transport-https?
SauceCode
@SauceCode Я обновил свой ответ, чтобы ответить на ваши вопросы и дать ссылку на статью с дополнительной информацией о безопасности менеджера пакетов.
Джо Дамато
Обратите внимание, что apt репозитории теперь имеют даты действия в своих Releaseфайлах, что ограничивает продолжительность времени, в течение которого атаки воспроизведения остаются в силе. (Если я правильно помню, это было реализовано в результате статьи, на которую есть ссылка в ответе.) Но использование TLS - лучшее решение!
Стивен Китт
@StephenKitt Да, Valid-Untilбыл добавлен для предотвращения повторных атак. однако нецелесообразно просить пользователей репозитория загрузить метаданные для нового репо и вручную проверить их на предмет наличия заголовка. Гораздо проще просто сказать людям всегда использовать TLS.
Джо Дамато