Технические меры защиты персональных данных — требование ст. 19 152-ФЗ, детализированное в Приказе ФСТЭК России № 21 «Об утверждении состава и содержания организационных и технических мер по обеспечению безопасности персональных данных». Разберём, что конкретно нужно реализовать для коммерческого сайта.
Уровни защищённости по Приказу ФСТЭК № 21
Требуемый уровень защищённости зависит от категорий ПД и числа субъектов:
| УЗ | Категория ПД | Количество субъектов |
|---|---|---|
| УЗ-1 | Специальные или биометрические | Любое |
| УЗ-2 | Специальные | Менее 100 000 |
| УЗ-3 | Биометрические или иные | Более 100 000 |
| УЗ-4 | Иные | Менее 100 000 |
Большинство коммерческих сайтов попадают в категорию УЗ-4 (иные данные, менее 100 000 субъектов).
Обязательные технические меры для УЗ-4
Идентификация и аутентификация
- Уникальные учётные записи для каждого сотрудника, имеющего доступ к ПД.
- Сложные пароли (не менее 8 символов, буквы + цифры + спецсимволы).
- Ограничение числа попыток входа.
Управление доступом
- Принцип минимальных привилегий: сотрудник видит только те данные, которые нужны для работы.
- Разграничение ролей в административных интерфейсах.
Защита передаваемых данных (TLS)
Конфигурация веб-сервера для максимальной безопасности TLS:
- Используйте только TLS 1.2 и TLS 1.3 (отключите SSL 3.0, TLS 1.0, TLS 1.1).
- Применяйте современные шифронаборы (cipher suites).
- Включите HSTS (HTTP Strict Transport Security) с директивой includeSubDomains.
Заголовки безопасности HTTP
Content-Security-Policy: default-src 'self'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), camera=()
Защита от CSRF
Все формы должны содержать CSRF-токены — уникальные одноразовые значения, привязанные к сессии пользователя. Laravel, Django, Rails и другие фреймворки включают CSRF-защиту по умолчанию.
Шифрование данных в базе данных
Чувствительные ПД (паспортные данные, банковские реквизиты) в базе данных должны храниться в зашифрованном виде. Для PostgreSQL используйте pgcrypto, для MySQL — функции AES_ENCRYPT/AES_DECRYPT или шифрование на уровне приложения.
Антивирусная защита и мониторинг
- На сервере должен быть установлен антивирус (актуальный).
- Логи сервера хранятся не менее 1 года.
- Настроены оповещения об аномальной активности (множественные неудачные попытки входа, необычный трафик).
Важно: Проверьте конфигурацию TLS вашего сайта на ssllabs.com/ssltest — оценка A или A+ означает корректную настройку. Оценка ниже B сигнализирует о проблемах, требующих немедленного устранения.
Связанные статьи
Об SSL-сертификатах — SSL-сертификат для сайта: зачем нужен и как установить. О переносе на российский хостинг — Как перенести сайт на российский хостинг.
Итог
Технические меры защиты — не опция, а обязательное требование. Проверьте, насколько защищён ваш сайт, с помощью аудита на help152.ru.