Netwarden
Product · Security

Scan your website and cloud, then fix what turns up

Netwarden scans your live website for exposed services, weak TLS, missing security headers, and known vulnerabilities, and scans your AWS, Azure, GCP, or Vercel accounts for the misconfigurations that lead to breaches. It also watches the Linux hosts you run, from CVE matches to SSH posture. Every finding arrives with a plain explanation and an AI-written fix, so you are not left with a severity score and a link to go read about it.

4
Cloud providers scanned
AWS, Azure, GCP, and Vercel
1000s
Web vulnerability checks
kept current from community templates
AI
Written fix on every finding
specific to the issue, not a doc link
60s
Free scan, no account
see what is exposed before you pay
What it does

What Netwarden scans and watches

Your website and your cloud accounts are scanned from the outside for the problems attackers look for. The Linux hosts you run are watched from the inside by the same agent that reports CPU and disk. Findings from all of it land in one place, each with a fix.

Web application scanning

Netwarden scans your live site the way an attacker would. It inspects TLS configuration, HTTP security headers, exposed admin panels and services, and runs a large, current library of vulnerability checks against what it finds. Anyone can run a free scan before signing up, and connected sites get a deeper scan on a schedule.

  • TLS and certificate analysis, HTTP security headers, and exposed-service checks on every scan.
  • Thousands of vulnerability checks, kept current from the community templates the security industry already relies on.
  • Findings map to CVEs and CVSS where they apply, so severity stays consistent instead of guessed.
high

Directory listing is enabled on /backups

exposed on :443check: dir-listing
finding_type: web_scan

Cloud posture scanning

Connect an AWS, Azure, GCP, or Vercel account with read-only access and Netwarden checks it against hundreds of security best practices: public storage, over-broad IAM, unencrypted volumes, open security groups, and more. It runs on a schedule, so configuration that drifts open next month gets caught, not just the state on day one.

  • Read-only access. Netwarden reads your cloud configuration and never changes it.
  • Hundreds of checks per provider, covering the misconfigurations behind most cloud breaches.
  • Runs on a schedule, so a bucket someone opens later shows up too.
critical

S3 bucket acme-backups is publicly readable

awss3-bucket-public-read
finding_type: cloud_posture

CVE alerts on the packages you actually run

The agent inventories installed packages on every host. The platform pulls Ubuntu USN, Debian DSA, and Red Hat OVAL feeds, enriches each advisory with NVD CVSS for sharp severity routing, and joins the two. When a fixed version ships and you haven't applied it, a finding fires with the CVE, the affected package, and the version you need.

  • Coverage: Ubuntu, Debian, RHEL, Rocky, AlmaLinux, CentOS, Amazon Linux. Fedora installs match against Red Hat advisories where applicable.
  • Severity is routed via NVD CVSS (not just the upstream vendor severity), so the same CVE doesn't get different importance depending on whose feed you read.
  • Auto-resolves on the next package snapshot once the upgrade lands. You don't manually clear a CVE you've already patched.
We do not yet ship advisory feeds for SUSE, Arch, Alpine, or Gentoo. CVEs on those distros are tracked but not currently flagged.
critical

openssl 3.0.2-0ubuntu1.10 is affected by CVE-2023-0286

fixed in 3.0.2-0ubuntu1.12USN-5892-1
finding_type: cve_match

SSH posture audit on every connection

The agent reads sshd_config and the live algorithm advertisement. Eight finding types catch the settings that turn an SSH server into a brute-force target, plus the legacy crypto that lets old clients downgrade you.

  • PermitRootLogin yes: high. PermitEmptyPasswords yes: critical.
  • PasswordAuthentication yes: medium. Protocol 1: critical.
  • Weak KexAlgorithms (SHA-1 family), Ciphers (CBC, RC4, CAST), MACs (MD5, 64-bit truncated). Flagged per category.
  • X11Forwarding yes: low, but worth knowing on production servers.
high

SSH allows direct root login

PermitRootLogin=yes/etc/ssh/sshd_config
finding_type: ssh_*

Public-bind audit on management ports

The agent enumerates every listening socket. The platform flags management or database ports bound to a public address (0.0.0.0 or ::). Postgres, MySQL, MongoDB, Redis, Elasticsearch, the Docker daemon, RDP, MSSQL, Memcached. There is also a coarser anomaly: more public binds than loopback binds is unusual on a server.

  • Per-port findings, not aggregated. Fix the Redis exposure without losing the open Mongo finding behind it.
  • Service restarts don't duplicate the finding: PID and process name are stored but not part of the dedupe fingerprint.
  • many_public_bindings fires when public binds exceed loopback by more than five. A coarse hint at an over-exposed host.
high

Management port 5432/tcp is exposed publicly

postgres bound to 0.0.0.0:5432
finding_type: public_management_port

GeoIP-aware failed-login monitoring

The agent samples failed SSH logins from auth.log, journal, and equivalents on a 60-second window. Every source IP gets enriched against MaxMind GeoLite2. Two findings ride on top: a country-watchlist alert and a country-anomaly alert tied to the host's own 30-day baseline.

  • High-risk countries (RU, CN, KP, IR, BY) trigger a high-severity finding once a country crosses 20 failed attempts in the window.
  • Country anomaly fires when a host sees sustained failed-login traffic from a country it has never logged before in the prior 30 days.
  • The dashboard surfaces sample IPs, country flags, and a 30-day prior distribution so operators can triage without leaving the page.
GeoIP requires a customer-provided MaxMind GeoLite2 license file (free to obtain at maxmind.com) mounted into the platform pod. Without it, every finding above still fires. Only the country attribution is omitted.
high

Failed SSH logins from Russia (47 in last minute)

window=60ssource=auth.log
finding_type: failed_login_*
🇷🇺Russia185.220.101.447
🇨🇳China117.50.39.18212

TLS certificate expiration

Agentless. The platform reuses your existing HTTPS uptime checks: when it dials the host, it captures the peer certificate. A finding fires when the certificate is within 14 days of expiry and is escalated to critical at 3 days.

  • No extra collector to install. Runs on the same dial used for HTTPS uptime.
  • Issuer, subject, and notAfter are stored on the finding so you don't need to re-run openssl s_client to triage.
  • Auto-resolves the next time the dial sees a renewed certificate. Renewals are detected without operator intervention.
critical

TLS certificate for app.example.com expires in 2 day(s)

issuer=Let's Encryptserved on :443
finding_type: ssl_cert_expiring_soon
How alerts reach you

Severity-routed, three channels, one digest

Findings are tiered critical / high / medium / low and dispatched across email, mobile push, and outbound webhook. You decide which severities open which channel. You can also opt into a single weekly digest as a low-noise alternative.

Severity-routed dispatch

Every finding lands in one of four buckets: critical, high, medium, low. Per-tenant preferences decide which severities go to email, which to push, and which to your webhook. No noisy lows in your inbox unless you ask for them.

Auto-resolution

When you fix the misconfig, the next snapshot closes the finding on its own. Auto-resolved findings are tagged distinctly from user-resolved ones, so you can tell who did the work: you, or the platform recognizing your fix.

Time-to-resolution metric

Every finding tracks first_seen, resolved_at, and who closed it. The dashboard rolls those up into a time-to-resolution chart, so you can prove your security posture is improving instead of just feeling like it might be.

SeverityEmailPushWebhookExample finding
Criticaldefault ondefault ondefault onEmpty SSH passwords, SSHv1 enabled, 2-day cert
Highdefault ondefault ondefault onPublic Postgres, root SSH, weak ciphers, RU brute force
Mediumdefault onoff by defaultoff by defaultPassword SSH auth, country anomaly, weak MACs
Lowoff by defaultoff by defaultoff by defaultX11 forwarding, hmac-sha1. Weekly digest only.
Fix it without leaving the page

Every finding comes with the fix

Each finding ships with a plain explanation and an AI-written fix for the exact issue in front of you, not a link to someone else's blog post. Apply it, mark the finding resolved, and move on.

ssh_root_login_enabled

Disable direct root SSH

# /etc/ssh/sshd_config — set PermitRootLogin no
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' \ /etc/ssh/sshd_config
sudo sshd -t && sudo systemctl reload sshd
cve_match

Patch a flagged package

# Debian / Ubuntu
sudo apt update
sudo apt install --only-upgrade openssl
# RHEL / Rocky / Alma / Fedora
sudo dnf update openssl
ssl_cert_expiring_soon

Renew an expiring certificate

# Let's Encrypt — certbot renewal
sudo certbot renew --dry-run
sudo certbot renew
sudo systemctl reload nginx
Honest limits

What this is not

We would rather tell you up front where the edges are. Netwarden finds and helps you fix a wide range of real problems, and there are still things it is not meant to replace.

Not a pentest

Netwarden runs automated scans on a schedule, which catches the common, high-value problems fast. It does not replace a human pentester chaining exploits by hand for a one-off engagement.

Not an EDR

No kernel-level threat detection, no behavioural process anomaly, no signed-binary attestation. If you need runtime malware detection on each host, pair us with an EDR.

Not a SIEM

We do not aggregate every log line in your fleet. Failed-login monitoring uses sampled top-IP windows, not full ingestion. Bring a SIEM if you need long-term log search.

Not a compliance auditor

We do not certify you against PCI, HIPAA, or SOC 2 controls. Our findings (disabled root SSH, patched CVEs, public-port exposure) are useful inputs to those audits, but the framework itself isn't our product.

GeoIP needs your own MaxMind license

MaxMind's terms require each operator to hold their own GeoLite2 license. It's free at maxmind.com; you mount the .mmdb into the platform pod. Without it, every other security finding still fires.

Linux first today

SSH posture, listening-port audit, and CVE matching require the Linux agent. Windows and macOS hosts are inventoried but don't yet emit security findings beyond TLS expiration on monitored hostnames.

Self-hosted parity

The whole security wedge ships in the self-hosted binary

CVE feeds, SSH posture audits, port-exposure findings, GeoIP failed-login monitoring, TLS expiration. Every capability on this page is in the same Bun-compiled binary you'd run yourself. Same evaluator, same remediation snippets, same dashboard. No feature gate.

Read about self-hosting

Install the agent. Start finding things.

One install gets you uptime, metrics, and the security posture checks on this page. Free tier covers three hosts; paid plans add longer retention and unlimited webhooks.