The only agent that thinks for itself

Autonomous Monitoring with self-learning AI built-in, operating independently across your entire stack.

Unlimited Metrics & Logs
Machine learning & MCP
5% CPU, 150MB RAM
3GB disk, >1 year retention
800+ integrations, zero config
Dashboards, alerts out of the box
> Discover Netdata Agents

Centralized metrics streaming and storage

Aggregate metrics from multiple agents into centralized Parent nodes for unified monitoring across your infrastructure.

Stream from unlimited agents
Long-term data retention
High availability clustering
Data replication & backup
Scalable architecture
Enterprise-grade security
> Learn about Parents

Fully managed cloud platform

Access your monitoring data from anywhere with our SaaS platform. No infrastructure to manage, automatic updates, and global availability.

Zero infrastructure management
99.9% uptime SLA
Global data centers
Automatic updates & patches
Enterprise SSO & RBAC
SOC2 & ISO certified
> Explore Netdata Cloud

Deploy Netdata Cloud in your infrastructure

Run the full Netdata Cloud platform on-premises for complete data sovereignty and compliance with your security policies.

Complete data sovereignty
Air-gapped deployment
Custom compliance controls
Private network integration
Dedicated support team
Kubernetes & Docker support
> Learn about Cloud On-Premises

Powerful, intuitive monitoring interface

Modern, responsive UI built for real-time troubleshooting with customizable dashboards and advanced visualization capabilities.

Real-time chart updates
Customizable dashboards
Dark & light themes
Advanced filtering & search
Responsive on all devices
Collaboration features
> Explore Netdata UI

Monitor on the go

Native iOS and Android apps bring full monitoring capabilities to your mobile device with real-time alerts and notifications.

iOS & Android apps
Push notifications
Touch-optimized interface
Offline data access
Biometric authentication
Widget support
> Download apps

The future of infrastructure observability

See our strategic direction across AI-native observability, full-stack signals, operational intelligence, and enterprise platform maturity.

AI-native observability
Full-stack signal coverage
Operational intelligence
Enterprise platform maturity
Agent releases every 6 weeks
Cloud continuous delivery
> Explore Product Roadmap

Best energy efficiency

True real-time per-second

100% automated zero config

Centralized observability

Multi-year retention

High availability built-in

Zero maintenance

Always up-to-date

Enterprise security

Complete data control

Air-gap ready

Compliance certified

Millisecond responsiveness

Infinite zoom & pan

Works on any device

Native performance

Instant alerts

Monitor anywhere

AI-native observability

Continuous delivery

Open source foundation

80% Faster Incident Resolution

AI-powered troubleshooting from detection, to root cause and blast radius identification, to reporting.

True Real-Time and Simple, even at Scale

Linearly and infinitely scalable full-stack observability, that can be deployed even mid-crisis.

90% Cost Reduction, Full Fidelity

Instead of centralizing the data, Netdata distributes the code, eliminating pipelines and complexity.

See and Map Your Entire Network

Live topology, flow analytics, and SNMP device and trap monitoring — unified with your full-stack observability.

Control Without Surrender

SOC 2 Type 2 certified with every metric kept on your infrastructure.

Integrations

800+ collectors and notification channels, auto-discovered and ready out of the box.

800+ data collectors
Auto-discovery & zero config
Cloud, infra, app protocols
Notifications out of the box
> Explore integrations
Real Results
46% Cost Reduction

Reduced monitoring costs by 46% while cutting staff overhead by 67%.

— Leonardo Antunez, Codyas

Zero Pipeline

No data shipping. No central storage costs. Query at the edge.

From Our Users
"Out-of-the-Box"

So many out-of-the-box features! I mostly don't have to develop anything.

— Simon Beginn, LANCOM Systems

No Query Language

Point-and-click troubleshooting. No PromQL, no LogQL, no learning curve.

Enterprise Ready
67% Less Staff, 46% Cost Cut

Enterprise efficiency without enterprise complexity—real ROI from day one.

— Leonardo Antunez, Codyas

SOC 2 Type 2 Certified

Zero data egress. Only metadata reaches the cloud. Your metrics stay on your infrastructure.

Full Coverage
800+ Collectors

Auto-discovered and configured. No manual setup required.

Any Notification Channel

Slack, PagerDuty, Teams, email, webhooks—all built-in.

Built for the People Who Get Paged

Because 3am alerts deserve instant answers, not hour-long hunts.

Every Industry Has Rules. We Master Them.

See how healthcare, finance, and government teams cut monitoring costs 90% while staying audit-ready.

Monitor Any Technology. Configure Nothing.

Install the agent. It already knows your stack.
From Our Users
"A Rare Unicorn"

Netdata gives more than you invest in it. A rare unicorn that obeys the Pareto rule.

— Eduard Porquet Mateu, TMB Barcelona

99% Downtime Reduction

Reduced website downtime by 99% and cloud bill by 30% using Netdata alerts.

— Falkland Islands Government

Real Savings
30% Cloud Cost Reduction

Optimized resource allocation based on Netdata alerts cut cloud spending by 30%.

— Falkland Islands Government

46% Cost Cut

Reduced monitoring staff by 67% while cutting operational costs by 46%.

— Codyas

Real Coverage
"Plugin for Everything"

Netdata has agent capacity or a plugin for everything, including Windows and Kubernetes.

— Eduard Porquet Mateu, TMB Barcelona

"Out-of-the-Box"

So many out-of-the-box features! I mostly don't have to develop anything.

— Simon Beginn, LANCOM Systems

Real Speed
Troubleshooting in 30 Seconds

From 2-3 minutes to 30 seconds—instant visibility into any node issue.

— Matthew Artist, Nodecraft

20% Downtime Reduction

20% less downtime and 40% budget optimization from out-of-the-box monitoring.

— Simon Beginn, LANCOM Systems

Pay per Node. Unlimited Everything Else.

One price per node. Unlimited metrics, logs, users, and retention. No per-GB surprises.

Free tier—forever
No metric limits or caps
Retention you control
Cancel anytime
> See pricing plans

What's Your Monitoring Really Costing You?

Most teams overpay by 40-60%. Let's find out why.

Expose hidden metric charges
Calculate tool consolidation
Customers report 30-67% savings
Results in under 60 seconds
> See what you're really paying

Your Infrastructure Is Unique. Let's Talk.

Because monitoring 10 nodes is different from monitoring 10,000.

On-prem & air-gapped deployment
Volume pricing & agreements
Architecture review for your scale
Compliance & security support
> Start a conversation

Monitoring That Sells Itself

Deploy in minutes. Impress clients in hours. Earn recurring revenue for years.

30-second live demos close deals
Zero config = zero support burden
Competitive margins & deal protection
Response in 48 hours
> Apply to partner

Per-Second Metrics at Homelab Prices

Same engine, same dashboards, same ML. Just priced for tinkerers.

Community: Free forever · 5 nodes · non-commercial
Homelab: $90/yr · unlimited nodes · fair usage
> Get the Homelab Plan

$1,000 Per Referral. Unlimited Referrals.

Your colleagues get 10% off. You get 10% commission. Everyone wins.

10% of subscriptions, up to $1,000 each
Track earnings inside Netdata Cloud
PayPal/Venmo payouts in 3-4 weeks
No caps, no complexity
> Get your referral link
Cost Proof
40% Budget Optimization

"Netdata's significant positive impact" — LANCOM Systems

Calculate Your Savings

Compare vs Datadog, Grafana, Dynatrace

Savings Proof
46% Cost Reduction

"Cut costs by 46%, staff by 67%" — Codyas

30% Cloud Bill Savings

"Reduced cloud bill by 30%" — Falkland Islands Gov

Enterprise Proof
"Better Than Combined Alternatives"

"Better observability with Netdata than combining other tools." — TMB Barcelona

Real Engineers, <24h Response

DPA, SLAs, on-prem, volume pricing

Why Partners Win
Demo Live Infrastructure

One command, 30 seconds, real data—no sandbox needed

Zero Tickets, High Margins

Auto-config + per-node pricing = predictable profit

Homelab Ready
Free Video Course

8-episode Netdata tutorial by LearnLinux.tv

76k+ GitHub Stars

3rd most starred monitoring project

Worth Recommending
Product That Delivers

Customers report 40-67% cost cuts, 99% downtime reduction

Zero Risk to Your Rep

Free tier lets them try before they buy

AI Support Assistant, Available 24/7

Nedi has access to all official documentation, source code, and resources. Ask any question about Netdata—responds in your language.

Deployment & configuration
Troubleshooting & sizing
Alerts & notifications
Evidence-based answers
> Ask Nedi now

Never Fight Fires Alone

Docs, community, and expert help—pick your path to resolution.

Learn.netdata.cloud docs
Discord, Forums, GitHub
Premium support available
> Get answers now

60 Seconds to First Dashboard

One command to install. Zero config. 850+ integrations documented.

Linux, Windows, K8s, Docker
Auto-discovers your stack
> Read our documentation

76,000+ Engineers Strong

615+ contributors. 1.5M daily downloads. One mission: simplify observability.

Per-Second. 90% Cheaper. Data Stays Home.

Side-by-side comparisons: costs, real-time granularity, and data sovereignty for every major tool.

See why teams switch from Datadog, Prometheus, Grafana, and more.

> Browse all comparisons
Edge-Native Observability, Born Open Source
Per-second visibility, ML on every metric, and data that never leaves your infrastructure.
Founded in 2016
615+ contributors worldwide
Remote-first, engineering-driven
Open source first
> Read our story
Promises We Publish—and Prove
12 principles backed by open code, independent validation, and measurable outcomes.
Open source, peer-reviewed
Zero config, instant value
Data sovereignty by design
Aligned pricing, no surprises
> See all 12 principles
Edge-Native, AI-Ready, 100% Open
76k+ stars. Full ML, AI, and automation—GPLv3+, not premium add-ons.
76,000+ GitHub stars
GPLv3+ licensed forever
ML on every metric, included
Zero vendor lock-in
> Explore our open source
Build Real-Time Observability for the World
Remote-first team shipping per-second monitoring with ML on every metric.
Remote-first, fully distributed
Open source (76k+ stars)
Challenging technical problems
Your code on millions of systems
> See open roles
Meet the Team Behind Netdata
Conferences, meetups, and tradeshows where you can see Netdata in action and talk to the engineers who build it.
Live demos and deep dives
Book 1-on-1 meetings
Talks and panel sessions
Event recaps and photos
> See all events
Talk to a Netdata Human in <24 Hours
Sales, partnerships, press, or professional services—real engineers, fast answers.
Discuss your observability needs
Pricing and volume discounts
Partnership opportunities
Media and press inquiries
> Book a conversation
Your Data. Your Rules.
On-prem data, cloud control plane, transparent terms.
Trust & Scale
76,000+ GitHub Stars

One of the most popular open-source monitoring projects

SOC 2 Type 2 Certified

Enterprise-grade security and compliance

Data Sovereignty

Your metrics stay on your infrastructure

Validated
University of Amsterdam

"Most energy-efficient monitoring solution" — ICSOC 2023, peer-reviewed

ADASTEC (Autonomous Driving)

"Doesn't miss alerts—mission-critical trust for safety software"

Community Stats
615+ Contributors

Global community improving monitoring for everyone

1.5M+ Downloads/Day

Trusted by teams worldwide

GPLv3+ Licensed

Free forever, fully open source agent

Why Join?
Remote-First

Work from anywhere, async-friendly culture

Impact at Scale

Your work helps millions of systems

$ guides / tomcat / tomcat-401-manager-brute-force ▌

Operations Guides

Tomcat 401 flood on the Manager app: credential brute force and LockOutRealm

A 401 flood is a sustained spike of HTTP 401 responses against /manager, /host-manager, or any realm-secured endpoint. The signature is concentration: many 401s from a small set of source IPs, or many 401s aimed at a single username. Scattered 401s from mistyped passwords are noise; concentration and sustain are the signal.

Against the Manager app, a 401 flood is almost always credential brute force or stuffing and a precursor to compromise. A successful Manager login lets an attacker deploy WAR files (RCE), enumerate sessions, and undeploy applications. An internet-exposed Manager with weak or default credentials can be fully taken over within minutes of the flood beginning.

What this means

Tomcat returns 401 when a request to a realm-secured resource arrives without credentials, with invalid credentials, or with credentials for the wrong realm. A script-driven attacker replays username/password pairs and treats every 401 as “try the next pair”.

The diagnostic question is not “are there 401s?” but “is the 401 rate concentrated, sustained, and aimed at administrative surfaces?” A flood is one or more of:

  • Many 401s per minute from one IP or a tight set of IPs.
  • Many 401s targeting /manager/html, /manager/text, /manager/jmxproxy, /host-manager/html, or any custom realm-secured endpoint.
  • Many 401s for the same username (per-user brute force) or many distinct usernames (distributed enumeration).

If LockOutRealm is configured, sustained 401s against one username should produce lockout events in catalina.out and a non-zero locked-user count on the realm MBean. A flood with no corresponding lockouts is itself a signal: either LockOutRealm is not wrapping the active realm, or you are hitting a known bypass.

flowchart TD
    A["401 rate spike in access log"] --> B{"Concentrated on /manager/* ?"}
    B -- yes --> C{"Few IPs, many requests each?"}
    B -- no --> D["Check app auth change or broken client"]
    C -- yes --> E["Per-user brute force"]
    C -- no --> F["Distributed credential stuffing"]
    E --> G{"LockOutRealm engaging?"}
    F --> H["IP-based rate limit at edge; LockOutRealm will not help"]
    G -- yes --> I["Contain IPs, rotate creds, audit"]
    G -- no --> J["Check case-sensitivity CVE or realm mis-config"]
    I --> K{"Any 200 on /manager/html from a flooding IP?"}
    K -- yes --> L["Treat as compromise"]
    K -- no --> M["Monitor and harden"]

Common causes

CauseWhat it looks likeFirst thing to check
Credential brute force against ManagerMany 401s from one or few IPs hitting /manager/*, often with rotating usernamesGroup 401s by source IP and by requested path
Credential stuffing (distributed)Many 401s spread across many IPs, each sending few requests, many distinct usernamesCheck username distribution; watch for one common password across many usernames
Legitimate scanner or misconfigured probeShort burst of 401s that stops; often a single health check or monitoring probeConfirm the User-Agent and request rate against monitoring schedules
Default or weak credentials on internet-facing ManagerA flood that suddenly stops, followed by a 200 on /manager/html from a previously-401 IPCheck tomcat-users.xml for default usernames (tomcat, admin, manager, role1)
LockOutRealm bypass via username case variationMany 401s for the same base username with different capitalizations; lockouts not triggeringCheck Tomcat version against CVE-2026-43513 and the caseSensitive attribute

Quick checks

These are read-only. Adjust $CATALINA_BASE and the access log filename to match your install.

# Confirm Manager is reachable and what code it returns locally
# Expected: 401 (auth required) if Manager is deployed; 404 if not
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8080/manager/html

# Count 401s in today's access log
grep '" 401 ' "$CATALINA_BASE/logs/localhost_access_log.$(date +%Y-%m-%d).txt" | wc -l

# Group 401s by source IP (field 1 is %h in the default Common Log Format)
grep '" 401 ' "$CATALINA_BASE/logs/localhost_access_log.$(date +%Y-%m-%d).txt" \
  | awk '{print $1}' | sort | uniq -c | sort -rn | head -20

# Group 401s by requested path (extract path from the request line)
grep '" 401 ' "$CATALINA_BASE/logs/localhost_access_log.$(date +%Y-%m-%d).txt" \
  | awk -F'"' '{split($2, r, " "); print r[2]}' | sort | uniq -c | sort -rn | head -20

# Inspect User-Agents on 401s (requires the combined pattern; CLF has no User-Agent)
grep '" 401 ' "$CATALINA_BASE/logs/localhost_access_log.$(date +%Y-%m-%d).txt" \
  | awk -F'"' '{print $6}' | sort | uniq -c | sort -rn | head -20

# Confirm LockOutRealm is configured and which realm it wraps
grep -A 6 'LockOutRealm' "$CATALINA_BASE/conf/server.xml"

# Look for lockout events
grep -iE 'lockout|locked' "$CATALINA_BASE/logs/catalina.out" | tail -20

# Check Manager credentials for default usernames
grep -iE 'username=.*(tomcat|admin|manager|role1|root)' "$CATALINA_BASE/conf/tomcat-users.xml"

# Confirm what interface the HTTP connector is bound to
ss -tnl 'sport = :8080'

The default Common Log Format pattern is %h %l %u %t "%r" %s %b. In that pattern, %u (remote user) logs as - on failed auth, so you cannot see attempted usernames from the access log alone. To capture usernames you need a custom valve or temporary authentication debug logging. The User-Agent awk index ($6) is correct only for the combined pattern (%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"); in plain CLF there is no User-Agent field.

How to diagnose it

  1. Establish flood versus baseline. Pull 24 hours of 401 counts per hour. A flood is a clear departure from baseline, not a slow drift.
  2. Group by source IP. A small number of IPs producing most of the 401s is brute force. A flat distribution across many IPs, each sending few requests, is distributed credential stuffing.
  3. Group by requested path. Concentration on /manager/html, /manager/text/deploy, or /host-manager/html is the highest-signal indicator. 401s on application endpoints may indicate a broken auth change rather than an attack.
  4. Group by username if available. Distribution tells you whether you face per-user brute force (one username, many passwords) or username enumeration (many usernames, one password). The access log will not give you this by default; enable it via a custom valve or auth debug.
  5. Correlate with lockouts. If LockOutRealm is configured, sustained per-user brute force should produce lockouts. Many 401s with no lockouts suggests a case-sensitivity bypass (see CVE-2026-43513 below) or that LockOutRealm is not actually wrapping the active realm.
  6. Look for the transition from 401 to 200. The most important forensic signal is a previously flooding IP that suddenly gets a 200 on /manager/html. That is a successful compromise and must be treated as a security incident, not a tuning problem.
  7. Check for follow-on Manager activity. After a successful auth, look for POST /manager/text/deploy, /manager/html/upload, or any session listing. Any of these is evidence of attacker action.

The LockOutRealm picture

LockOutRealm is a wrapper realm that extends CombinedRealm and imposes account lockout after repeated failed authentications. You enable it by nesting the real realm (UserDatabaseRealm, DataSourceRealm, JNDIRealm) inside a <Realm className="org.apache.catalina.realm.LockOutRealm"> element in server.xml.

Default attribute values:

AttributeDefaultMeaning
failureCount5Failed attempts before the user is locked
lockOutTime300 (seconds)How long the lockout lasts
cacheSize1000Number of users tracked in the failure cache
caseSensitivefalse on Tomcat 9.0.118+, 10.1.55+, 11.0.22+Whether the lockout key treats username case as significant

The stock server.xml has shipped the default UserDatabaseRealm wrapped inside a LockOutRealm since Tomcat 7.0.1, and every release of the 8.5.x, 9.0.x, 10.1.x and 11.x lines has done the same since.

What LockOutRealm does well

  • Per-user lockout after a threshold of failures. A script trying a thousand passwords for admin gets cut off at 5 (default), then again every 5 minutes.
  • A short, deterministic lockout window (default 5 minutes) that slows automated attacks without permanently locking legitimate users.
  • Failure cache eviction at cacheSize=1000. Under a distributed attack against many distinct usernames, older failure records evict, which can let a previously-failing username start fresh.

What LockOutRealm does not protect against

  • Distributed brute force where each request uses a different username. LockOutRealm locks per-user, not per-source-IP. An attacker rotating usernames (admin, administrator, root, tomcat, guest) with one common password never hits any single user’s failure threshold. Access-log IP grouping is the only detection for this pattern.
  • Legitimate-user lockout as a side effect. If an attacker floods a known-good username, the legitimate user cannot authenticate for lockOutTime after the threshold is hit. Tune lockOutTime, or implement an out-of-band unlock procedure, if operators depend on quick re-login.
  • Case-sensitivity bypass (CVE-2026-43513, disclosed May 2026, severity Low). On versions where the lockout key was treated as case-sensitive, an attacker could cycle capitalizations (admin, Admin, ADMIN, aDmIn) and each variant counted as a distinct username, multiplying the effective failure budget. For realms where the backing store (JNDI, DataSource) authenticates case-insensitively, this allowed a real bypass. Fixed in Tomcat 9.0.118, 10.1.55, and 11.0.22 by the caseSensitive attribute, which defaults to false. The CVE advisory lists Tomcat 8.5.0 through 8.5.100 as affected; 8.5 reached end-of-life on 31 March 2024 (final release 8.5.100) and no official Apache 8.5.x fix was published - only third-party extended-support vendors patch it. Apache rates the issue Low; the fixed versions for supported lines are 9.0.118, 10.1.55, and 11.0.22.
  • Username enumeration timing side channels. LockOutRealm makes enumeration harder but does not eliminate timing differences between existing and non-existing usernames. No Tomcat CVE covers this timing side channel; treat it as an inherent property of bind-based directory realms rather than a versioned defect.

Metrics and signals to monitor

SignalWhy it mattersWarning sign
401 response rate per connector and per source IPPrimary attack indicatorSustained rate above baseline from concentrated IPs
401 rate grouped by requested pathDistinguishes Manager attacks from app-endpoint auth issuesConcentration on /manager/* or /host-manager/*
200 on /manager/html from non-localhostSuccessful compromiseAny 200 from an unexpected source
LockOutRealm locked-user count (JMX)Confirms the lockout mechanism is engaging (isLocked() exposed via JMX since 9.0.11)Lock count rising in step with the 401 rate
POST /manager/text/deploy or /manager/html/uploadAttacker deploying a WARAny such request outside a maintenance window
New WAR files in webapps/Persistence after compromiseFiles not placed by your deployment pipeline
AJP connector exposureAdjacent surface often probed in the same campaignPort 8009 listening on 0.0.0.0

Fixes

Immediate containment

If the flood is in progress:

  1. Block the flooding source IPs at the firewall or reverse proxy, not at Tomcat. Per-request blocking at the application layer still costs you a thread per attempt.
  2. If the Manager app is internet-exposed, remove it from the public path immediately. Either undeploy it, or front it with a network ACL restricting /manager/* and /host-manager/* to a VPN or bastion range.
  3. If a 200 from a previously flooding IP has already occurred, treat it as a compromise: rotate all Manager credentials, audit tomcat-users.xml, list webapps/ for unexpected WARs, and review the access log for any POST to deploy endpoints.

Making LockOutRealm effective

  1. Confirm LockOutRealm is actually wrapping the active realm in server.xml. A common misconfiguration is leaving the old UserDatabaseRealm as a sibling element instead of nesting it inside LockOutRealm.
  2. If you are on a vulnerable version (pre-9.0.118, pre-10.1.55, pre-11.0.22), upgrade. The case-sensitivity bypass is a meaningful amplifier for any attacker who knows the lockout threshold.
  3. Consider lowering failureCount for high-value administrative realms (for example, failureCount="3") and tuning lockOutTime to balance attacker friction against operator lockout risk.
  4. LockOutRealm is per-user, not per-IP. For distributed attacks you need IP-based rate limiting at the reverse proxy or a WAF in front of Tomcat.

Removing the attack surface

The strongest fix is to not expose the Manager app on the network at all.

  • In production, undeploy the Manager and Host Manager webapps if you deploy via CI/CD and do not need runtime redeploy.
  • If you need Manager, restrict it with a RemoteAddrValve in the app’s context.xml to allow only known management ranges, and require client-certificate authentication in addition to the realm.
  • Disable the shutdown port by setting port="-1" on the <Server> element in server.xml. Note that with this set, catalina.sh stop will not work; use systemctl stop or send SIGTERM to the JVM instead.
  • If AJP is enabled, ensure it binds to localhost and has secretRequired="true".

Prevention

  • Do not ship the Manager app on internet-facing instances. Default installations include Manager. Remove or restrict it.
  • Rotate default credentials. Any username in tomcat-users.xml matching tomcat, admin, manager, role1, or root with a default or dictionary password is a target.
  • Front Tomcat with a reverse proxy or WAF that rate-limits 401s per source IP. This catches the distributed brute force pattern that LockOutRealm cannot.
  • Keep Tomcat patched. CVE-2026-43513 is low severity in isolation but high impact when combined with weak credentials.
  • Alert on successful Manager access from unexpected sources. A 200 on /manager/html from a non-management IP should page, even if the 401 flood that preceded it was small.
  • Log enough to investigate. The default CLF pattern does not include User-Agent or response time. At minimum, add User-Agent so you can cluster attacker tooling.

How Netdata helps

  • Per-second HTTP status code dimensions on the Tomcat connector surface a 401 spike within seconds, not on the next minute rollup.
  • Individual status code breakdown separates 401s from the aggregate 4xx rate.
  • JMX collection surfaces LockOutRealm locked-user count and authentication failure counters, so you can correlate the 401 flood against lockout engagement and detect the case-sensitivity bypass signature: many 401s, few or no lockouts.
  • Source-IP concentration views distinguish single-IP brute force from distributed credential stuffing.
  • Anomaly detection on the 401 baseline trips an alert even when the absolute rate is below any fixed threshold, which matters for low-traffic instances where twenty 401s in a minute is already serious.
  • A 401 spike followed by a 200 on /manager/html on the same timeline makes the attack-to-compromise transition visible.