Security - gusenov/kb GitHub Wiki

What's next

GitHub

Courses

Google

Books

Authentication

Identity and access management (IAM)

macOS

Bug Bounty

Reverse Engineering

Community

Коллекции

Q&A

Bug Bounty

Wikipedia

Tor

rtfm.co.ua / Хранение конфиденциальных данных

  • Linux и ошибка "The name org.freedesktop.secrets was not provided by any .service files"
    • QtKeychain is a Qt API to store passwords and other secret data securely.
    • Т.е. пакет предоставляет API для Qt-based приложений, используя которое они могут получить доступ к логинам/паролям, которые хранятся в системе.
    • Но при этом сам QtKeychain не хранит эти данные – он только транслирует запросы от приложений к системному хранилищу таких данных:
      • Mac OS X: Passwords are stored in the OS X Keychain.
      • Linux/Unix: If running, GNOME Keyring is used, otherwise qtkeychain tries to use KWallet (via D-Bus), if available.
    • Т.е. на Linux qtkeychain постарается через D-Bus вызвать GNOME Keyring или KWallet.
  • SSH: RSA-ключи и ssh-agent – управление SSH-ключами и их паролями
    • В целом, для упрощения работы можно использовать системное хранилище секретов – gnome-keyring, либо KeeyPassXC.
    • ssh-agent предназначен для управления SSH-ключами пользователя и их паролями, что бы не вводить пароль к ключу каждый раз при использовании.
    • Для работы клиентов важны переменные, которые задаются агентом:
      • SSH_AGENT_PID: с PID процесса с ssh-agent, которая будет использоваться при, например, ssh-agent -k для остановки агента
      • SSH_AUTH_SOCK: указывает на путь к unix-сокету, который будут использовать другие процессы для коммуникации с ssh-agent
  • Linux: KeePass, SSH и хранение паролей RSA-ключей
    • Одним из вариантов решения этой задачи может быть KeePass, который будет хранить ключи и их пароли в себе, и будет сам расшифровывать ключ перед использованием.
    • Для этого используется три компонента –
      • ssh-клиент (ssh, ssh-add, git, etc),
      • сам KeePass с плагином KeeAgent,
      • и ssh-agent, который будет держать уже расшифрованные ключи в памяти, и отдавать их клиентам.
    • В целом схема их взаимодействия получается следующая:
      • запускается ssh-agent, который создаёт сокет, через который все компоненты системы будут общаться друг с другом
      • запускается KeePass, который хранит в своей базе ключи и их пароли, и загружает их в ssh-agent, используя созданный агентом сокет
      • запускается любой ssh-клиент, который сокет обращается к агенту, и получает уже расшифрованный ключ
  • What is Linux keyring, gnome-keyring, Secret Service, D-Bus
    • Keyring – это механизм или конкретный сервис, предназначенный для хранения какой-либо конфиденциальной информации.
      • In cryptography, a keyring stores known encryption keys (and, in some cases, passwords).
      • Much like a keyring in real life allows you to keep certain sets of keys together, a keyring in Passwords and Keys allows you to keep passwords and keys in separate groups.
      • a keyring service that enables internal server components and plugins to securely store sensitive information for later retrieval
      • The Linux key-management facility is primarily a way for various kernel components to retain or cache security data, authentication keys, encryption keys, and other data in the kernel.
    • Linux kernel keyring vs GNOME Keyring (это просто разные вещи)
      • Linux keyrings – это механизм ядра для хранения конфиденциальной информации.
        • keyrings – in-kernel key management and retention facility
      • GNOME Keyring – коллекция компонентов (gnome-keyring-daemon, библиотеки, пакет seahorse, etc) для хранения конфиденциальной информации.
        • GNOME Keyring is a collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications.
      • Подведём итоги различий Linux keyrings и GNOME Keyring:
        • ключевая разница:
          • Linux keyring – механизм ядра для “кеширования паролей” – хранит их в памяти во время активной сессии системы/пользователя
          • gnome-keyring – постоянное хранилище паролей, с хранением информации на диске
        • хранение:
          • Linux keyring – хранит в памяти, т.к. секреты доступны только во время сесии – их не надо хранить постоянно
          • gnome-keyring – создаёт файл на диске, как правило в каталоге ~/.local/share/keyrings/
        • доступ:
          • Linux keyring – через системные вызовы из user space в kernel space
          • gnome-keyring – через DBus
        • приложения для доступа:
          • Linux keyring – keyctl, systemd-ask-password, etc
          • gnome-keyring – secret-tool, любая библиотека (python-keyring), seahorse, etc
      • Secret Service – это не какой-то конкретный сервис, а просто спецификация, такой себе RFC, составленный проектами GNOME и KDE для определения того, как они должны реализовать API для клиентов, которые хотят использовать GNOME Keyring и к KWallet для хранения секретов.
        • The Secret Service API allows client applications to store secrets securely in a service running in the user’s login session.
        • Поддержка Secret Service API имеется не только у GNOME Keyring и к KWallet, но и у, например, KeePass, и других приложений.
      • D-Bus – один из механизмов Linux kernel IPC – Inter Process Communication, позволяющий различным процессам внутри системы передавать другу другу данные или сигналы.
        • D-Bus в общем: это шина для IPC, если в предыдущих примерах по SSH-агентам использовался UNIX-сокет, тот тут используется механизм bus.
      • KeePass тоже может играть роль keyring backend используя Secret Storage спецификацию.
  • Chromium: Linux, keyrings && Secret Service, шифрование и хранение паролей
    • Chromium, внезапно, при отсутствии keyring в Linux будет хранить пароли в “открытом виде”.
    • Что бы указать ему – какой бекенд использовать, можно использовать опцию google-chrome --password-store=basic – для хранения plain text.
    • Другие параметры – gnome или kwallet.
    • Включаем поддержку Secret Storage в KeePass, что бы эмулировать установленный gnome-keepass, перезапускаем KeePass.
    • Пароли в SQLite шифруются всегда. Просто для систем, в которых нет бекенда типа gnome-keyring с поддержкой Secret Service – то пароль для шифрования всегда будет один и тот же для всех пользователей Chromium, что, разумеется, нельзя рассматривать, как защиту.
  • KeePass: настройка MFA, хранение паролей браузера, паролей SSH ключей и интеграция Secret Service
    • KeePass написан на C# от Microsoft и на Linux работает под mono
    • KeePassXC написан на C++ (см. репозиторий), и может легко работать на любой платформе – Linux/BSD/macOS/Windows.
    • Тут из опций обратите внимание на Add key to agent when database is opened/unlocked – включайте для ключей, которые используются часто, и что бы таких ключей с auto-load было меньше 5 штук, т.к. SSH клиент будет перебирать все ключи в ssh-agent во время попытки подключения, и SSH-сервер на удалённом хосте может разорвать соедениение из-за подозрения на брутфорс.
    • ssh-agent при таком подходе должен запускаться до KeePass, и экспортировать пемренную $SSH_AUTH_SOCK так, что бы KeePass её увидел.
    • IdentityFile в ~/.ssh/config не указан вообще – ssh-client сам обратится к ssh-agent и попробует подключиться с доступными ключами.
    • ssh-agent пытается запросить разрешение для пользователя, а для этого используется ssh-askpass, которого может не быть в системе.

Archive

  • WASM.RU
  • eXeL@B Исследование (РЕВЕРСИНГ) программ
  • VXHeaven.org information about computer viruses
  • WEB-HACK.ru Сетевая Безопасность