Skip to content

geminishkv/course_labs

Repo SizeLicenseCIStatusReleaseContributorsOpen pull requestsCommit ActivityLast commit

Практический курс по прикладной безопасности приложений: от Git до полноценного DevSecOps-конвейера.

Что изучаем:

  • Инфраструктура: Git, CI/CD, Docker, Docker Compose, GitHub Actions, YAML
  • Языки: Python, Shell (Java и Go — в контексте SCA и анализа зависимостей)
  • AppSec инструменты: Semgrep, Checkov, Bandit, OWASP Dependency-Check, Trivy, Docker Bench, OWASP ZAP, Gitleaks, TruffleHog, Hadolint
  • Стандарты: OWASP Top 10, CIS Docker Benchmark, CVSS, ISO 27005, NIST SP 800-30, PCI DSS, ГОСТ 57580
  • Анализ рисков: оценка, приоритизация, стратегии снижения рисков ИБ

Как устроен курс:

  • 7 intro-руководств + 10 лабораторных работ + итоговый pet-project + 7 тестов (5 базовых + 2 лекционных)
  • Каждая лабораторная — отдельный репозиторий с исходным кодом и отчётом в формате gistup
  • Все работы выполняются в ветке developpull requestapprove от geminishkv
  • Прогрессия: GitLinuxNmapDockerCIS BenchmarkSAST/SCADASTSecret DetectionCI/CDRisk Analysis

Замечания:

  • Лабораторные обязательны для всех — вне зависимости от уровня подготовки
  • Каждая работа разбивается на атомарные коммиты для трекинга изменений
  • Отчёт сдаётся индивидуально с защитой: каждая команда — с описанием флагов и выводом из терминала
  • В отчётах — вывод из консоли, не скриншоты
  • Часть инструментов требует установки дополнительных open-source пакетов

Этапы

  1. Выполнить подготовительные инструкции:
  2. Каждый репозиторий должен содержать .gitignore, CODE_OF_CONDUCT, CONTRIBUTING, LICENSE, NOTICE, SECURITY
  3. Выполнить лабораторные работы по порядку:
  1. Реализовать итоговую работу:

Карта

flowchart TD
    subgraph Intro["Подготовка (7 intro)"]
        I01["VirtualBox & Linux"]
        I02["Git, GPG, SSH, gh"]
        I03["Gistup отчёты"]
        I04["Сети и TCP/IP"]
        I05["Основы Docker"]
        I06["Введение в CI/CD"]
        I07["AppSec Tools Setup"]
    end

    subgraph Foundations["Основы"]
        L01["Lab 01 · Git SCM"]
        L02["Lab 02 · Linux, SUID, ACL"]
        L03["Lab 03 · Nmap, NSE"]
        L04["Lab 04 · Risk Analysis"]
    end

    subgraph Containers["Контейнеризация"]
        L05["Lab 05 · Docker"]
        L06["Lab 06 · CIS Benchmark, Trivy"]
    end

    subgraph AppSec["AppSec Toolchain"]
        L07["Lab 07 · SAST, SCA, Secret Detection\nSemgrep · Checkov · Gitleaks"]
        L08["Lab 08 · DAST\nOWASP ZAP"]
    end

    subgraph DevSecOps["DevSecOps"]
        L09["Lab 09 · CI/CD Pipeline\nGitHub Actions"]
        L10["Lab 10 · Risk Analysis · Practice"]
    end

    subgraph Tests["Тесты"]
        T01["Базовые: Вариант 1-5"]
        T02["Лекционные: Fintech V1-V2"]
    end

    PET["Pet Project — индивидуальная работа"]

    Intro --> Foundations
    Foundations --> Containers
    Containers --> AppSec
    AppSec --> DevSecOps
    DevSecOps --> Tests
    Tests --> PET
Loading

Формализованные требования

  • Единый стиль кода
  • Все функции по работе с деревом должны находиться в пространстве имен
  • Оформление README.md в соответствии с содержанием проекта
  • Оформление .gitignore в соответствии с содержанием проекта
  • Оформление .dockerignore в соответствии с содержанием проекта
  • Использовать подходящий тип LICENSE для проекта и NOTICE
  • Создать и использовать скрипты для автоматизации сборки проекта, примеров, тестов, пакетирования
  • Обеспечить непрерывный процесс сборки проекта с использованием сервиса GitHub Actions
  • Написать документацию к проекту с использованием инструмента doxygen
  • Обеспечить размещение пакета проекта на сервисе GitHub Release при успешном слияние ветки develop
  • Рефакторинг и поддержка лабораторных работ в процессной деятельности
  • Все команды выполняться строго из терминала/ консоли без использования WebUI за исключениям работы с токенами, ключами и специфичными настройками

Tutorial

  • Подготовка окружения
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install -r requirements.txt
$ python -m mkdocs serve --livereload
# or
$ mkdocs serve -a 127.0.0.1:8001 # прямое обозначение адреса
  • Перегенерация Mermaid-диаграмм (при изменении .mmd файлов)
$ cd docs/artifacts/diagrams
$ for f in *.mmd; do
    npx --yes @mermaid-js/mermaid-cli \
      -i "$f" -o "${f%.mmd}.svg" \
      -c mermaid-config.json -b transparent
  done
  • Очистка локального репозитория
$ rm -rf __pycache__ scripts/__pycache__
$ rm -rf .venv
$ lsof -i :8000
$ kill <PID>
  • Release
$ git tag -a v1.0.0 -m "v1.0.0"
$ git push origin v1.0.0

$ git tag -d v0.1.0                    # удалить локальный тег
$ git push --delete origin v1.2.3   # удалить тот же тег на GitHub

Структура

├── docs/                              # MkDocs source (обёртки + материалы)
│   ├── index.md                       # Главная (hero + lab cards + tg widget)
│   ├── about.md                       # О проекте
│   ├── privacy.md                     # Политика конфиденциальности
│   ├── Security.md                    # Политика безопасности
│   ├── RELEASE_NOTES.md               # Релизы
│   ├── glossary.md                    # 39 аббревиатур AppSec
│   ├── robots.txt                     # Robots + AI-bot blocking
│   ├── llms.txt                       # Описание для AI-поисковиков
│   ├── turbo-feed.xml                 # Яндекс.Турбо RSS
│   ├── labs/
│   │   ├── intro/                     # 7 docs-обёрток intro
│   │   ├── basic/lab01-10.md          # 10 docs-обёрток лабораторных
│   │   ├── pet_project.md             # Итоговый проект
│   │   └── tests/
│   │       ├── basic/                 # 5 вариантов базовых тестов
│   │       └── lectures/              # 2 варианта теста Fintech
│   ├── materials/
│   │   ├── lectures/fintech_ru.md     # Лекция Fintech по-русски
│   │   ├── examples/                  # 5 кейсов ИБ
│   │   ├── OWASPTOP10/               # 7 OWASP материалов
│   │   ├── cheatsheet/               # 9 шпаргалок
│   │   ├── ports.md                   # Справочник портов
│   │   ├── appsec_tt.md              # 29 классов инструментов
│   │   ├── licenses.md               # 41 лицензия
│   │   ├── APPENDIX.md               # Команды и утилиты
│   │   └── troubleshooting.md        # FAQ (~45 карточек)
│   ├── stylesheets/                   # CSS (tokens, layout, header, sidebar, ...)
│   ├── javascripts/                   # JS (header, typewriter, banners, effects)
│   ├── overrides/                     # main.html (SEO, JSON-LD, Метрика), 404.html
│   └── artifacts/
│       ├── assets/                    # Logo (SVG), favicon (ICO), images
│       └── diagrams/                  # 7 Mermaid SVG + .mmd исходники
├── labs/
│   ├── intro/                         # 7 intro-руководств (исходники)
│   ├── basic/lab01-10/               # 10 лабораторных (код + README + docker-compose)
│   ├── pet_project/                   # Итоговый проект
│   └── tests/
│       ├── basic/                     # 5 базовых тестов (исходники)
│       └── lectures/ru_fintech/       # 2 варианта теста Fintech (исходники)
├── .github/workflows/
│   ├── ci.yml                         # Lint → Audit → Mermaid SVG → Build → Deploy
│   └── release-from-notes.yml
├── hooks.py                           # Sitemap enrichment (priority + changefreq)
├── mkdocs.yml
├── requirements.txt
└── RELEASE_NOTES.md