|
7 | 7 | # Blocks: everything else (reverse shells, raw sockets, non-standard ports) |
8 | 8 | # |
9 | 9 | # LOCALHOST: |
10 | | -# Allows: Dev servers (3000-3999, 5173, 6006, 8787-8800, 9229-9260), |
11 | | -# Slack bridge (7890), Ollama (11434), PostgreSQL (54322), DNS (53) |
12 | | -# Blocks: everything else (Steam, CUPS, Tailscale admin, unknown services) |
| 10 | +# Allows: Dev servers & databases on common ports (see rules below) |
| 11 | +# Blocks: system services (CUPS, X11, D-Bus, Tailscale admin, etc.) |
13 | 12 | # |
14 | 13 | # The agent cannot: |
15 | 14 | # - Open reverse shells on non-standard ports |
@@ -44,25 +43,33 @@ iptables -w -N "$CHAIN" |
44 | 43 |
|
45 | 44 | # ── Localhost: allow only specific services ────────────────────────────────── |
46 | 45 |
|
47 | | -# ── Infrastructure ──────────────────────────────────────────────────────── |
48 | | -# Slack bridge (outbound API) |
49 | | -iptables -w -A "$CHAIN" -o lo -p tcp --dport 7890 -j ACCEPT |
50 | | -# Ollama (local LLM inference) |
51 | | -iptables -w -A "$CHAIN" -o lo -p tcp --dport 11434 -j ACCEPT |
52 | | -# PostgreSQL in Docker (modem app) |
| 46 | +# ── Dev servers & frameworks ────────────────────────────────────────────── |
| 47 | +# 3000-3999: Next.js, Express, Remix, generic web servers |
| 48 | +# 4000-4999: Astro (4321), Remix (4200), Nuxt, etc. |
| 49 | +# 5000-5999: Vite (5173), Flask, generic dev servers |
| 50 | +# 6000-6099: Storybook (6006), Expo (6100 range is X11 — skip 6063+) |
| 51 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 3000:5999 -j ACCEPT |
| 52 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 6006 -j ACCEPT |
| 53 | + |
| 54 | +# ── Databases ──────────────────────────────────────────────────────────── |
| 55 | +# 5432: PostgreSQL (native) |
| 56 | +# 6379: Redis |
| 57 | +# 27017: MongoDB |
| 58 | +# 54322: PostgreSQL (Docker-mapped) |
| 59 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 5432 -j ACCEPT |
| 60 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 6379 -j ACCEPT |
| 61 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 27017 -j ACCEPT |
53 | 62 | iptables -w -A "$CHAIN" -o lo -p tcp --dport 54322 -j ACCEPT |
54 | 63 |
|
55 | | -# ── Dev servers (for running/testing modem app locally) ────────────────── |
56 | | -# Next.js (dashboard, website) |
57 | | -iptables -w -A "$CHAIN" -o lo -p tcp --dport 3000:3999 -j ACCEPT |
58 | | -# Vite |
59 | | -iptables -w -A "$CHAIN" -o lo -p tcp --dport 5173 -j ACCEPT |
60 | | -# Storybook |
61 | | -iptables -w -A "$CHAIN" -o lo -p tcp --dport 6006 -j ACCEPT |
62 | | -# Wrangler dev servers (Cloudflare Workers) |
63 | | -iptables -w -A "$CHAIN" -o lo -p tcp --dport 8787:8800 -j ACCEPT |
64 | | -# Node/Wrangler inspector (debugging) |
65 | | -iptables -w -A "$CHAIN" -o lo -p tcp --dport 9229:9260 -j ACCEPT |
| 64 | +# ── Infrastructure ─────────────────────────────────────────────────────── |
| 65 | +# 7890: Slack bridge |
| 66 | +# 8000-9999: Wrangler (8787), Django/FastAPI (8000), inspector (9229+), MinIO (9000) |
| 67 | +# 11434: Ollama |
| 68 | +# 24678: Vite HMR websocket |
| 69 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 7890 -j ACCEPT |
| 70 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 8000:9999 -j ACCEPT |
| 71 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 11434 -j ACCEPT |
| 72 | +iptables -w -A "$CHAIN" -o lo -p tcp --dport 24678 -j ACCEPT |
66 | 73 |
|
67 | 74 | # Allow DNS on localhost |
68 | 75 | iptables -w -A "$CHAIN" -o lo -p udp --dport 53 -j ACCEPT |
@@ -102,9 +109,10 @@ echo "✅ Firewall active. Rules:" |
102 | 109 | echo "" |
103 | 110 | iptables -w -L "$CHAIN" -n -v --line-numbers |
104 | 111 | echo "" |
105 | | -echo "Localhost allowed: 3000-3999 (next), 5173 (vite), 6006 (storybook)," |
106 | | -echo " 7890 (bridge), 8787-8800 (wrangler), 9229-9260 (inspector)," |
107 | | -echo " 11434 (ollama), 54322 (postgres), 53 (dns)" |
| 112 | +echo "Localhost allowed: 3000-5999 (dev servers), 5432 (pg), 6006 (storybook)," |
| 113 | +echo " 6379 (redis), 7890 (bridge), 8000-9999 (wrangler/inspector)," |
| 114 | +echo " 11434 (ollama), 24678 (vite hmr), 27017 (mongo)," |
| 115 | +echo " 54322 (pg docker), 53 (dns)" |
108 | 116 | echo "Internet allowed: 80, 443, 22, 53" |
109 | 117 | echo "Everything else: BLOCKED + LOGGED" |
110 | 118 | echo "" |
|
0 commit comments