Менеджер паролей pass

  • Менеджер паролей pass — программа, сделанная в рамках идеологии Unix.
  • Также носит название стандартного менеджера паролей для Unix (The standard Unix password manager).
Содержание

1 Основные свойства

  • Данные хранятся в файловой системе в виде каталогов и файлов.
  • Файлы шифруются с помощью GPG-ключа.

2 Структура базы паролей

  • Структура базы может быть произвольной, если Вы собираетесь использовать её напрямую, без промежуточного программного обеспечения. Тогда семантику структуры базы данных Вы держите в своей голове.
  • Если же необходимо использовать дополнительное программное обеспечение, необходимо семантику заложить в структуру базы паролей.

2.1 Семантическая структура базы паролей

  • Рассмотрим пользователя user в домене example.com, порт 22.
  • Отсутствие имени пользователя или порта в имени файла означает, что любое имя пользователя и порт будут совпадать:
    example.com.pgp
    
  • Соответствующее имя пользователя может быть именем файла внутри каталога, имя которого совпадает с хостом. Это полезно, если в базе есть пароли для нескольких пользователей на одном хосте:
    example.com/user.pgp
    
  • Имя пользователя также может быть записано в виде префикса, отделенного от хоста знаком @:
    user@example.com.pgp
    
  • Соответствующий порт может быть указан после хоста, отделённый двоеточием (:):
    example.com:22.pgp
    example.com:22/user.pgp
    user@example.com:22.pgp
    
  • Эти все записи могут быть расположены в произвольных каталогах, задающих Вашу собственную иерархию.

3 Реализации

3.1 Утилиты командной строки

  • На данный момент существует 2 основных реализации:
    • pass — классическая реализация в виде shell-скриптов (https://www.passwordstore.org/);
    • gopass — реализация на go с дополнительными интегрированными функциями (https://www.gopass.pw/).
  • Дальше в тексте будет использоваться программа pass, но всё то же самое можно сделать с помощью программы gopass.

3.2 Графические интерфейсы

3.2.1 qtpass

  • qtpass — может работать как графический интерфейс к pass, так и как самостоятельная программа. В настройках можно переключаться между использованием pass и gnupg.

3.2.2 gopass-ui

  • gopass-ui — интерфейс к gopass.

3.2.3 webpass

3.3 Приложения для Android

3.3.1 Password Store

3.3.2 OpenKeychain: Easy PGP

3.4 Пакеты для Emacs

3.4.1 pass

  • Основной режим для управления хранилищем и редактирования записей.
  • Emacs. Пакет pass
  • Репозиторий: https://github.com/NicolasPetton/pass
  • Позволяет редактировать базу данных паролей.
  • Запуск:
    M-x pass
    

3.4.2 helm-pass

  • Интерфейс helm для pass.
  • Репозиторий: https://github.com/emacs-helm/helm-pass
  • Запуск:
    M-x helm-pass
    
  • Выдаёт в минибуфере список записей из базы паролей. При нажатии Enter копирует пароль в буфер.

3.4.3 ivy-pass

4 Установка

  • Linux

    • Gentoo
      • pass
        emerge app-admin/pass
        
      • gopass
        emerge app-admin/gopass
        
      • qtpass
        emerge app-admin/qtpass
        
      • Gopass UI
    • Fedora
      • pass

        dnf install pass pass-otp
        
        • gopass
          dnf install gopass
          
  • Macintosh

    brew install pass
    
  • Windows

    • pass
      choco install pass4win
      
    • gopass
      choco install gopass
      

5 Настройка

5.1 Ключи GPG

  • Просмотр списка ключей:
    gpg --list-secret-keys
    
  • Если ключа нет, нужно создать новый:
    gpg --full-generate-key
    

5.2 Инициализация хранилища

5.2.1 pass

  • Инициализируем хранилище:
    pass init <gpg-id or email>
    

5.2.2 gopass

  • Для gopass можно просто ввести:

    gopass init
    
    • Программа запросит ключ и почту для git.
    • Будет инициализирована сразу структура git в каталоге ~/.password-store.

5.2.3 qtpass

  • Также можно инициализировать с помощью графического инструмента qtpass:
    qtpass
    

5.3 Синхронизация с git

5.3.1 gopass

  • При инициализации gopass инициализирует также структуру git.
  • При необходимости это можно сделать отдельно:
    gopass git init
    
  • Также можно задать адрес репозитория на хостинге (репозиторий необходимо предварительно создать):
    gopass git remote add origin git@github.com:<git_username>/<git_repo>.git
    
  • Для синхронизации выполняется следующая команда:
    gopass sync
    

5.3.2 Прямые изменения

  • Следует заметить, что отслеживаются только изменения, сделанные через сам gopass (или pass).
  • Если изменения сделаны непосредственно на файловой системе, необходимо вручную закоммитить и выложить изменения:
    cd ~/.password-store/
    git add .
    git commit -am 'edit manually'
    git push
    
  • Проверить статус синхронизации модно командой
    gopass git status
    

5.4 Тонкие настройки

  • По умолчанию каталог с паролями называется ~/.password-store. Но его можно задать также с помощью переменной окружения PASSWORD_STORE_DIR.

5.5 Устранение сбоев

5.5.1 Невозможно расшифровать пароль

6 Работа с паролями

6.1 Создание нового пароля

6.2 Ручная правка базы паролей

  • Базу паролей можно редактировать и без использования специальных утилит.
  • Можно использовать для исправления структуры каталогов и имён файлов.
  • Синхронизацию с git придётся выполнять вручную.
  • Не следует использовать символьные ссылки. Они не переносимы между разными операционными системами и могут нарушиться при синхронизации (например, с Android).
  • После ручного редактирования рекомендуется проверить структуру базы паролей:
    gopass fsck
    

7 Миграция баз паролей из других программ

7.1 Скрипты для миграции

7.1.1 pass-import

  • https://github.com/roddhjav/pass-import
  • Расширение для pass.
  • Можно использовать для разных менеджеров паролей:
    Целевой менеджер паролейФормат
    csvcsv
    gopassgopass
    keepasskdbx
    keepassx2kdbx
    keepassxckdbx
    passpass
  1. Установка

  1. Использование

    • Для pass:
      • Автоопределение формата источника:
        pass import path/to/passwords
        
      • Если автоопределение не сработало:
        pass import <password_manager> path/to/passwords
        
      • Если конвертация не для pass:
        pimport <new_pm> <former_pm> path/to/passwords --out path/to/destination/pm
        

7.1.2 Отдельные скрипты

  • На странице https://www.passwordstore.org/ приведён список отдельных скриптов для миграции из разных служб.
  • Используйте в целях эксперимента.

7.2 Конкретные рецепты

7.2.1 LastPass

  • В меню выберите Account options > Advanced > Export > LastPass CVS File.
  • Сохраняем результат в файл lastpass_export.csv.
  • Конвертация с помощью pass-import:
    pass import lastpass lastpass_export.csv
    
  • Альтернативный вариант. Не используйте его. Результат не соответствует структуре именования pass.
    • Скачайте скрипт:
      wget https://git.zx2c4.com/password-store/plain/contrib/importers/lastpass2pass.rb
      
    • Сделайте скрипт исполняемым:
      chmod +x lastpass2pass.rb
      
    • Импортируйте пароли:
      ./lastpass2pass.rb lastpass_export.csv
      

7.3 Экспорт паролей

7.3.1 pass2csv

8 Дополнительные возможности

8.1 Проверка утечки пароля

8.1.1 pass

  • Проверка производится с помощью плагина pass-audit.
  • Код: https://github.com/roddhjav/pass-audit.
  • Установка:
  • Использование:
    • Проверка по парольному каталогу или по парольной записи:
      pass audit [каталог или одна запись]
      
    • Без параметра проверяет всю базу паролей.

8.1.2 gopass

  1. Простая проверка качества пароля

    • Простая проверка качества пароля по парольному каталогу или по парольной записи:
      gopass audit [каталог или одна запись]
      
    • Без параметра проверяет всю базу паролей.
  1. Проверка утечки пароля

    • Начиная с версии gopass-1.12.0 команда создания интерфейса взаимодействия с HIPB выделена в отдельную утилиту.
    • Проверка производится с помощью плагина gopass-hibp.
    • Код: https://github.com/gopasspw/gopass-hibp.
    • Установка:
      • Gentoo:
        emerge app-admin/gopass-hibp
        
    • Использование:
      • Использование HIBPv2 API
        gopass-hibp api
        
      • Сравнение хешей паролей с дампом HIBP:
        • Скачиваем дамп SHA-1 хешей паролей с https://haveibeenpwned.com/Passwords и распаковываем его.
        • Проверяем пароли:
          gopass-hibp dump pwned-passwords-1.0.txt
          
          Этот вариант помедленнее.
    • Проверяет сразу все записи в базе паролей. Один пароль проверить нельзя.

8.2 Одноразовые пароли

9 Интеграция с другими программами


Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие