Linux rpm no key

RPM and GPG: How to verify Linux packages before installing them

More Linux resources

Large and popular RPM repositories are typically replicated around the world. The projects and companies providing the packages utilize content distribution networks (CDNs) and mirror sites to make their packages available to consumers. For many open-source projects, that includes hosting by volunteers. To detect and avoid malicious replacement packages, package owners can sign the package files, and consumers can verify those signatures.

While GPG can sign any file, manually checking package signatures is not scalable for system administrators. The RPM format has an area specifically reserved to hold a signature of the header and payload. The rpm utility uses GPG keys to sign packages and its own collection of imported public keys to verify the packages. YUM and DNF use repository configuration files to provide pointers to the GPG public key locations and assist in importing the keys so that RPM can verify the packages.

For this article, I will use keys and packages from EPEL. The public key is included in an RPM package, which also configures the yum repo . For some projects, the key may also be available directly from a source web site.

The rpm utility has its own key management

Since the rpm utility has its own key management, there is no need to import the GPG public keys to your personal GPG keyring. In fact, you cannot just verify the file with gpg commands because the signature is not of the entire .rpm file. Instead, the signature is only associated with the critical portions of the package.

Run the following command to use rpm to verify a package:

In this case, the «SIGNATURES NOT OK» message appears because the key has not yet been imported for RPM. The default behavior of rpm commands is to verify the signature of packages during any install or verify interactions. If that is not possible, because the package is not signed or the public key is not available, you may need to specify the —nogpgcheck option to skip this step.

If you have access to the GPG public key, you can use the following command to manually import a key:

Since the metadata for the key is stored in the RPM database, you can query and delete keys the same as any package.

Use the following command to list the keys:

Use this command to get the information on a key:

The following command is used to remove a key:

More options for key management are described in the man page included with the rpmkey package.

YUM and DNF can add keys to the RPM database

Other package managers make key management even easier. YUM and DNF use configuration files in /etc/yum.repos.d to specify a URL for the GPG key used to verify packages in that repository. The utilities can then import the key if it is not already available for verification.

In the yum repo configuration file, the line gpgcheck=1 indicates that GPG checking should be done for all packages in this repository. It is a Boolean value that can be changed in the configuration or overridden temporarily on the command line with the —nogpgcheck option.

If the GPG public key has not yet been imported to RPM when a package installation begins, then the yum (or dnf ) utility can initiate an import of the key. The gpgkey=URI line specifies the source of the key to be imported. This source can be any URI, including a local file or a remote web link. The yum or dnf utility will pause and ask for confirmation to import the key after showing the key ID and fingerprint.

Читайте также:  Linux execute as root

The key is added to RPM, and then the verification and installation of the package continues.

Prepare to sign a package

If you are creating and distributing your own RPM package files, you can sign those packages with the rpmsign utility.

The first step is to create a GPG keypair for signing. Be sure to also export and share the public key. For packages that will be distributed publicly, it is a good idea to use a new keypair and a keyring in a shared location. Additionally, use the —full-gen-key option and then choose to create a signing-only key instead of the default, which creates both a signing and encryption key.

Even if only one person is using the key to sign packages, make a separate keypair to use for signing. Do not use the same key for other daily tasks such as personal email encryption.

Next, we need to install the rpm-sign package and set up an rpmmacros file specifying the key to use. The rpm-sign package includes a man page for rpmsign which describes the process. Note that the package name has a dash that is not a part of the command name.

RPM commands get their configuration from several rpmmacros files. There is a default file with lots of samples located at /usr/lib/rpm/macros . If multiple people are responsible for signing packages using the same key, place a central configuration file in the /etc/rpm/macros location. Finally, for a specific person signing the packages, the user’s

/.rpmmacros file can be configured to point to the correct GPG key.

The minimum entry for the rpmmacros file is to specify the name of the key. You can use a name or the key ID. Obtain the key ID with the gpg —list-keys command.

Tip: Run the rpmsign command before setting the gpg_name variable and the message will show the format.

In addition to the key name, if the keyring is anywhere other than the default user

/.gnupg directory, use the gpg_path variable to set the location. This value will be the same as used with the —keyring option when the key was created.

There are additional options available if the GPG binary or command syntax requires something beyond the expected defaults.

Sign and publish packages

You are now ready to sign the package or packages. According to the rpmsign man page, the —addsign and —resign commands are interchangeable. Both will replace the signature portion of an RPM package file with current information.

The following command is an example of using the —addsign flag:

Older versions of rpmbuild included a —sign option that could sign the package during the build process if the GPG keys and rpmmacro files were configured correctly. The —sign option is now deprecated in favor of the separate step of using rpmsign . This approach encourages a build, test, sign, publish workflow.

Finally, make the packages and GPG public key available to clients. One option is to mimic the EPEL project and create an RPM file that includes the GPG public key and one or more yum repo files pointing to the location of the signed packages. For organizations hosting packages on a Red Hat Satellite Server, start by uploading the GPG public key, and then assigning that key to the product or repository that holds the signed packages. All packages in a repository must be signed with the same key. This is a common reason for Satellite administrators to resign packages before uploading.

Now that you know more about managing RPM packages with GPG, you can better understand how to work with rpm , yum , and dnf .

For further reading, check out Securing RPM signing keys and the Administration and Content Management guides in the Red Hat Satellite documentation.

[ Want to learn more about security? Check out the IT security and compliance checklist. ]

Источник

📦 Как добавить и включить репозиторий RPM Fusion в Fedora, RHEL, CentOS, AlmaLinux.

В этом кратком руководстве мы рассмотрим, что такое репозиторий RPM Fusion, почему мы должны установить репозиторий RPM Fusion и, наконец, как включить репозиторий RPM Fusion в Fedora, RHEL и их подобных, таких как дистрибутивы CentOS, AlmaLinux.

Что такое репозиторий RPM Fusion?

  • Если пакет соответствует требованиям, его нельзя включить в Fedora;
  • Если пакет с закрытым исходным кодом, он не может быть включен в Fedora;
  • Если пакет обременен законом, он не может быть включен в Fedora;
  • Если пакет нарушает законы США (в частности, федеральные законы или законы соответствующих штатов), он не может быть включен в Fedora.
Читайте также:  Realtime spy для windows

Любой пакет, который не соответствует вышеупомянутой политике, не будет включен в официальные репозитории Fedora и RHEL.

Вот почему создаются некоторые сторонние репозитории с либеральной политикой лицензирования.

Одним из таких репозиториев является RPM Fusion.

RPM Fusion – это поддерживаемый сообществом сторонний репозиторий программного обеспечения, который предоставляет пакеты, которые проект Fedora и Red Hat не могут поставлять по юридическим и другим причинам, о которых говорилось ранее.

RPM Fusion необходим для установки необходимых мультимедийных кодеков, проприетарного программного обеспечения и драйверов в Fedora, RHEL и его клонах, таких как CentOS, AlmaLinux и т. д.

RPM Fusion имеет два репозитория, а именно «free» и «nonfree».

Бесплатный репозиторий ( free ) содержит пакеты с открытым исходным кодом в соответствии с руководящими принципами лицензирования Fedora.

Несвободный репозиторий ( nonfree) содержит распространяемые пакеты, которые не являются Open Source, и пакеты, которые не являются бесплатными для коммерческих целей.

Вы можете добавить оба репозитория и использовать их одновременно в своей личной системе.

Между пакетами в бесплатных и несвободных репозиториях конфликтов не будет.

Если вас интересует запуск только бесплатных пакетов, просто добавьте free репо и установите unfree репо позже.

1. Включение репозитория RPM Fusion в Fedora Linux.

Чтобы включить как бесплатные, так и несвободные репозитории RPM Fusion в вашей системе Fedora, запустите:

Источник

Сборка rpm пакетов и настройка своего репозитория

В данной статье будет подробно описан процесс создание rpm пакетов и организация репозитория. Прошу всех, кому интересна данная тема, пройти под кат.

Я взялся писать крайне подробно, так что Вы можете пролистать очевидные для Вас вещи.

Оглавление

Установка системы

Наш сервис начинается с момента установки на него операционной системы. Естественно, что для сборки rpm пакетов мы выбираем rhel дистрибутив. В данном случае, был выбран CentOS 7.

Скачать CentOS

Создадим директорию, где будет лежать образ и перейдем в нее:

Далее можно непосредственно скачать образ и необходимые для проверки файлы:

или посредством torrent`а с помощью программы aria2, которую для начала установим:

Проверить образ

Скачать образ мало, нужно проверить его целостность и достоверность, что мы и сделаем.

Скачаем ключ для CentOS 7:

Посмотрим на ключ и импортируем его:

Проверим подпись файла, с контрольной суммой образа:

Как мы видим — все отлично и теперь можем проверить сам образ на целостность:

Запись образа на носитель

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

Запись образа на диск

Для записи данного образа, нам понадобится двухсторонний DVD. Допустим мы его нашли и записываем, установив предварительно wodim:

Запись образа на флешку

Двухсторонний DVD это как то архаично, так что возьмем флешку на 16 гб и запишем образ на нее, но прежде /dev/sda тут — это флешка, а у Вас она может быть другой. Смотри команду fdisk:

Если status=progress не поддерживается, то по старинке:

а можно воспользоваться pv:

Установка

Как поставить Centos 7, решать Вам, тут и за RAID подумать можно и за LVM и много чего еще,
я ставил минимальный пакет.

Процесс установки можно посмотреть в этом ролике.

Преднастройка

После установки системы, нам необходимо настроить наш сервер.

Обновление и установка пакетов

В начале мы обновим все установленные пакеты, далее установим репозиторий epel, в котором есть много что полезного для нас:

Следующим шагом установим группу пакетов, которые понадобятся нам для сборки, а так же ряд пакетов необходимые для развёртывания репозитория.

Для того чтобы комфортно и безопасно управлять сервером настроим SSH.

Безопаснее пользоваться ключами, по этому мы и создадим себе ключи для доступа к серверу на своем рабочем компьютере:

и добавим ключ на сервер:

Необходимо еще закрутить гайки в самой службе. Создадим копию файла конфигурации и приступим к редактированию:

В файле стоит добавить/изменить/раскомментировать следующие строки:

Межсетевой экран

Важно ограничить доступ к нашему серверу. По этой причине настроим межсетевой экран:

Тут мы добавили наши службы http https ftp для доступности извне и ssh, но только для сети 192.168.0.0/28.

Подготовка площадки сборки

Подготовим саму площадку для сборки. Стоит отметить, что вернее всего сборку производить на отдельном виртуальном хосте, активно используя технологию snapshot’ов, но тут я опишу все в едином целом. Так же для сборки нужно выделить отдельного пользователя, не являющемся администратором (т.е. sudo ему недоступно).

Создание директорий

Создаем необходимые директории:

Настройка PGP подписи

Наши пакеты, которые мы соберем, необходимо подписать, что будет обеспечивать целостность и достоверность.

Ключ будем использовать свой или если его нет, то создадим. Создавать ключ стоит на своем рабочем компьютере.

Создадим ключ, если его у нас нет:

Нас попросят ответить на ряд вопросов:
тип ключа, выбираем (1) RSA and RSA (default), размер ключа: 4096, срок действия: 6m, наше имя: Alexander F. Mikhaylov, Email: chelaxe@gmail.com, комментарий, тут можно указать для чего нам ключ: repo и ждем.

Читайте также:  Как выключить антивирус windows 10 касперский

Если вдруг после ответов на все вопросы получим это gpg: cancelled by user , то запускаем команду:

Сохраняем наш приватный ключ:

Создадим ключ для отзыва:

Экспорт открытого ключа на keyserver:

Теперь ключ можно и импортировать на наш сервер:

Смотрим где находится gpg утилита:

и настроем файл для подписи пакетов:

Создаем репозиторий

Теперь организуем сам репозиторий.

Создадим директорию, где будем хранить пакеты:

Экспортируем ключ в репозиторий:

Создаем сам репозиторий и подписываем метаданные:

Пакет для репозитория

Собираем пакет для автоматической установки репозитория в систему.

Файл репозитория для yum:

Экспортируем ключ для пакета:

Собираем все в архив:

Создаем SPECS файл для пакета:

На этом этапе нас спросят пароль от нашего PGP ключа.

Копируем созданный пакет в репозиторий и обновляем его:

Не забываем подписать метаданные:

Теперь установим наш репозиторий в систему:

После установки должен появиться репозиторий chelaxe и PGP ключ:

Самое важное тут это SPEC файлы, расписывать о них не стану, но предоставлю ряд ссылок:

и одна полезная команда:

она отобразит готовые макросы для сборки.

Собираем Tmux

Теперь соберем, для примера, что нибудь полезное. Собирать будем tmux — терминальный мультиплексор, без которого работать мне не комфортно. Стоит отметить tmux есть в base репозитории CentOS 7, но версия там 1.8, а мы соберем 2.7. Так же у пакета из base репозитория есть зависимость libevent, мы же соберем tmux со статическими библиотеками последних версий.

Готовим исходники

Скачиваем исходники tmux и необходимых библиотек:

Экспортируем GPG ключи для проверки исходников:

Подготовим файл конфигурации tmux:

Готовим SPEC файл

Этот файл будет интереснее предыдущего SPEC файла:

Сборка

Собираем пакет и добавляем его в репозиторий:

Не забываем подписать метаданные:

Смотри что и как получилось:

Установка и запуск

Устанавливаем наш пакет:

Запускаем tmux и радуемся:

Собираем fbida

Собирать будем fbida — комплект приложений для просмотра изображений в консоли. Данный пакет не нашел под Centos 7.

Готовим исходники

Скачиваем исходники fbida:

Экспортируем GPG ключи для проверки исходников:

Готовим SPEC файл

В этом SPEC файле будет больше зависимостей:

Сборка

Собираем пакет и добавляем его в репозиторий:

Не забываем подписать метаданные:

Установка и запуск

Устанавливаем наш пакет:

Настройка доступа по http/https

Теперь обеспечим доступ к нашему репозиторию по http/https.

Настройка

Первым делом настроем наш Apache:

Далее необходимо добавить/изменить/раскомментировать следующие строки:

Запускаем службу и прописываем ее в автозапуск:

Настраиваем наш репозиторий:

Т.к. в Centos 7 у нас Apache 2.4.6, а не 2.4.8, то параметры Диффи-Хеллмана необходимо вшить в сертификат:

По этой же причине с HTTP/2 у нас ничего не получится, но теперь вы можете собрать сами свежий Apache и воспользоваться HTTP/2.

Проверим конфигурацию и перечитаем конфигурацию:

Сертификат от Let’s Encrypt

Пока у нас свой сертификат и это не красиво, так что получим сертификат от Let’s Encrypt:

При ответе на вопросы, выбираем использование rewrite для перенаправления всех на https. В результате в файле изменяться строки у VirtualHost для http:

и у VirtualHost для https:

Строку Include /etc/letsencrypt/options-ssl-apache.conf закомментируем.

Тут стоит напомнить о необходимости добавить файл с параметрами Диффи-Хеллмана в конец сертификата:

И изменить заголовок HKPK (HTTP Public Key Pinning):

И изменим соответственно строку в конфигурации:

Проверим конфигурацию и перечитаем конфигурацию:

Есть еще одна проблема. Для обновления сертификата добавим запись в крон:

Но этого не достаточно, нужно еще дописать автоматическое добавление файла с параметрами Диффи-Хеллмана и параметры HKPK (HTTP Public Key Pinning).

Файлы .htaccess

Настройка через .htaccess лучше избежать в данном случае, если Вы все же решили его использовать, то сделайте следующее:

и AllowOverride смените на All . Так же добавьте:

для исключения в отображении на сайте.

Для vsftpd можно использовать опции:

А вообще смените стандартное имя .htaccess на другое с помощью параметра AccessFileName :

Тут можно используя модуль mod_autoindex Apache настроить внешний вид. Завернуть в noscript тег и используя html5, css3, javascript, jquery, bootstrap, backbone, awesome сделать конфетку, как это сделал я:

Вот что будет при использовании в браузере без поддержки javascript или с отключенным:

Сами файлы web интерфейса нужно будет скрыть как от vsftpd так и от демонстрации на сайте, делается аналогичными способами что и для сокрытия .htaccess файла.

Настроить внешний вид листинга через mod_autoindex или в nginx:

Настройка доступа по ftp

Запускаем службу и прописываем ее в автозапуск:

В случае использования .htaccess файла — продублируйте, чтобы файл был надежно защищен от доступа по ftp:

Заключение

Собственно на этом все. Надеюсь, данный мануал будет Вам полезен.

Источник

Оцените статью