Skip to content

Security: TwojaStronaWWW/devops-stack

Security

SECURITY.md

Polityka Bezpieczeństwa (Security Policy) – TwojaStronaWWW VPS Infrastructure

1. Zakres i Rygor (ISO 27001)

Bezpieczeństwo infrastruktury serwerowej oraz ciągłość działania usług monitoringu i CI/CD są dla nas kwestią priorytetową. Zgodnie z wytycznymi ISO 27001 oraz zasadą Principle of Least Privilege (PoLP) stosujemy rygorystyczne procedury utwardzania systemu (OS Hardening), ochrony tożsamości, izolacji sieciowej i bezpiecznego zarządzania sekretami.

2. Podstawowe Zasady Architektury Bezpieczeństwa

  • Zero Trust Network, Segmentacja Sieci & DOCKER-USER Systemd Guard: Brak otwartych portów publicznych w sieci WAN dla usług wewnętrznych (Grafana, Uptime Kuma, Dozzle, Prometheus). Dostęp zewnętrzny wyłącznie przez szyfrowany tunel Cloudflare Zero Trust, wszystkie porty kontenerów są zbindowane do 127.0.0.1, a łańcuch DOCKER-USER w iptables wymusza blokadę bezpośrednich połączeń przychodzących z interfejsu WAN (enp0s6 -> DROP) nakładaną w 0 ms po każdym starcie/restarcie docker.service przez natywny hook ExecStartPost (/usr/local/sbin/devops-docker-user-guard.sh). Kontenery runnerów CI/CD działają w odseparowanej sieci devops_runners_network bez dostępu L3 do sieci devops_internal_network.
  • Principle of Least Privilege (PoLP) & Utwardzenie PHP (99-security-hardening.ini): Dostęp lokalny do Grafany działa domyślnie w roli tylko do odczytu (Viewer), Uptime Kuma wymusza uwierzytelnianie (DISABLE_AUTH=false), a kontenery działają na nieuprzywilejowanych użytkownikach (nobody, grafana) z flagą no-new-privileges:true. Kontener ai-router blokuje funkcje systemowe (disable_functions = exec,passthru,shell_exec,system,proc_open,popen,...), wyłącza file_uploads oraz display_errors i zamyka proces w piaskownicy open_basedir = /app:/tmp.
  • Dostęp SSH, IPS Fail2ban, TCP BBR, NTP (ISO 27001 A.8.17) & SWAP: Wyłącznie klucze kryptograficzne Ed25519, biała lista kont (AllowUsers ubuntu), blokada logowania hasłem (PasswordAuthentication no) i roota (PermitRootLogin no), wyłączone AllowAgentForwarding no, pełny dziennik audytowy (LogLevel VERBOSE), zablokowana powłoka odziedziczonego konta opc (/usr/sbin/nologin), rate limiting UFW (limit 22/tcp) oraz progresywny ban Fail2ban (1h -> 7d po 3 błędach, metryka devops_fail2ban_banned_total). Jądro używa sterownika Google TCP BBR (net.ipv4.tcp_congestion_control = bbr), podniesionych limitów fs.inotify.max_user_instances = 512, zsynchronizowanego zegara atomowego NTP (devops_ntp_synchronized=1) oraz 2 GB poduszki bezpieczeństwa SWAP (vm.swappiness=10).
  • WAF Warstwy 7 + 15-Minutowy IP Penalty Box: Bramka ai-router blokuje próby Prompt Injection, Jailbreak, XSS, SQLi i Path Traversal kodem HTTP 403 przed wywołaniem modelu LLM i nakłada 15-minutową blokadę na IP agresora (outcome="security_blocked").
  • Zero Secret Leakage & Zero-PII (Cookieless RODO): Bezwzględny zakaz commitowania kluczy prywatnych (.pem, .key, id_ed25519*), certyfikaty oraz plików .env i .env.bak*. Telemetria AI Routera oraz bezciasteczkowej analityki WWW (ai-stats.php) nie przetwarza ani nie loguje treści pytań ani adresów IP.
  • Kopie Zapasowe, Nocny Restore Drill, Auto-Patching APT, Zewnętrzny Dead Man's Switch i Kryminalistyczny Audyt 24/7 (78 testów IoC): Archiwa wolumenów i stron WWW (FTPS TLS + mysqldump) są weryfikowane pod kątem integralności (tar -tzf + PRAGMA quick_check), szyfrowane AES-256-CBC i przesyłane do Cloudflare R2 (retencja 30 dni lokalnie / 14 dni w R2) wraz z automatycznym nocnym testem odtworzeniowym (restore-backup.sh --verify-only). Harmonogram devops-audit.timer co 15 minut weryfikuje 5 warstw bezpieczeństwa (78 testów), automatycznie instaluje zaległe aktualizacje bezpieczeństwa APT (devops_apt_upgradable_packages), pilnuje wskaźników kompromitacji IoC (devops_security_ioc_clean), a o 08:00 rano uruchamia głęboki audyt Dual-AI (GPT-OSS-120B HIGH + Gemini 3.5 Flash HIGH z eskalacją do Claude Sonnet 4.6). Z zewnątrz infrastrukturę nadzoruje niezależny strażnik .github/workflows/external-watchdog.yml.

3. Odpowiedzialne Ujawnianie Podatności (Responsible Disclosure)

Jeżeli odkryłeś potencjalną lukę bezpieczeństwa w konfiguracji, kontenerach lub skryptach infrastruktury, prosimy o natychmiastowe zgłoszenie tego faktu bezpośrednio do zespołu technicznego TwojaStronaWWW.

  • Zakaz publicznego ujawniania: Prosimy o niepublikowanie informacji o lukach w publicznych issue GitHub, forach ani mediach społecznościowych przed ich mitygacją.
  • Kontakt ds. bezpieczeństwa: kontakt@twojastronawww.pl (lub bezpośrednio do administratora projektu).
  • Czas reakcji: Zgłoszenia dotyczące bezpieczeństwa są analizowane priorytetowo (do 24-48 godzin roboczych).

4. Zgłoszenie powinno zawierać:

  1. Dokładny opis podatności i jej potencjalnego wpływu na infrastrukturę.
  2. Kroki niezbędne do odtworzenia problemu (Proof of Concept).
  3. Środowisko i wersję kontenera/systemu.

There aren't any published security advisories