Найти в Дзене

Создаем хранилище паролей в Linux при помощи утилиты Pass

Оглавление

Про менеджер паролей Pass рассказывал в отдельном посте, но там было только упоминание преимуществ утилиты, про установку и настройку тогда ничего не сказал. Пользуюсь этой утилитой на протяжении полугода, думаю, что достаточный срок, чтобы рекомендовать ее подписчикам и читателям, желающим обзавестись безопасным хранилищем паролей. Готовьте чай и вкусняшки и приступайте к чтению.

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

Подготовка к установке и настройке

Для того, чтобы в итоге получить хранилище паролей нам понадобятся:

  • дистрибутив Linux - какой именно, значения не имеет.
  • GnuGPG - утилита для шифрования информации и создания электронных цифровых подписей (установлена по-умолчанию).
  • Pass - непосредственно сам менеджер паролей.

Генерируем открытый и закрытый ключи шифрования

Каждый пароль, который мы будем создавать в Pass будет зашифрован (и в последующем расшифрован) при помощи асимметричной пары ключей: публичный (открытый) ключ будет использоваться для шифрования, непубличный (закрытый) будет использоваться для дешифровки. Поэтому нам необходимо эту пару вначале сгенерировать. Для этого открываем терминал и вводим соответствующую команду:

gpg --full-gen-key

После нажатия клавиши Enter вам необходимо будет ввести следующие данные:

  1. Тип шифрования - выбираем классический RSA.
  2. Длина ключа в битах - ставим максимальную длину в 4096 бит, так с одной стороны шифрование/дешифрование будет происходить дольше, но с другой, безопаснее.
  3. Время жизни ключа - ставим 0, то есть ключи не будут иметь срока жизни
  4. Реальное имя - указываем что хотим, так как эти данные будут использоваться для формирования подписей, которыми в Pass мы пользоваться не будем.
  5. Адрес электронной почты - можете указать существующий, можете выдуманный, главное чтобы вы его запомнили.
  6. Комментарий - любой, какой взбредет в голову.

После подтверждения введенной информации вас ждет самый важный пункт создания ключей: ввод пассфразы (парольной фразы), которая будет использоваться при попытке доступа к зашифрованным паролям. Эту пассфразу нужно не просто ввести, но запомнить или (если с памятью не очень) где-нибудь зафиксировать, так как в случае если вы не сможете вспомнить эту фразу, то доступ к паролям будет утрачен. Ввод парольной фразы необходимо будет произвести дважды.

-2

В конце начнется генерация пары ключей, в ходе которой нужно поводить мышью в окне терминала, чтобы внести некоторые элементы рандома в процесс. Поздравляю, вы создали свою первую пару GPG-ключей! Теперь нужно в терминале ввести следующую команду:

echo "keyid-format 0xlong

> throw-keyids

> no-emit-version

> no-comments" > $HOME/.gnupg/gpg.conf

Она добавляет определенные элементы безопасности при последующем использовании ключей. Эту команду лучше не копировать и вставить, а ввести так, как я это делаю на демонстрации ниже.

-3

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

gpg -k

Чтобы посмотреть закрытый ключ используйте команду:

gpg -K

-4

Готовим пару ключей к повторному использованию и бэкапу

Созданную пару ключей мы, естественно, не хотим потерять, чтобы использовать их на других устройствах или в случае, если произойдет переустановка текущего дистрибутива. GnuGPG позволяет экспортировать пару для ее последующего переноса на любой носитель или в облако. Чтобы начать экспорт публичного ключа вводим команду:

gpg --export -a <email_указанный_при_создании_ключа> > public.gpg

Если вы неожиданно забыли email-адрес, то он указан при просмотре ключей, который мы производили выше.

-5

Для экспорта закрытого ключа используем команду:

gpg --export-secret-key -a <email_указанный_при_создании_ключа> > secret.gpg

После ввода команды необходимо будет ввести парольную фразу, которую мы указали при генерации пары.

-6

В результате у нас есть два файла, которые нужно хранить аки зеницу ока и никому не передавать. Скопируйте их на флэшку, закопайте за домом и никому не говорите, где находится это место. О том, как импортировать сохраненные ключи в случае настройки Pass на другом компьютера или в случае переустановки дистрибутива я расскажу в одной из следующих заметок.

Установка утилиты Pass и создание хранилища

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

  • Ubuntu/Debian/Linux Mint

sudo apt install pass

  • Fedora

sudo dnf install pass

  • Archlinux

sudo pacman -S pass

Так как настройку в рамках этой заметки я произвожу на собственном сервере, то у меня используется Debian 11 и DEB-пакетная база.

-7

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

pass init <email_указанный_при_создании_ключа>

-8

Внутри домашней директории создалась скрытая (с точкой в имени) папка .password-store, в которой будут храниться все созданные нами пароли.

Создание паролей и управление ими

По-умолчанию Pass работает по принципу «один файл = один пароль», но вы можете сами определять структуру ваших файлов, создавая вложенные директории или размещая пароли в корне хранилища. Создание паролей доступно несколькими способами. Первый позволяет указать только пароль без указания дополнительных данных (логина, адреса электронной почты, номера телефона и пр.). Давайте создадим пароль якобы от электронной почты:

pass insert <имя_файла_с_паролем>

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

-9

Чтобы создать многострочный пароль необходимо использовать ключ -m (multi-line). Давайте создадим пароль якобы от ВКонтакте во вложенной папке Social:

pass insert -m Social/vk.com

Откроется консольный текстовый редактор, который поддерживает ввод многострочного текста. После того, как закончите ввод нужной информации нажмите сочетание Ctrl + D.

-10

Просмотр созданных паролей в хранилище возможен при использовании команды pass.

-11

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

pass <имя_файла_с_паролем>.

-12

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

Далее вам предстоит процесс переноса существующих паролей в Pass. До того, как начать пользоваться этой утилитой, я хранил пароли в текстовых документов, которых накопилось более 50 штук. Пришлось проверить каждый файл на предмет актуальности сервиса и пароля, а после перенести вручную нужные пароли в Pass. В результате в моем хранилище находится приличное количество паролей (см. скриншот).

-13

Чтобы редактировать уже созданные пароли используйте команду:

pass edit <имя_файла_с_паролем>

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

-14

Наверняка вы знаете, что пароли рекомендуется менять в течение определенного периода (примерно, раз в полгода), чтобы они не попадали в базы в результате сливов. Pass позволяет генерировать пароли, чтобы создавать новые или обновлять старые. Давайте обновим пароль gmail.com

pass generate <имя_файла_с_паролем> 10 (это желаемая длина пароля)

В случае, если вы пытаетесь сгенерировать пароль для уже существующего файла, Pass предупредит вас о том, что имеющаяся информация будет перезаписана и попросит на это подтверждения.

-15

Также Pass позволяет копировать строки из файла в буфер обмена. Так как в примерах я использую сервер, то там нет графической оболочки и функция копирования будет вызывать ошибку. Поэтому следующий пример продемонстрирую на своем ПК, но буду использовать многострочный файл, чтобы не показать имеющиеся пароли:

pass -c <имя_файла_с_паролем>

Рядом с ключом -c можно указать номер строки, которая будет скопирована в буфер обмена (по-умолчанию копируется первая строка файла). После ввода команды у вас будет 45 секунд, чтобы вставить из буфера скопированный текст, по истечение этого времени буфер будет очищен.

-16

Ненужные или ошибочно созданные пароли можно удалять. Для этого используется команда:

pass rm <имя_файла_с_паролем>

-17

Подведем итоги

В результате всех проделанных операций у вас появиться безопасное хранилище зашифрованных паролей. Пользоваться им удобнее через терминал, хотя существуют различные дополнения для Pass, вплоть до утилит с графическим интерфейсом и расширений для браузера. Подробности можете найти на сайте программы. Кроме того, Pass поддерживает возможность переноса ваших паролей из других менеджеров, например KeePass. Инструкции также есть на сайте.

В следующих заметках я расскажу, как разместить созданное хранилище в GIT-репозитории, чтобы иметь к нему доступ с любого ПК, как пользоваться этим хранилищем через смартфон на базе Андроид и как импортировать созданную пару ключей при смене устройства или дистрибутива.

Чтобы не пропустить новые посты на канале нужно подписаться на него в Дзене, подписаться на обновления канала в Телеграме. Если пост оказался полезным и помог в организации хранилища паролей, то поддержите его лайком. Про любые возникающие проблемы пишите в комментариях, помогу чем смогу.