# Защищённый шаблон Laravel для ИСПДн (ФСТЭК №21, УЗ-1 / К1) Шаблон веб-приложения на Laravel 13 для обработки персональных данных с реализацией технических мер защиты по приказу ФСТЭК России №21, 152-ФЗ и с учётом требований ФСБ (приказ №378) к криптографической защите. > ⚠️ **Важно.** Соответствие УЗ-1/К1 достигается **только** сочетанием > технических мер (этот код), инфраструктурных мер (ОС, сеть, СКЗИ, антивирус, > СОВ) и организационных мер (политики, регламенты, модель угроз, аттестация). > Шаблон закрывает прикладной (программный) уровень и даёт заготовки для > остального. См. [docs/security/compliance.md](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/compliance.md). Чек-лист со статусами — в [docs/security/checklist.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](CLAUDE.md). ## Требования - PHP 8.3+, расширения: `pdo_pgsql`, `mbstring`, `openssl`, `redis` - PostgreSQL 14+ (основная БД и отдельная БД журнала аудита) - Redis (сессии, кэш, очереди) - Node.js 20+ (сборка фронтенда) ## Быстрый старт (локально) ```bash 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](database/sql/audit_grants.sql). 5. Настройте TLS и заголовки на Nginx — [deploy/nginx/app.conf](deploy/nginx/app.conf). 6. Настройте регламентные задачи (`php artisan schedule:work` / cron) — проверка целостности журнала, ротация, аудит зависимостей. 7. Инфраструктура: антивирус (ЗАВ), СОВ (СОВ), сегментация сети (ЗИС.1), hardening ОС/PHP (УКФ.1), полнодисковое шифрование (ЗНИ.1). Пример docker-стенда — [deploy/docker-compose.yml](deploy/docker-compose.yml). ## Криптография по ГОСТ (ФСБ №378) Встроенный AES-256-GCM **не является сертифицированным СКЗИ**. Для государственных ИСПДн переключите драйвер на ГОСТ и подключите КриптоПро CSP / VipNet — см. [docs/security/crypto-gost.md](docs/security/crypto-gost.md). ## Организационные документы Технические меры без организационных не дают соответствия. Шаблоны документов — в [docs/org/](docs/org/) (политика обработки ПДн, модель угроз, регламент реагирования на инциденты, перечень регистрируемых событий, акт классификации). ## Проверки качества и безопасности ```bash composer lint # Pint (стиль кода) ./vendor/bin/phpstan # Larastan (статический анализ) ./vendor/bin/pest # тесты, включая тесты мер защиты composer audit # уязвимости зависимостей (УКФ.4) ```