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, OWASP Dependency-Check, Trivy, OWASP ZAP, Gitleaks
  • Стандарты: OWASP Top 10, CIS Benchmarks, CVSS, ISO 27005
  • Анализ рисков: оценка, приоритизация, стратегии снижения рисков ИБ

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

  • 10 лабораторных работ + итоговый pet-project
  • Каждая лабораторная — отдельный репозиторий с исходным кодом и отчётом в формате 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["Подготовка"]
        I01["VirtualBox & Linux"]
        I02["Git, GPG, SSH, gh"]
        I03["Gistup отчёты"]
    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

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

    Intro --> Foundations
    Foundations --> Containers
    Containers --> AppSec
    AppSec --> DevSecOps
    DevSecOps --> 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 # прямое обозначение адреса
  • Очистка локального репозитория
$ rm -rf __pycache__ scripts/__pycache__  # etc.
$ 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 origin :refs/tags/v0.1.0   # удалить тот же тег на GitHub

Структура

├── docs/                          # MkDocs source
│   ├── index.md                   # Главная
│   ├── licenses.md                # 41 лицензия
│   ├── appsec_tt.md               # 29 классов инструментов
│   ├── APPENDIX.md                # Команды и утилиты
│   ├── troubleshooting.md         # FAQ
│   ├── glossary.md                # 39 аббревиатур
│   ├── labs/
│   │   ├── intro/                 # vmbox, git_setup, gistup
│   │   ├── basic/                 # lab01-10
│   │   └── pet_project.md
│   ├── materials/                 # Примеры, OWASP Top 10
│   ├── artifacts/                 # CheatSheets, PDF, assets
│   ├── stylesheets/               # CSS (tokens, layout, ...)
│   ├── javascripts/               # JS
│   └── overrides/                 # main.html, 404.html
├── labs/
│   ├── intro/                     # vmbox, git_setup, gistup
│   ├── basic/                     # lab01-10
│   └── pet_project/
├── .github/workflows/
│   ├── ci.yml                     # Lint → Audit → Build → Deploy
│   └── release-from-notes.yml
├── hooks.py                       # Sitemap enrichment
├── mkdocs.yml
├── requirements.txt
└── RELEASE_NOTES.md