Почему apt-key устаревает?
Процесс безопасной установки содержит в себе много подводных камней, одним из которых является скачивание файлов и ресурсов с сохранением конфиденциальности и проверки подлинности. В Linux дистрибутивах были реализованы утилиты apt-key и add-apt-repository, которые автоматизировали процесс проверки пакетов репозиториев по добавленным ключам. Однако появилась значимая проблема безопасности: отсутствие механизма закрепления конкретного ключа за репозиторием. Это значит, что в случае компрометации ключа компании или злоупотребления сотрудников своими полномочиями может быть подписан вредоносный файл. В новых версиях дистрибутивов уже интегрировали более безопасное решение с использованием GPG напрямую, которое рассмотрим ниже.
Какая утилита заменит apt-key?
Вместо устаревающих apt-key и apt-add-repository, которые были посредником в работе механизма проверки, будет действовать только утилита GPG. Она и до этого присутствовала в механизме идентификации и проверки целостности, подлинности. Однако обновление позволит избавиться от утилит посредников, которые представляли ряд угроз.
GPG или GNU Privacy Guard представляет собой крипто-пакет, позволяющий производить шифрование, расшифровку, подписывать документы и сообщения с помощью ЭЦП, хранить ключи с идентификаторами в базе и выполнять многие функции криптосистемы. Как раз одной из таких является проверка подписи на пакетах apt. Для наглядности будем выполнять все действия на примере облачного сервера от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать.
Потребуется некоторое время для развертывания серверных мощностей. После чего вы можете подключиться любым из удобных способов. И перейдем к терминалу с нашей ОС!
Как добавить ключи и репозиторий в терминале?
Для начала необходимо получить публичные ключи и ссылку на репозиторий откуда буду скачиваться пакеты. Для примера, рассмотрим базу данных MongoDB. Перейдя, на официальный сайт найдем для дистрибутива Debian репозиторий и зафиксируем основные компоненты:
- Публичный ключ: www.mongodb.org/static/pgp/server-7.0.asc
- Ссылка на репозиторий: repo.mongodb.org/apt/debian
Для работы с компонентами необходимы утилиты curl и gpg, при их отсутствии установите через команду ниже:
При скачивании данных из репозитория перед установкой Linux обращается к списку доверенных ключей и проверяет подписи, если совпадают, то переходим к процессу установки. Иначе утилита отображает не соответствие подписей и пакет считается потенциально недостоверным. Для того, чтобы файлы проходили проверку необходимо скачать публичный ключ и добавить в список доверенных.
gpg --dearmor -o /usr/share/keyrings/mongokey.gpg
Проверив, что файл действительно представляет собой публичную подпись, теперь необходимо добавить репозиторий и связать его с ключом. Для этого пропишем команду, которая позволит внести изменения в файл с репозиториями:
http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main"\
>> /etc/apt/sources.list.d/mongodb-org-7.0.list
Рассмотрим подробнее каждый элемент команды:
- утилита echo позволяет вывести на экран значения в кавычках;
- строка [ signed-by=/usr/share/keyrings/mongokey.gpg ] представляет собой путь для механизма проверки к ключу;
- ссылка на репозиторий http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main;
- перенаправление содержимого с экрана, после утилиты echo в файл /etc/apt/sources.list.d/mongodb-org-7.0.list.
После того, как мы проверили с помощью утилиты cat наличие записи, можем обновить дистрибутив и попробовать скачать ПО:
mongodb-org -y
Пакеты были успешно загружены и установлены в системе! В данном случае мы безопасно установили ключи, так как предварительно соединились по HTTPS с сайтом, у которого был достоверный сертификат. Это говорит о подлинности хранимых данных и так же хеш-сумма, которая приложена к ключу удостоверяет в его целостности. А соответственно переданные пакеты подлинны и не изменены!