Лучшие практики безопасности

Безопасность очень важна, когда работаешь с важными документами и блокчейн-транзакциями. В этом руководстве описаны основные меры безопасности для развертывания и обслуживания Chaindoc в производственных средах.

Аутентификация и авторизация

Многофакторная аутентификация (MFA)

Всегда включайте MFA для всех учетных записей, особенно для администраторов и тех, у кого есть повышенные права. Chaindoc поддерживает:

  • Одноразовые пароли на основе времени (TOTP) через приложения-аутентификаторы
  • Проверка через SMS (менее безопасная, используйте только если нужно)
  • Аппаратные ключи безопасности (FIDO2/WebAuthn)
  • Биометрическая аутентификация на устройствах, которые поддерживают эту функцию

Политика использования надежных паролей

Соблюдайте строгие требования к паролям:

  • Минимум 12 символов с требованиями к сложности
  • Пароль для важных аккаунтов меняйте каждые 90 дней
  • Не используй один и тот же пароль несколько раз (последние 10 паролей)
  • Блокировка после 5 неудачных попыток входа
  • Индикатор надежности пароля при создании

Контроль доступа на основе ролей (RBAC)

Применяйте принцип минимальных привилегий, давая пользователям только те права, которые им нужны:

  • Определите четкие роли: зритель, редактор, администратор, аудитор
  • Используйте детализированные права доступа к документам
  • Регулярно проверяйте роли пользователей и удаляйте ненужный доступ
  • Введите временной доступ для временных подрядчиков
  • Разделите обязанности для важных операций (например, процессы утверждения).

Шифрование данных

Шифрование в состоянии покоя

Все важные данные должны быть зашифрованы при хранении:

  • Используйте шифрование AES-256 для хранения документов
  • Зашифруйте резервные копии баз данных отдельными ключами
  • Храните ключи шифрования в специальном сервисе управления ключами (KMS).
  • Каждый квартал меняйте ключи шифрования
  • Включите полное шифрование дисков на всех серверах и рабочих станциях

Шифрование при передаче данных

Защищайте данные во время передачи:

  • Используйте TLS 1.3 для всех соединений
  • Используйте надежные наборы шифров (отключите слабые шифры)
  • Включите привязку сертификатов для мобильных приложений
  • Включи HSTS (HTTP Strict Transport Security)
  • Используйте зашифрованные каналы для транзакций в блокчейне

Безопасность блокчейна

Управление личными ключами

Приватные ключи блокчейна — это самый важный элемент безопасности:

  • Никогда не храните приватные ключи в виде обычного текста или в репозиториях кода
  • Используйте аппаратные модули безопасности (HSM) для производственных ключей
  • Внедрите кошельки с несколькими подписями для крупных операций
  • Создайте процедуры резервного копирования ключей с безопасным автономным хранением
  • Используйте разные ключи для разных сред (разработка, тестирование, производство)

Безопасность смарт-контрактов

Если используешь свои смарт-контракты:

  • Перед тем, как что-то запускать, сделайте полный аудит безопасности.
  • Используйте проверенные шаблоны и не пробуйте экспериментальный код
  • Включите автоматические выключатели для экстренной остановки
  • Перед тем, как запускать в основной сети, тщательно тестируйте в тестовых сетях.
  • Следи за странными схемами транзакций

Аудиторские следы блокчейна

Используйте блокчейн для неизменяемого аудита:

  • Записывайте все изменения в документе в цепочке
  • Используйте хэш-чувствительные операции для проверки
  • Внедрите проверку временных меток для обеспечения соответствия требованиям
  • Регулярно проверяйте целостность данных в цепочке
  • Архивируйте квитанции о транзакциях в блокчейне

Безопасность API

Аутентификация API

Защитите все конечные точки API:

  • Используйте токены OAuth 2.0 или JWT для аутентификации
  • Введите срок действия токенов (15–60 минут для токенов доступа)
  • Регулярно меняйте ключи API (как минимум раз в 90 дней)
  • Используйте разные API-ключи для разных сервисов
  • Никогда не показывайте ключи API в коде на стороне клиента

Ограничение скорости и защита от DDoS-атак

Не допускайте злоупотреблений и нарушений работы сервиса:

  • Введите ограничение скорости для каждого ключа API и IP-адреса.
  • Используйте экспоненциальный откат для неудачных запросов
  • Установите брандмауэр веб-приложений (WAF)
  • Включите защиту от DDoS-атак на уровне CDN/облачного провайдера
  • Следи за странными трафиками

Проверка и очистка вводимых данных

Защищайтесь от атак по методу «инъекции»:

  • Проверяйте все введенные данные по строгим схемам
  • Проверяйте контент, который предоставляют пользователи, перед тем, как его сохранять или показывать
  • Используйте параметризованные запросы, чтобы избежать SQL-инъекций
  • Используйте заголовки Content Security Policy (CSP)
  • Используйте экранирование вывода во всех случаях (HTML, JavaScript, URL-адреса)

Безопасность инфраструктуры

Сегментация сети

Выделите важные части:

  • Разделяйте производственную, тестовую и разработчическую среды
  • Используйте VPC и частные подсети для важных сервисов
  • Ограничь доступ к базе данных только серверами приложений
  • Введите правила брандмауэра с политикой «по умолчанию запретить».
  • Используйте промежуточные хосты/бастионные серверы для административного доступа

Управление исправлениями

Держи системы в актуальном состоянии:

  • Устанавливайте патчи безопасности в течение 48 часов после их выпуска
  • Автоматизируйте обновления зависимостей для изменений, которые не требуют перерыва в работе
  • Регулярно обновляйте образы контейнеров и базовую ОС
  • Подпишитесь на уведомления о безопасности для всех технологий, которые используете.
  • Проверяйте патчи в тестовой среде перед тем, как запускать их в производство.

Безопасность контейнеров и оркестрации

Если используете контейнерные развертывания:

  • Используйте минимальные базовые образы (Alpine, Distroless)
  • Проверяйте изображения на наличие уязвимостей перед развертыванием
  • Запускайте контейнеры как пользователи без прав root
  • Внедрите политики/стандарты безопасности подсистем
  • Используйте управление секретами (не переменные среды)
  • Включи сетевые правила, чтобы ограничить трафик между подсистемами

Соответствие и аудит

Соблюдение нормативных требований

Убедитесь, что всё соответствует правилам:

  • GDPR: реализуйте право на удаление и переносимость данных
  • HIPAA: включите аудит и контроль доступа к данным о здоровье
  • SOC 2: Опишите меры безопасности документов и проводите ежегодные проверки
  • ISO 27001: Внедрите систему управления информационной безопасностью
  • Отраслевые правила (например, финансовые услуги, юридические услуги)

Журнал аудита

Веди подробные журналы для безопасности и соответствия требованиям:

  • Записывайте все попытки аутентификации (удачные и неудачные).
  • Записывайте доступ к документам, изменения и удаления
  • Отслеживайте административные действия и изменения в настройках
  • Храните журналы в защищенной от взлома централизованной системе
  • Храните журналы как минимум 1 год (или как требуют правила).
  • Включите мониторинг журналов и оповещения о подозрительной активности

Регулярные проверки безопасности

Делайте периодические проверки безопасности:

  • Делайте ежеквартальные проверки на уязвимости
  • Проводите ежегодные тесты на проникновение с помощью сторонних компаний
  • Каждый месяц проверяйте настройки доступа и права пользователей
  • Проверяйте транзакции в блокчейне на наличие аномалий
  • Проверяйте резервное копирование и восстановление после сбоев раз в квартал

Мониторинг и реагирование на инциденты

Мониторинг безопасности

Внедрите мониторинг безопасности в реальном времени:

  • Внедрите систему SIEM (управление информацией и событиями безопасности).
  • Настройте оповещения о неудачных попытках входа в систему и повышении привилегий.
  • Следи за странными паттернами доступа к данным
  • Следи за странностями в использовании API
  • Используйте системы обнаружения/предотвращения вторжений (IDS/IPS)

План реагирования на инциденты

Будьте готовы к проблемам с безопасностью:

  • Запишите, как реагировать на инциденты
  • Определите, как действовать, если что-то пойдет не так, и кто может помочь.
  • Создавайте руководства для типичных сценариев безопасности
  • Проводите настольные учения раз в квартал
  • Установите правила, что делать, если что-то пойдет не так.
  • Сохраняйте возможности для экспертизы

Резервное копирование и восстановление после сбоев

Сделайте так, чтобы бизнес продолжался:

  • Включи автоматическое ежедневное резервное копирование
  • Храните резервные копии в разных местах
  • Зашифруйте все резервные данные
  • Проверяйте процедуры восстановления каждый месяц
  • Делайте резервные копии офлайн, чтобы защититься от программ-вымогателей
  • Целевое время восстановления документа (RTO) и целевая точка восстановления (RPO)

Безопасность разработки

Безопасный жизненный цикл разработки

Включите безопасность в разработку:

  • Проводите проверку кода, уделяя особое внимание безопасности
  • Используйте инструменты статического тестирования безопасности приложений (SAST)
  • Внедрите сканирование зависимостей в конвейере CI/CD
  • Требуйте, чтобы все разработчики прошли обучение по безопасности
  • Никогда не записывай секреты в систему контроля версий
  • Используйте хуки pre-commit, чтобы не допустить утечки важных данных

Зависимости от сторонних ресурсов

Управляйте рисками, связанными с внешними библиотеками:

  • Регулярно обновляйте зависимости до последних безопасных версий
  • Используйте такие инструменты, как Dependabot, Snyk или npm audit
  • Просмотрите рекомендации по безопасности для используемых пакетов
  • Минимизируйте количество зависимостей
  • Проверяйте, что пакет целый и что разработчик надежный
  • Подумайте о том, чтобы вынести важные зависимости в отдельный файл

Обучение и информирование пользователей

Безопасность — это ответственность каждого:

  • Проведите обучение по безопасности для всех пользователей
  • Расскажите о фишинге и социальной инженерии
  • Создайте понятные правила и инструкции по безопасности
  • Создайте систему для сообщения о проблемах с безопасностью
  • Вознаграждайте ответственное раскрытие уязвимостей
  • Держите документацию по безопасности в актуальном состоянии

Контрольный список безопасности

Перед тем, как запускать в работу, проверьте этот список:

  1. ✓ Включи двухфакторную аутентификацию для всех аккаунтов
  2. ✓ Строгие правила по паролям
  3. ✓ RBAC реализован с минимальными привилегиями
  4. ✓ Все данные зашифрованы как при хранении, так и при передаче
  5. ✓ TLS 1.3 работает на всех конечных точках
  6. ✓ Храните личные ключи в HSM или надежном хранилище
  7. ✓ Ограничение скорости API настроено
  8. ✓ Включена защита от WAF и DDoS
  9. ✓ Внедрили проверку и очистку вводимых данных
  10. ✓ Сегментация сети настроена как надо
  11. ✓ Все системы обновлены и в порядке
  12. ✓ Включено полное аудиторское ведение журнала
  13. ✓ Мониторинг безопасности и оповещения включены
  14. ✓ План реагирования на инциденты записан и проверен
  15. ✓ Настроили и проверили автоматическое резервное копирование
  16. ✓ Проверка безопасности в CI/CD-конвейере
  17. ✓ Требования к соответствию задокументированы и выполнены

Дополнительные ресурсы

Если хочешь узнать больше о безопасности Chaindoc:

  • 10 главных рисков безопасности веб-приложений по версии OWASP
  • Структура кибербезопасности NIST
  • Стандарты безопасности CIS
  • Лучшие практики безопасности блокчейна (Consensys)
  • Рекомендации Cloud Security Alliance

Если у тебя есть вопросы по безопасности, пиши нашим специалистам по безопасности на security@chaindoc.com или сообщай об уязвимостях через нашу программу ответственного раскрытия информации.