Lookout
000 015 030 045 060 075 090 105 120 135 150 165 180 195 210 225 240 255 270 285 300 315 330 345 360
3 min read Tom Shafer

Security monitoring for Laravel: auth failures and suspicious activity

Laravel security monitoring spots the credential-stuffing run and the privilege probe before they become a breach. Here's what to watch and how to alert on it.

Most breaches don't start with a Hollywood-style zero-day. They start with a slow drip of failed logins, a script trying ten thousand passwords against one account, or a curious user poking at a URL they shouldn't. Laravel security monitoring is about noticing that drip while it's still a drip. The frustrating part is that your app already emits these signals — failed authentication, blocked authorization checks, validation errors on auth routes — but they scroll past in the logs, indistinguishable from normal traffic. The goal isn't to turn your error tracker into a SIEM. It's to catch the handful of patterns that reliably precede trouble, and to be told about them in time to act.

The signals that matter

You don't need to watch everything. A short list catches most of the early warning signs:

  • Failed logins — a burst against one account is targeted; a burst across many accounts is credential stuffing.
  • Authorization denials — Laravel gates and policies failing tell you someone reached for something they shouldn't have.
  • Spikes in 401/403 responses — a probe walking your routes.
  • Password reset abuse — repeated reset requests for accounts that aren't theirs.

Each is normal in small numbers and alarming in volume. The trick is seeing the volume.

Why logs alone don't cut it

Grepping logs after an incident is forensics, not defense. By the time you're reading them, the run already happened. What you want is the same data grouped and counted in real time: one issue that says "412 failed logins for user 88 in the last hour," not 412 lines you'll never scroll to. Grouping turns a flood into a fact you can act on.

Setting it up with Lookout

Lookout has watchers for authentication and for Laravel gates, plus a security view that surfaces these patterns. Install from your app root:

composer require lookout/tracing
php artisan lookout:install

Point it at your project:

LOOKOUT_LARAVEL=true
LOOKOUT_API_KEY=your-project-api-key
LOOKOUT_URL=https://your-lookout-host.example.com

The provider is auto-discovered. Failed auth attempts and denied gate checks are captured and grouped, so a credential-stuffing run shows up as a single rising issue instead of disappearing into ordinary traffic. Be thoughtful about context — capture enough to investigate without storing secrets or full credentials.

Alert on the pattern, not the event

One failed login is Tuesday. Three hundred in an hour is an incident. Set an alert rule on a threshold over a 1h or 24h window, routed to Email or Slack, so the pattern pages you and the single events don't. This is the whole game with security signals: the individual events are noise, and only the rate is meaningful. Tune the threshold to your normal baseline and let it watch while you sleep.

Pair it with the basics

Monitoring complements, it doesn't replace, the fundamentals — rate limiting on auth routes, strong password policies, and two-factor where it counts. Think of security monitoring as the smoke detector: it won't fireproof the house, but it'll wake you while there's still time to do something.

You can't defend what you can't see. Make your auth and authorization signals visible, alert on the rates that matter, and you'll meet the next probe early instead of reading about it in a post-mortem. Start a free Lookout project — 10,000 events a month, one project, no credit card — and put a watch on the front door.

laravel security monitoring authentication