Блог "Дети ОИТа"
/поиск

LUKS2 на сервере: авто-разблокировка через TPM 2.0 и Tang — runbook и отказоустойчивость

Runbook по авто-разблокировке LUKS2 через TPM 2.0 с fallback Tang (Clevis): развёртывание, отказоустойчивость, инцидент-респондер.

LUKS2 на сервере: авто-разблокировка через TPM 2.0 и Tang — runbook и отказоустойчивость

Контекст

Автоматическая разблокировка корневых и data-разделов через TPM 2.0 с fallback через сетевой сервис Tang (Clevis) обеспечивает баланс между удобством и безопасностью FDE в серверных средах. Runbook покрывает развёртывание, отказоустойчивость Tang и восстановление при инцидентах.

Архитектура и требования

  • TPM 2.0 с поддержкой PCR (0,1,2,3,7,11/14 по политике), Secure Boot активен, единая политика PCR на всех узлах.
  • Tang-кластер (минимум 2–3 узла) с TLS (Let’s Encrypt/внутренний PKI), резервирование по VIP/Anycast.
  • Clevis-клиенты: pin tpm2 (+ pin sss с порогом), привязка к нескольким Tang-серверам.
  • NTP в допуске (±5 с), корректные FQDN/PTR, firewall для 80/443 к Tang.
  • Recovery-документ: запечатанные ключи/escrow, порядок действий при потере TPM/изменении PCR.

Развёртывание

  1. Сервер Tang (на каждом узле):
sudo apt install tang systemd
sudo systemctl enable --now tangd.socket
# TLS: разместить сертификаты в /etc/tang, настроить systemd socket binding на 443
  1. Клиент (LUKS2 + Clevis):
# Проверка TPM и PCR
tssclient info
sudo systemd-cryptenroll --tpm2-device=/dev/tpm0 --tpm2-pcrs=0,1,2,3,7,11 /dev/sdaX
# Привязка к Tang (SSS порог 2 из 3)
sudo clevis bind luks -d /dev/sdaX sss '{"t": 2, "pins": {"http": [{"url": "https://tang1.example.com"}, {"url": "https://tang2.example.com"}, {"url": "https://tang3.example.com"}]}}'
# Проверка
clevis luks list -d /dev/sdaX
sudo dracut -f --regenerate-all
  • Для корневого раздела: убедитесь, что initramfs содержит clevis-clevis, tpm2-tools; при необходимости добавьте модули dracut.

Runbook: ежедневные операции

  • Проверка статуса Tang: systemctl status tangd.socket, логи /var/log/syslog/journalctl -u tangd*
  • Проверка привязок: clevis luks list -d /dev/sdaX
  • Тест восстановления: временный сбой TPM (имитация политикой PCR), проверка fallback к Tang.
  • Мониторинг сертификатов TLS Tang (expiration), автоматическое продление.

Отказоустойчивость Tang

  • VIP/Anycast перед кластером Tang; health-check по /adv, /rec/...
  • Порог SSS (t из n): минимум 2 из 3, максимум 3 из 5 для крупных парков.
  • Геораспределение: узлы Tang в разных зонах, синхронизация через внутреннего CA.
  • Резервные копии конфигурации Tang (настройки, сертификаты), но не ключей привязок.

Инцидент-респондер

  • Потеря TPM/замена платы: используйте запечатанный ключ/escrow для reseal; обновите policy PCR.
  • Изменение PCR (обновление BIOS/UEFI, изменение конфигурации): обновите привязки clevis или политику PCR.
  • Компрометация Tang: ротируйте TLS-сертификаты, перевыпустите привязки на клиентах, проведите аудит логов.

Чек-лист внедрения

  • TPM 2.0 активен, Secure Boot ON, единая PCR-политика.
  • Tang-кластер 2–3 узла, TLS, VIP, health-check.
  • Clevis: tpm2 + sss с порогом, привязка к нескольким Tang.
  • Initramfs с поддержкой clevis/tpm2; dracut пересобран.
  • NTP/DNS в допуске; мониторинг истечения TLS и билетов.
  • Runbook: тест fallback, escrow, порядок при замене оборудования.
  • SIEM: события Tang, Clevis, PCR-изменения, инциденты аутентификации.

Теги

#LUKS2 #TPM2 #Tang #Clevis #FDE #Linux #безопасность #криптография #автоматизация #отказоустойчивость