Репозиторий демонстрирует архитектуру защищенного веб-приложения на базе микросервисов. Проект разработан с акцентом на Application Security (AppSec) и защиту инфраструктуры.
Реализована эшелонированная защита от попыток манипуляции кэширующими прокси:
- Application Level (Fastify): Глобальный хук preHandler блокирует запросы к API-роутам, содержащие расширения статических файлов (.jpg, .css и т.д.).
- Proxy Level (Nginx): Логика сопоставления расширения URL и Content-Type ответа. При попытке выдать динамический контент за статику принудительно выставляется заголовок Cache-Control: no-store.
Конфигурация Nginx настроена по рекомендациям OWASP Best Practices:
- SSL/TLS: Поддержка только TLS v1.2 и v1.3.
- Скрыты версии сервера (server_tokens off) для минимизации сбора данных злоумышленником.
- Security Headers: HSTS, X-Frame-Options (DENY), X-Content-Type-Options (nosniff).
- PFS: Использование кастомных параметров Диффи-Хеллмана (dhparam.pem).
- Least Privilege: Приложение внутри контейнера запускается от имени системного пользователя node, а не root.
- Network Segmentation: Разделение на frontend-net (доступна Nginx) и изолированную backend-net (для БД и внутренней связи).
- Healthchecks: Использование pg_isready для контроля готовности БД перед запуском зависимых сервисов.
- Оптимизация образов: Использование флага --only=production для исключения уязвимых инструментов разработки из продакшн-сборки.
- Runtime: Node.js 20 (Alpine)
- Framework: Fastify v5
- Proxy: Nginx (Stable-Alpine)
- Database: PostgreSQL 15, Redis
- Infrastructure: Docker Compose
-
Клонируйте репозиторий: git clone https://github.com/linhead/secure-microservices-case.git cd secure-microservices-case
-
Настройте окружение:
- Создайте файл .env на основе .env.example.
- Сгенерируйте SSL-сертификаты в папку certs/: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout certs/localhost.key -out certs/localhost.crt
- Сборка и запуск: docker-compose up --build
Author: linhead (https://github.com/linhead) Проект создан для демонстрации навыков в области Application Security.