# Weekly Security Posture Scan ## Targets 1. forge (localhost / 192.168.1.16) — James' home 2. james-old (192.168.1.17) — retired, still running 3. staging/dev (192.168.1.253) — home server 4. prod (192.168.100.2) — inou prod (when available) 5. caddy (192.168.0.2 / 100.84.42.55) — reverse proxy 6. zurich.inou.com (82.22.36.202) — VPS 7. amsterdam.inou.com (82.24.174.112) — VPS 8. UDM-Pro (192.168.0.1) — core router ## Per-Host Checks (VPS/Linux) ### Intrusion Detection - [ ] `last -20` — any logins from unknown IPs? - [ ] `lastb | head -30` — brute force attempts (volume/pattern) - [ ] `cat /etc/passwd | awk -F: '$3>=1000'` — unauthorized users? - [ ] `cat ~/.ssh/authorized_keys` — compare against known keys baseline - [ ] `find /home -name authorized_keys -exec cat {} \;` — same for all users - [ ] `crontab -l; ls /etc/cron.d/` — rogue cron jobs? - [ ] `ps aux | grep -v '\[' | sort -k3 -rn | head -20` — suspicious processes? - [ ] `ss -tnp | grep -v '127.0.0\|::1'` — unexpected outbound connections? - [ ] `find / -mtime -7 -type f -name '*.sh' 2>/dev/null` — recently modified scripts - [ ] `docker ps -a` — unauthorized containers? - [ ] Check for rootkits: `rkhunter --check --skip-keypress` or `chkrootkit` ### Hardening Verification - [ ] `sshd -T | grep -E 'passwordauth|permitroot'` — still hardened? - [ ] `ufw status` — rules unchanged? - [ ] `fail2ban-client status sshd` — running, banning? - [ ] `ss -tlnp` — only expected ports listening? - [ ] `apt list --upgradable` — outstanding security patches? - [ ] File permissions on /etc/shadow, /etc/sudoers ### Caddy Specific - [ ] TLS cert validity/expiry - [ ] Reverse proxy rules — no unintended exposure - [ ] Access logs — unusual patterns? ### UDM-Pro Specific - [ ] Firmware version — current? - [ ] Port forwards — only intended ones - [ ] IDS/IPS enabled and signatures current - [ ] Connected clients — any unknown devices? - [ ] Exposed management ports? ## Baseline First run establishes baseline files at `memory/security-baselines/`: - `zurich-keys.txt` — authorized SSH keys - `zurich-ports.txt` — expected listening ports - `zurich-users.txt` — expected users - Same for amsterdam, caddy, prod ## Reporting - Clean scan → log to `memory/security-scans/YYYY-MM-DD.md` - Any findings → Fully alert (warning/critical) + detailed log - Track trends (ban count, failed login volume)