Skip to content

Security

VersionSupported
Latest release
Previous minor
Older versions
  1. Do not open a public issue

  2. Contact privately

    Email the maintainer directly or use GitHub’s private vulnerability reporting feature.

  3. Include details

    • Description of the vulnerability
    • Steps to reproduce
    • Potential impact
    • Suggested fix (if any)

We aim to respond within 48 hours and will work with you to understand and address the issue.

  • Use a dedicated user with minimal permissions (only api, read, write policies)
  • Use TLS when possible (mikrotik.tls: true)
  • Store credentials securely (environment variables or secrets management)
  • Never commit credentials to version control
  • Use TLS certificates for LAPI connections when available
  • Restrict LAPI access to trusted networks
  • Rotate bouncer API keys periodically
  • The official Docker image runs as a non-root user
  • Use read-only filesystem mount where possible
  • Limit container capabilities
  • Use secrets management for credentials (Docker secrets, Kubernetes secrets)

The setup command writes a systemd unit with hardening enabled:

SettingPurpose
NoNewPrivileges=yesPrevents privilege escalation through exec transitions
ProtectSystem=strictMounts system paths read-only for the service
ProtectHome=yesBlocks direct access to home directories
ReadWritePaths=/var/logAllows log file writes when logging.file points under /var/log
PrivateTmp=yesGives the service an isolated temporary directory
LimitNOFILE=65536Leaves headroom for RouterOS API sessions and HTTP endpoints

If you maintain a manual unit file, keep these settings unless your deployment has a specific reason to relax one.

  • The bouncer identifies its rules by structured comments — do not modify these comments manually
  • Use the comment_prefix option to avoid conflicts with other tools
  • The bouncer performs cleanup on startup and shutdown to prevent stale rules
  • Every bouncer rule also includes the fixed @cs-routeros-bouncer signature. This lets crash-recovery cleanup find old rules even if comment_prefix changes later.