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.
Развёртывание
- Сервер Tang (на каждом узле):
sudo apt install tang systemd
sudo systemctl enable --now tangd.socket
# TLS: разместить сертификаты в /etc/tang, настроить systemd socket binding на 443
- Клиент (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 #безопасность #криптография #автоматизация #отказоустойчивость