Cloud Security Lab · портфоліо

Захищена інфраструктура,
зібрана за пачку сухариків (0$).

Гібридний стенд: публічний рівень у хмарі Oracle за WAF, наземна площина безпеки на Docker, з'єднані шифрованим тунелем. Увесь доступ — тільки через бастіон і Teleport.

0$вартість інфраструктури
5вузлів під єдиним доступом
825правил WAF (OWASP CRS)
0відкритих SSH назовні

01Архітектура — поточний стан

Бастіон — єдина точка входу й контролю: усі внутрішні з'єднання керуються через Teleport. Деплой проходить повний DevSecOps-ланцюг: Vault видає секрети, SonarQube сканує код, і лише зелений Quality Gate випускає реліз у хмару. Наведи курсор на вузол.

Пристрій адміністратора wg0 · 10.8.0.2 tsh · Teleport client Відвідувачі portfolio-kravchuk.duckdns.org публічний домен ORACLE CLOUD · VCN 10.0.0.0/16 · Frankfurt vpn-teleport · бастіон 130.61.222.135 · 10.0.1.6 Teleport control plane WireGuard · внутрішній CA MFA · RBAC · запис сесій ◆ єдина точка контролю WAF 130.61.30.191 · 10.0.1.198 nginx · ModSecurity · CRS v4 Let's Encrypt TLS · 80/443 app-pub · сайт 10.0.20.146 · :80 · без public IP nginx · /var/www/html app-priv 10.0.20.44 · без public IP ізольований · лише Teleport IGW · інтернет-шлюз публічний вхід у VCN ingress → WAF NAT · SGW шлюзи NAT 92.5.156.41 егрес приватної мережі НА ЗЕМЛІ · VirtualBox sec-onprem · Docker · 16GB/4CPU · sec-net 172.20.0.0/24 Gitea + CI (act_runner) :3000 · repo portfolio-site пайплайн: Vault → SAST → деплой WireGuard S2S · wg1 10.9.0.2 ↔ 10.9.0.1 UDP 51821 · тунель до бастіона Vault · секрети Raft · KV v2 · AppRole 15-хв токени для CI SonarQube · SAST 127.0.0.1:9000 · Quality Gate червоний gate = деплой зупинено wg0 · WireGuard Teleport → земля HTTPS 443 proxy :80 егрес S2S · wg1 AppRole · токен SAST · gate push → Vault → SAST → S2S → app-pub публічний запит Teleport · доступ CI-деплой · SAST S2S тунель секрети · Vault

02Як це працює — три потоки

Кожна взаємодія має власний контрольований канал. Прямого доступу з інтернету всередину немає ніде — усе проходить через бастіон, а кожен реліз — через сканування коду.

Публічний запит

Відвідувач → сайт

Трафік заходить у хмару через IGW, потрапляє на WAF: той термінує TLS, фільтрує через 825 правил OWASP CRS (атаки → 403) і проксить на app-pub. Бекенд віддає сторінку.

IGW → WAF :443 → app-pub :80
Адміністрування

Адмін → будь-яка нода

Доступ лише через WireGuard до бастіона, далі — Teleport з MFA, ролями й записом сесій. Так контролюються і хмарні вузли, і земля. SSH назовні не відкритий ніде.

wg0 → bastion → Teleport :443
DevSecOps-конвеєр

git push → скан → публікація

Push у Gitea запускає CI: раннер логіниться у Vault через AppRole, отримує 15-хвилинний токен і забирає секрет для сканера. SonarQube аналізує код (SAST), і лише якщо Quality Gate зелений — контент їде через S2S-тунель на app-pub. Червоний gate зупиняє деплой.

Gitea → Vault → SonarQube → S2S → app-pub

03Хмарна площина — Oracle Cloud

Публічний, завжди-онлайн рівень. Сегментований на DMZ і приватну підмережі; вхід у мережу — через IGW, вихід приватних вузлів — через NAT.

vpn-teleport · бастіон

130.61.222.135 · control plane

Серце доступу. WireGuard + Teleport (MFA, RBAC, запис сесій) + внутрішній CA. Через нього контролюються всі з'єднання — і хмарні вузли, і земля через S2S. Публічно відкритий лише порт WireGuard.

WAF · публічний вхід

130.61.30.191 · subnet-public

nginx + ModSecurity 3 + OWASP CRS v4 у бойовому режимі. Термінує TLS, фільтрує атаки, реверс-проксить на бекенд. Відповідає лише на свій домен — по голому IP мовчить.

app-pub · сайт

10.0.20.146 · без публічного IP

Бекенд у приватній підмережі. Приймає трафік лише з DMZ (від WAF), недосяжний з інтернету напряму. Віддає цю сторінку.

IGW · NAT · SGW

NAT 92.5.156.41

Шлюзи VCN, вплетені в потоки: IGW — публічний вхід до WAF; NAT — вихід приватних вузлів у інтернет (оновлення); SGW — доступ до сервісів Oracle без публічного маршруту.

04Наземна площина — VirtualBox / Docker

Робоча зона розробки та безпеки: Git, CI, сховище секретів і SAST живуть на землі. З'єднана з хмарою шифрованим S2S-тунелем до бастіона; керується тим самим Teleport, що й хмара.

Gitea + CI

sec-net 172.20.0.0/24 · :3000

Git-сервіс із вбудованим CI. Репозиторій сайту, раннер і DevSecOps-пайплайн: секрети з Vault, SAST-скан, деплой. У самому CI статичних секретів майже немає — лише креденшли AppRole для входу у Vault.

Vault · сховище секретів

Raft · KV v2 · AppRole

Централізоване керування секретами. Розпечатування за Шаміром (3 із 5 ключів). CI автентифікується через AppRole й отримує токен на 15 хвилин з правом читати лише свій секрет — ізоляцію політик підтверджено негативним тестом (permission denied на чужий шлях).

SonarQube · SAST

sec-net · 127.0.0.1:9000

Статичний аналіз коду на кожен push. Окремий сервісний акаунт лише з правом Execute Analysis, версіоновані токени проєкту, Quality Gate: якщо він червоний — pipeline падає і деплой не стартує.

WireGuard S2S

10.9.0.2 ↔ 10.9.0.1 · UDP 51821

Шифрований тунель земля → бастіон. Ним іде деплой на app-pub, а також адмін-доступ до самої землі через Teleport. Земля ініціює з'єднання, тому не потребує публічного IP.

05Що робить це захищеним

Принцип — найменші привілеї та оборона в глибину: кожен рівень фільтрує окремо.

06Дорожня карта

Наземний стек безпеки, який добудовується поверх готового фундаменту. Два сервіси вже в бою.

SonarQube ✓SAST у CI — Quality Gate блокує деплой
Vault ✓секрети для CI через AppRole
WazuhSIEM — логи WAF і вузлів
Zabbixмоніторинг метрик і доступності
GVM / OpenVASсканування вразливостей
ZAP · SuricataDAST і мережева IDS