Skip to content

feat: daily external port scan of spore - #748

Merged
stackptr merged 1 commit into
mainfrom
feat-external-port-scan
Oct 26, 2026
Merged

stackptr merged 1 commit into
mainfrom
feat-external-port-scan

Conversation

@stackptr

Copy link
Copy Markdown
Owner

Adds .github/workflows/port-scan.yml. Once a day, a GitHub runner, outside every network spore trusts, connect-scans all 65535 TCP ports on spore's public address with nmap. It fails and posts to #alerts (through stackptr/actions/slack-notify) when:

  • a port is open that spore's evaluated networking.firewall on main doesn't allow: an undeployed or reverted change, a rule outside the NixOS firewall, or something at CloudCone; or
  • nothing is open at all (spore is down, or the scan is being blocked).

The address and the allowed ports both come from evaluating spore's config, so nothing needs updating by hand. The workflow also runs on PRs that touch it, with Slack in dry-run mode, so this PR's own run tests it.

Scope: spore only. Home's public IPv4 is dynamic and isn't in the repo, so there's no stable target to scan. The only home exposure is glyph's 53150 forward, and home has no global IPv6.

To verify:

  • This PR's Port scan run shows Open: 22 80 443 6697 (or a subset) and passes, in a few minutes
  • After merge, trigger it once with gh workflow run port-scan.yml

🤖 Generated with Claude Code

A GitHub runner scans every TCP port on spore's public address and posts
to #alerts if one is open that spore's firewall on main doesn't allow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@stackptr
stackptr merged commit 8742d6a into main Oct 26, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant