# 🔐 Security > Bezpečnostní checklisty, hardening, threat model. ## 🛡 Defense in depth ### Layer 1: Fyzický - Server v uzamčené místnosti - UPS (nepřerušitelný zdroj) - Teplotní monitoring (smart home) ### Layer 2: Síť (perimetrie) - ✅ UFW firewall (default deny) - ✅ fail2ban (3 SSH pokusy = ban) - ✅ Cloudflare Tunnel (žádná veřejná IP) - ✅ VLAN izolace (IoT vs servery) ### Layer 3: OS - ✅ Ubuntu LTS (pravidelné bezpečnostní updaty) - ✅ unattended-upgrades (auto security updates) - ✅ SSH klíče (hesla zakázána) - ✅ PermitRootLogin no - ✅ Auditd (logování) ### Layer 4: Docker - ✅ Bridge network isolation - ✅ Read-only filesystémy kde to jde - ✅ USER_UID/GID pro file ownership - ✅ No `--privileged` (pokud to není nutné) - ✅ No `--net=host` (kromě Plex) - ✅ Health checks pro monitoring - ✅ Logging: json-file driver, 10 MB × 3 ### Layer 5: Aplikace - ✅ HTTPS terminuje NPM (Let's Encrypt) - ✅ 2FA na všech web službách - ✅ API klíče v keychainu, ne v env souborech - ✅ Rate limiting (NPM, fail2ban) ### Layer 6: Data - ✅ Backup na NAS (denně) - ✅ Off-site backup (Backblaze B2) - ✅ Šifrované citlivé volumes (LUKS, v budoucnu) - ✅ Retention policy (7 dní denně, 4 týdny týdně, 12 měsíců měsíčně) ## 🔑 Správa hesel - **Vaultwarden** – single source of truth - **API klíče** – v macOS keychainu (`security add-generic-password`) - **SSH klíče** – `~/.ssh/id_ed25519`, passphrase v keychainu - **2FA** – TOTP, hardwarový klíč (doporučeno YubiKey) ## 🚨 Incident Response ### Detekce - Watchtower notifikace (image outdated) - fail2ban email alert - Speedtest alert (interní outage) - Cloudflare Tunnel logy ### Postup 1. **Identifikuj** – logy, monitoring 2. **Izoluj** – zastavit kontejner / odpojit síť 3. **Analyzuj** – root cause, scope 4. **Oprav** – patch, konfigurace 5. **Dokumentuj** – incident log v `~/Skripty/incident-YYYY-MM-DD.md` ### Recovery - `restore-all.sh` pro Docker data - Vaultwarden backup pro credentials - DNS failover (Cloudflare) ## 🛠 Hardening checklist ### Server - [ ] Ubuntu LTS nainstalován - [ ] UFW aktivní, default deny - [ ] fail2ban nakonfigurován - [ ] SSH klíče, root login zakázán - [ ] unattended-upgrades aktivní - [ ] auditd běží - [ ] Docker nainstalován z oficiálního repo ### Docker - [ ] Bridge networks (žádný host network, kromě Plex) - [ ] USER_UID=1000, USER_GID=1000 pro všechny kontejnery - [ ] Volumes na hostu (./data), ne anonymous - [ ] Health checks v compose - [ ] Logging: 10 MB × 3 soubory - [ ] Restart: unless-stopped ### Služby - [ ] HTTPS terminuje NPM - [ ] Let's Encrypt auto-renew - [ ] 2FA na všech účtech - [ ] Admin heslo změněno z default - [ ] Registrace vypnuta (pokud ne private) - [ ] SMTP nastaveno (pro notifikace) ### Zálohy - [ ] rsync skript cron (denně 03:00) - [ ] Off-site backup (Backblaze B2) - [ ] Test obnovy (čtvrtletně) - [ ] Šifrované zálohy (GPG + age) ## 📜 Compliance - **GDPR** – osobní data v Nextcloud (kontrola přístupu) - **PCI DSS** – N/A (žádné platby) - **NIS2** – pokud provozuješ služby pro třetí strany ## 🔍 Threat model | Hrozba | Pravděpodobnost | Dopad | Mitigace | |---|---|---|---| | Brute force SSH | Vysoká | Nízký | fail2ban, key-only | | Phishing | Střední | Vysoký | 2FA, edukace | | Docker escape | Nízká | Kritický | Bridge isolation, USER_UID, pravidelné updaty | | Supply chain (image) | Nízká | Vysoký | Oficiální image, Watchtower, GPG signing | | Insider threat | Nízká | Střední | Audit logy, 2FA, hesla v keychainu | | Ransomware | Nízká | Kritický | Off-site backup, 3-2-1 rule | | DDoS | Střední | Střední | Cloudflare, fail2ban | | DNS hijack | Nízká | Vysoký | DNSSEC, HTTPS | | Zero-day v OS | Střední | Kritický | unattended-upgrades, WAF | ## 🔐 API token management ```bash # Uložení do keychainu security add-generic-password \ -s "service:api:192.168.0.148" \ -a "user" \ -w "TOKEN" -U # Čtení v skriptech TOKEN=$(security find-generic-password \ -s "service:api:192.168.0.148" \ -a "user" -w) ``` **Pravidla:** - Token **nikdy** v `.env` souborech - Token **nikdy** v `docker-compose.yml` - Token **nikdy** v git history - Token **pouze** v keychainu nebo env variables ## 📚 Reference - [CIS Docker Benchmark](https://www.cisecurity.org/benchmark/docker) - [OWASP Top 10](https://owasp.org/www-project-top-ten/) - [NIST Cybersecurity Framework](https://www.nist.gov/cyberframework) - [CIS Ubuntu Linux Benchmark](https://www.cisecurity.org/benchmark/ubuntu_linux)