Files
laravel-gost-template/README.md
2026-06-24 17:20:43 +09:00

6.5 KiB
Raw Permalink Blame History

Защищённый шаблон Laravel для ИСПДн (ФСТЭК №21, УЗ-1 / К1)

Шаблон веб-приложения на Laravel 13 для обработки персональных данных с реализацией технических мер защиты по приказу ФСТЭК России №21, 152-ФЗ и с учётом требований ФСБ (приказ №378) к криптографической защите.

⚠️ Важно. Соответствие УЗ-1/К1 достигается только сочетанием технических мер (этот код), инфраструктурных мер (ОС, сеть, СКЗИ, антивирус, СОВ) и организационных мер (политики, регламенты, модель угроз, аттестация). Шаблон закрывает прикладной (программный) уровень и даёт заготовки для остального. См. docs/security/compliance.md.

Что реализовано в коде

Область Реализация Меры ФСТЭК
Аутентификация Вход с блокировкой после N попыток, регенерация сессии ИАФ.1, ИАФ.6
MFA (2ФА) TOTP (pragmarx/google2fa) + резервные коды ИАФ.4
Парольная политика ≥12 симв., сложность, история, срок действия 90 дней ИАФ.3
Управление доступом RBAC (spatie/laravel-permission) + Policies УПД.2, УПД.4, УПД.5
Шифрование ПДн Прозрачное шифрование полей (AES-256-GCM, драйвер ГОСТ) ЗНИ, ЗИС.16
Контроль целостности Контрольные суммы записей ПДн ОЦЛ.2
Журнал аудита Отдельная БД, HMAC-подпись + хеш-цепочка, SIEM РСБ.2, РСБ.3, РСБ.7
Защита транспорта Принудительный HTTPS, HSTS, заголовки безопасности ЗИС.9, ЗИС
Защита от атак CSRF, throttling, валидация Form Request, CSP ЗИС
Контроль конфигурации APP_DEBUG=false, composer audit в CI ОДТ.3, УКФ.4

Подробное сопоставление мер и кода — в docs/security/compliance.md. Чек-лист со статусами — в docs/security/checklist.md.

Фронтенд

Inertia.js v3 + Vue 3 + NaiveUI (движок перенесён из проекта onboard: тема по системным настройкам, discrete API, диалоги, индикатор загрузки) + Pinia. HTTP — встроенными средствами Inertia (useForm/useHttp), без axios. Готовая страница входа и каркас кабинета в resources/js/pages, layouts, components. Подробнее — в CLAUDE.md.

Требования

  • PHP 8.3+, расширения: pdo_pgsql, mbstring, openssl, redis
  • PostgreSQL 14+ (основная БД и отдельная БД журнала аудита)
  • Redis (сессии, кэш, очереди)
  • Node.js 20+ (сборка фронтенда)

Быстрый старт (локально)

composer install
npm install
cp .env.example .env        # либо используйте готовый .env для локалки
php artisan key:generate

# Локально работает на sqlite (см. .env). Создание схемы:
php artisan migrate
php artisan migrate --database=audit --path=database/migrations/audit
php artisan db:seed         # базовые роли (RBAC)

# Администратор (мера УПД.1):
php artisan user:create-admin

npm run build               # или: npm run dev
php artisan serve

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

  1. Заполните .env по образцу .env.example (PostgreSQL, Redis, секреты из хранилища, APP_DEBUG=false, APP_ENV=production).
  2. Сгенерируйте ключи: php artisan key:generate, а также AUDIT_HMAC_KEY и SECURITY_PSEUDONYM_KEY (например php artisan key:generate --show).
  3. Примените миграции основной и аудит-БД (см. выше).
  4. Выдайте учётной записи приложения к аудит-БД только права INSERT/SELECT — database/sql/audit_grants.sql.
  5. Настройте TLS и заголовки на Nginx — deploy/nginx/app.conf.
  6. Настройте регламентные задачи (php artisan schedule:work / cron) — проверка целостности журнала, ротация, аудит зависимостей.
  7. Инфраструктура: антивирус (ЗАВ), СОВ (СОВ), сегментация сети (ЗИС.1), hardening ОС/PHP (УКФ.1), полнодисковое шифрование (ЗНИ.1).

Пример docker-стенда — deploy/docker-compose.yml.

Криптография по ГОСТ (ФСБ №378)

Встроенный AES-256-GCM не является сертифицированным СКЗИ. Для государственных ИСПДн переключите драйвер на ГОСТ и подключите КриптоПро CSP / VipNet — см. docs/security/crypto-gost.md.

Организационные документы

Технические меры без организационных не дают соответствия. Шаблоны документов — в docs/org/ (политика обработки ПДн, модель угроз, регламент реагирования на инциденты, перечень регистрируемых событий, акт классификации).

Проверки качества и безопасности

composer lint          # Pint (стиль кода)
./vendor/bin/phpstan   # Larastan (статический анализ)
./vendor/bin/pest      # тесты, включая тесты мер защиты
composer audit         # уязвимости зависимостей (УКФ.4)