DEV Community

Arina Cholee
Arina Cholee

Posted on

How a Small Engineering Team Secured Their Self-Hosted Stack with SafeLine WAF

When people talk about Web Application Firewalls, the conversation often revolves around large enterprises, managed cloud services, or expensive SaaS subscriptions. But for many developers running self-hosted applications, the reality is different.

This is the story of a small engineering team running production workloads on their own infrastructure—and how they ended up deploying SafeLine WAF to solve very real, very practical problems.

The Context: Self-Hosted, Real Traffic, Real Attacks

The team maintains several public-facing services:

  • A customer portal built with a modern web framework
  • A few internal APIs exposed for mobile clients
  • Some legacy admin panels that can’t easily be rewritten

Everything is self-hosted:

  • Dockerized services
  • Nginx as a reverse proxy
  • Deployed on a VPS + on-prem hybrid setup

At first, this worked well. Until it didn’t.

The Problems Started Quietly

Logs began to show patterns that were hard to ignore:

  • Constant bot traffic probing /wp-login.php, /admin, /phpmyadmin
  • Automated scanners testing common SQL injection payloads
  • Credential-stuffing attempts against login endpoints
  • Crawlers aggressively scraping APIs, driving up bandwidth and CPU usage

Rate limiting at Nginx helped a bit. Firewall rules helped a bit. But none of it addressed the application-layer behavior.

What they needed wasn’t just blocking IPs—it was understanding intent.

Why Not Just Use Cloud WAF?

The obvious option was a managed cloud WAF.

But that came with trade-offs:

  • Data locality concerns
  • Limited control over detection logic
  • Recurring costs that didn’t scale well for small deployments
  • Dependency on external infrastructure for core security

For a team that already self-hosts everything, outsourcing the security layer felt like a mismatch.

So they started looking at self-hosted WAFs.

Enter SafeLine: A Different Approach

SafeLine caught their attention for one reason:

it wasn’t positioning itself as “rules and regexes”.

Instead, SafeLine focuses on semantic analysis of HTTP traffic—an approach that analyzes the meaning of requests, not just whether they match predefined patterns.

From a developer’s perspective, this mattered.

Deployment: Practical and Predictable

SafeLine was deployed as a reverse proxy in front of existing services:

Internet → SafeLine WAF → Nginx / App Containers
Enter fullscreen mode Exit fullscreen mode

Installation was straightforward using Docker:

  • No kernel modules
  • No traffic mirroring
  • No invasive changes to application code

Once traffic was routed through SafeLine, the team could immediately observe:

  • Request classification
  • Attack logs with clear reasoning
  • Minimal false positives on normal traffic

Most importantly: no noticeable performance degradation.

What Changed After Deployment

1. Bots Became Manageable

Previously, bot traffic blended in with real users.

After SafeLine:

  • Automated scanners were identified and blocked early
  • Scrapers were throttled without breaking legitimate clients
  • Login abuse dropped significantly

This wasn’t just IP-based blocking—it was behavior-based.

2. Application Attacks Were Stopped at the Edge

SafeLine intercepted:

  • SQL injection attempts embedded in query parameters
  • XSS payloads in form submissions
  • Suspicious API calls abusing edge cases

None of these required custom rules.

The team didn’t have to become WAF experts just to stay protected.

3. APIs Finally Had a Security Layer

One unexpected benefit was API security.

Instead of relying only on authentication and rate limits, SafeLine provided:

  • Request structure validation
  • Abnormal behavior detection
  • Protection against malformed or abusive payloads

For APIs exposed to mobile clients and third-party integrations, this added a missing layer of defense.

Strengths—and Honest Limitations

The team appreciated that SafeLine wasn’t trying to be everything.

What worked well:

  • Strong protection out of the box
  • Low false positive rate
  • Fully self-hosted, predictable behavior
  • Clear logs that developers could actually understand

What required consideration:

  • You still need basic ops knowledge (Docker, networking)
  • It’s not a CDN replacement
  • Tuning advanced scenarios takes some time

But for a team already comfortable running infrastructure, these were reasonable trade-offs.

The Outcome

After several weeks in production:

  • Security incidents dropped dramatically
  • Logs became quieter—and more meaningful
  • Engineers spent less time firefighting random traffic
  • Confidence in exposing services publicly increased

SafeLine didn’t replace good application design or authentication—but it made attacks boring again, which is exactly what a WAF should do.

For developers who:

  • Run self-hosted or hybrid infrastructure
  • Care about control, transparency, and data locality
  • Want real application-layer protection without handing traffic to a third party

A self-hosted WAF like SafeLine can make sense—not as a marketing checkbox, but as a practical engineering tool.

Sometimes, the best security improvement isn’t adding more code.

It’s putting something smart in front of it.

Top comments (0)