Skip to content

Commit 6d4cfdc

Browse files
committed
firewall: make logging rules best-effort on limited kernels
1 parent eedfc3c commit 6d4cfdc

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

bin/setup-firewall.sh

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ fi
3434

3535
CHAIN="BAUDBOT_OUTPUT"
3636

37+
add_optional_rule() {
38+
if ! iptables -w "$@"; then
39+
echo "⚠️ Optional firewall rule unsupported by kernel, skipping: iptables -w $*" >&2
40+
fi
41+
}
42+
3743
echo "🔒 Setting up firewall rules for $BAUDBOT_AGENT_USER (uid $UID_BAUDBOT)..."
3844

3945
# Clean up any existing rules first
@@ -45,10 +51,10 @@ iptables -w -X "$CHAIN" 2>/dev/null || true
4551
iptables -w -N "$CHAIN"
4652

4753
# ── Logging (SYN + DNS only — low volume) ────────────────────────────────────
48-
# Log all new outbound connections (SYN packets only to avoid flooding)
49-
iptables -w -A "$CHAIN" -p tcp --syn -j LOG --log-prefix "baudbot-out: " --log-level info
50-
# Log DNS queries
51-
iptables -w -A "$CHAIN" -p udp --dport 53 -j LOG --log-prefix "baudbot-dns: " --log-level info
54+
# Some kernels (notably certain cloud Arch images) lack optional LOG/tcp xtables
55+
# modules. Treat logging rules as best-effort; the allow/drop policy is mandatory.
56+
add_optional_rule -A "$CHAIN" -p tcp --syn -j LOG --log-prefix "baudbot-out: " --log-level info
57+
add_optional_rule -A "$CHAIN" -p udp --dport 53 -j LOG --log-prefix "baudbot-dns: " --log-level info
5258

5359
# ── Localhost: allow only specific services ──────────────────────────────────
5460

@@ -88,7 +94,7 @@ iptables -w -A "$CHAIN" -o lo -p tcp --dport 53 -j ACCEPT
8894
iptables -w -A "$CHAIN" -o lo -m state --state ESTABLISHED,RELATED -j ACCEPT
8995

9096
# Block everything else on localhost
91-
iptables -w -A "$CHAIN" -o lo -j LOG --log-prefix "BAUDBOT_LOCAL_BLOCKED: " --log-level 4
97+
add_optional_rule -A "$CHAIN" -o lo -j LOG --log-prefix "BAUDBOT_LOCAL_BLOCKED: " --log-level 4
9298
iptables -w -A "$CHAIN" -o lo -j DROP
9399

94100
# ── Internet: allow standard + dev ports ─────────────────────────────────────
@@ -118,7 +124,7 @@ iptables -w -A "$CHAIN" -p tcp --dport 4317:4318 -j ACCEPT
118124
iptables -w -A "$CHAIN" -m state --state ESTABLISHED,RELATED -j ACCEPT
119125

120126
# Log and drop everything else
121-
iptables -w -A "$CHAIN" -j LOG --log-prefix "BAUDBOT_BLOCKED: " --log-level 4
127+
add_optional_rule -A "$CHAIN" -j LOG --log-prefix "BAUDBOT_BLOCKED: " --log-level 4
122128
iptables -w -A "$CHAIN" -j DROP
123129

124130
# Jump to our chain for all baudbot_agent traffic

0 commit comments

Comments
 (0)