Skip to content

Commit 8344389

Browse files
committed
firewall: broaden localhost allowlist for general dev use
Allow reasonable port ranges a dev agent might need, not just what is needed today. Philosophy: block system services, allow dev tools. Allowed: 3000-5999 Dev servers (Next, Express, Vite, Flask, Astro, etc.) 5432 PostgreSQL (native) 6006 Storybook 6379 Redis 7890 Slack bridge 8000-9999 Wrangler, Django, FastAPI, inspector, MinIO 11434 Ollama 24678 Vite HMR websocket 27017 MongoDB 54322 PostgreSQL (Docker-mapped) 53 DNS Blocked: CUPS (631), X11 (6063+), D-Bus, Tailscale admin, etc.
1 parent d706c69 commit 8344389

1 file changed

Lines changed: 31 additions & 23 deletions

File tree

bin/setup-firewall.sh

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@
77
# Blocks: everything else (reverse shells, raw sockets, non-standard ports)
88
#
99
# 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.)
1312
#
1413
# The agent cannot:
1514
# - Open reverse shells on non-standard ports
@@ -44,25 +43,33 @@ iptables -w -N "$CHAIN"
4443

4544
# ── Localhost: allow only specific services ──────────────────────────────────
4645

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
5362
iptables -w -A "$CHAIN" -o lo -p tcp --dport 54322 -j ACCEPT
5463

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
6673

6774
# Allow DNS on localhost
6875
iptables -w -A "$CHAIN" -o lo -p udp --dport 53 -j ACCEPT
@@ -102,9 +109,10 @@ echo "✅ Firewall active. Rules:"
102109
echo ""
103110
iptables -w -L "$CHAIN" -n -v --line-numbers
104111
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)"
108116
echo "Internet allowed: 80, 443, 22, 53"
109117
echo "Everything else: BLOCKED + LOGGED"
110118
echo ""

0 commit comments

Comments
 (0)