Skip to content

Security Model

Casey Barnett edited this page May 10, 2025 · 1 revision

Security Model 🔒

StatusZERO is designed with a minimal but intentional security model to support lightweight, internal deployment. This page outlines how authentication, access, and protection mechanisms work.


🔐 Admin Token Authentication

All privileged actions (e.g., adding or removing IPs) are protected by an Admin Token, which acts as a shared secret.

  • Token is generated at first setup and stored in .env
  • Required for any write operations through the web interface
  • Token must be manually supplied when prompted in modals

Important: This token is the only authentication method currently supported. There are no user roles or session logins.


🪧 Deployment Recommendations

To help keep your instance secure:

  • Run StatusZERO behind a reverse proxy (e.g., NGINX or Caddy)
  • Restrict access via IP allowlists or HTTP Basic Auth
  • Use HTTPS via Let's Encrypt or a valid TLS certificate
  • Rotate the Admin Token periodically and after any exposure

For internal use only, StatusZERO is not intended to be exposed publicly without additional access controls.


⚖️ Token Rotation

To rotate your Admin Token:

  1. Open .env
  2. Replace the adminToken value with a new secure string
  3. Restart the application

The new token will be enforced immediately.


🔢 Data Handling

StatusZERO does not store:

  • Logs of who accessed the system
  • IP geolocation or metadata
  • Personally identifiable information (PII)

All checks are performed on demand or via internal scheduling using DNS-only queries. No third-party APIs are used.


⚠️ Future Enhancements (Planned)

  • Multi-user auth with role-based access
  • Audit logging for IP changes and check history
  • Rate-limiting and brute-force protection for the token prompt

For now, StatusZERO is intended for trusted internal teams and should be secured using your existing infrastructure.

Questions? Open a GitHub issue or visit the FAQ for more details.

Clone this wiki locally