Про менеджер паролей Pass рассказывал в отдельном посте, но там было только упоминание преимуществ утилиты, про установку и настройку тогда ничего не сказал. Пользуюсь этой утилитой на протяжении полугода, думаю, что достаточный срок, чтобы рекомендовать ее подписчикам и читателям, желающим обзавестись безопасным хранилищем паролей. Готовьте чай и вкусняшки и приступайте к чтению.
Если вы еще не подписаны на канал Просто Код, то пора сделать это. Также подпишитесь на обновления канала в Телеграме, чтобы получать уведомления о выходе новых заметок.
Подготовка к установке и настройке
Для того, чтобы в итоге получить хранилище паролей нам понадобятся:
- дистрибутив Linux - какой именно, значения не имеет.
- GnuGPG - утилита для шифрования информации и создания электронных цифровых подписей (установлена по-умолчанию).
- Pass - непосредственно сам менеджер паролей.
Генерируем открытый и закрытый ключи шифрования
Каждый пароль, который мы будем создавать в Pass будет зашифрован (и в последующем расшифрован) при помощи асимметричной пары ключей: публичный (открытый) ключ будет использоваться для шифрования, непубличный (закрытый) будет использоваться для дешифровки. Поэтому нам необходимо эту пару вначале сгенерировать. Для этого открываем терминал и вводим соответствующую команду:
gpg --full-gen-key
После нажатия клавиши Enter вам необходимо будет ввести следующие данные:
- Тип шифрования - выбираем классический RSA.
- Длина ключа в битах - ставим максимальную длину в 4096 бит, так с одной стороны шифрование/дешифрование будет происходить дольше, но с другой, безопаснее.
- Время жизни ключа - ставим 0, то есть ключи не будут иметь срока жизни
- Реальное имя - указываем что хотим, так как эти данные будут использоваться для формирования подписей, которыми в Pass мы пользоваться не будем.
- Адрес электронной почты - можете указать существующий, можете выдуманный, главное чтобы вы его запомнили.
- Комментарий - любой, какой взбредет в голову.
После подтверждения введенной информации вас ждет самый важный пункт создания ключей: ввод пассфразы (парольной фразы), которая будет использоваться при попытке доступа к зашифрованным паролям. Эту пассфразу нужно не просто ввести, но запомнить или (если с памятью не очень) где-нибудь зафиксировать, так как в случае если вы не сможете вспомнить эту фразу, то доступ к паролям будет утрачен. Ввод парольной фразы необходимо будет произвести дважды.
В конце начнется генерация пары ключей, в ходе которой нужно поводить мышью в окне терминала, чтобы внести некоторые элементы рандома в процесс. Поздравляю, вы создали свою первую пару GPG-ключей! Теперь нужно в терминале ввести следующую команду:
echo "keyid-format 0xlong
> throw-keyids
> no-emit-version
> no-comments" > $HOME/.gnupg/gpg.conf
Она добавляет определенные элементы безопасности при последующем использовании ключей. Эту команду лучше не копировать и вставить, а ввести так, как я это делаю на демонстрации ниже.
Созданная пара ключей доступна для просмотра. Для публичного ключа введите в терминале команду:
gpg -k
Чтобы посмотреть закрытый ключ используйте команду:
gpg -K
Готовим пару ключей к повторному использованию и бэкапу
Созданную пару ключей мы, естественно, не хотим потерять, чтобы использовать их на других устройствах или в случае, если произойдет переустановка текущего дистрибутива. GnuGPG позволяет экспортировать пару для ее последующего переноса на любой носитель или в облако. Чтобы начать экспорт публичного ключа вводим команду:
gpg --export -a <email_указанный_при_создании_ключа> > public.gpg
Если вы неожиданно забыли email-адрес, то он указан при просмотре ключей, который мы производили выше.
Для экспорта закрытого ключа используем команду:
gpg --export-secret-key -a <email_указанный_при_создании_ключа> > secret.gpg
После ввода команды необходимо будет ввести парольную фразу, которую мы указали при генерации пары.
В результате у нас есть два файла, которые нужно хранить аки зеницу ока и никому не передавать. Скопируйте их на флэшку, закопайте за домом и никому не говорите, где находится это место. О том, как импортировать сохраненные ключи в случае настройки Pass на другом компьютера или в случае переустановки дистрибутива я расскажу в одной из следующих заметок.
Установка утилиты Pass и создание хранилища
Программа доступна в репозиториях популярных дистрибутивов, поэтому установка не займет много времени и будет зависеть от той пакетной базы, которая используется в вашей системе.
- Ubuntu/Debian/Linux Mint
sudo apt install pass
- Fedora
sudo dnf install pass
- Archlinux
sudo pacman -S pass
Так как настройку в рамках этой заметки я произвожу на собственном сервере, то у меня используется Debian 11 и DEB-пакетная база.
После установки необходимо инициализировать хранилище паролей:
pass init <email_указанный_при_создании_ключа>
Внутри домашней директории создалась скрытая (с точкой в имени) папка .password-store, в которой будут храниться все созданные нами пароли.
Создание паролей и управление ими
По-умолчанию Pass работает по принципу «один файл = один пароль», но вы можете сами определять структуру ваших файлов, создавая вложенные директории или размещая пароли в корне хранилища. Создание паролей доступно несколькими способами. Первый позволяет указать только пароль без указания дополнительных данных (логина, адреса электронной почты, номера телефона и пр.). Давайте создадим пароль якобы от электронной почты:
pass insert <имя_файла_с_паролем>
Обратите внимание, что при вводе пароля он не отображается, потому вводите аккуратно, чтобы ничего не перепутать.
Чтобы создать многострочный пароль необходимо использовать ключ -m (multi-line). Давайте создадим пароль якобы от ВКонтакте во вложенной папке Social:
pass insert -m Social/vk.com
Откроется консольный текстовый редактор, который поддерживает ввод многострочного текста. После того, как закончите ввод нужной информации нажмите сочетание Ctrl + D.
Просмотр созданных паролей в хранилище возможен при использовании команды pass.
Чтобы посмотреть конкретный пароль необходимо указать его название после команды:
pass <имя_файла_с_паролем>.
Во второй раз он не попросил парольную фразу, так как я уже вводил ее ранее. Pass устанавливает некий период запоминания введенной парольной фразы, чтобы не мучить пользователя постоянным ее вводом.
Далее вам предстоит процесс переноса существующих паролей в Pass. До того, как начать пользоваться этой утилитой, я хранил пароли в текстовых документов, которых накопилось более 50 штук. Пришлось проверить каждый файл на предмет актуальности сервиса и пароля, а после перенести вручную нужные пароли в Pass. В результате в моем хранилище находится приличное количество паролей (см. скриншот).
Чтобы редактировать уже созданные пароли используйте команду:
pass edit <имя_файла_с_паролем>
Давайте отредактируем оба созданных ранее пароля.
Наверняка вы знаете, что пароли рекомендуется менять в течение определенного периода (примерно, раз в полгода), чтобы они не попадали в базы в результате сливов. Pass позволяет генерировать пароли, чтобы создавать новые или обновлять старые. Давайте обновим пароль gmail.com
pass generate <имя_файла_с_паролем> 10 (это желаемая длина пароля)
В случае, если вы пытаетесь сгенерировать пароль для уже существующего файла, Pass предупредит вас о том, что имеющаяся информация будет перезаписана и попросит на это подтверждения.
Также Pass позволяет копировать строки из файла в буфер обмена. Так как в примерах я использую сервер, то там нет графической оболочки и функция копирования будет вызывать ошибку. Поэтому следующий пример продемонстрирую на своем ПК, но буду использовать многострочный файл, чтобы не показать имеющиеся пароли:
pass -c <имя_файла_с_паролем>
Рядом с ключом -c можно указать номер строки, которая будет скопирована в буфер обмена (по-умолчанию копируется первая строка файла). После ввода команды у вас будет 45 секунд, чтобы вставить из буфера скопированный текст, по истечение этого времени буфер будет очищен.
Ненужные или ошибочно созданные пароли можно удалять. Для этого используется команда:
pass rm <имя_файла_с_паролем>
Подведем итоги
В результате всех проделанных операций у вас появиться безопасное хранилище зашифрованных паролей. Пользоваться им удобнее через терминал, хотя существуют различные дополнения для Pass, вплоть до утилит с графическим интерфейсом и расширений для браузера. Подробности можете найти на сайте программы. Кроме того, Pass поддерживает возможность переноса ваших паролей из других менеджеров, например KeePass. Инструкции также есть на сайте.
В следующих заметках я расскажу, как разместить созданное хранилище в GIT-репозитории, чтобы иметь к нему доступ с любого ПК, как пользоваться этим хранилищем через смартфон на базе Андроид и как импортировать созданную пару ключей при смене устройства или дистрибутива.
Чтобы не пропустить новые посты на канале нужно подписаться на него в Дзене, подписаться на обновления канала в Телеграме. Если пост оказался полезным и помог в организации хранилища паролей, то поддержите его лайком. Про любые возникающие проблемы пишите в комментариях, помогу чем смогу.