Skip to main content

Production-ready security layer for AI applications

Project description

LLM Security Firewall

A production-ready security layer for AI applications that prevents prompt injection, data exfiltration, and policy violations.


The Problem

Companies deploying LLMs face critical security risks:

  • Prompt Injection - Users manipulate AI behavior with crafted inputs
  • Data Exfiltration - Sensitive data leaks through AI responses
  • Jailbreaks - Users bypass content policies and safety guardrails
  • PII Exposure - Personal information revealed in outputs
  • No Audit Trail - Can't track what users ask or what AI responds
  • Cost Overruns - Uncontrolled API usage drains budgets

The Solution

LLM Security Firewall sits between your application and AI providers, providing:

Real-time Threat Detection - Block attacks before they reach the AI ✅ Content Filtering - Redact sensitive data in requests and responses ✅ Policy Enforcement - Define and enforce usage policies ✅ Complete Audit Logs - Track every interaction for compliance ✅ Cost Control - Rate limiting and budget management ✅ Multi-Provider Support - Works with OpenAI, Anthropic, Azure, local models


Quick Start

Installation

pip install llm-security-firewall

Basic Usage

from llm_firewall import LLMFirewall, FirewallConfig

# Initialize firewall
config = FirewallConfig(
    providers=["openai", "anthropic"],
    enable_prompt_injection_detection=True,
    enable_pii_redaction=True,
    enable_audit_logging=True,
)

firewall = LLMFirewall(config)

# Protect your LLM calls
async with firewall.protect() as session:
    response = await session.chat(
        provider="openai",
        model="gpt-4",
        messages=[{"role": "user", "content": user_input}]
    )

# Firewall automatically:
# - Scans for prompt injection
# - Redacts PII
# - Logs the interaction
# - Enforces rate limits
# - Returns safe response

As Middleware (FastAPI)

from fastapi import FastAPI
from llm_firewall.middleware import LLMFirewallMiddleware

app = FastAPI()

# Add firewall middleware
app.add_middleware(
    LLMFirewallMiddleware,
    config=config,
    api_key_header="X-API-Key",
)

@app.post("/api/chat")
async def chat(request: ChatRequest):
    # Requests automatically protected by firewall
    return await llm_client.chat(request)

As Proxy Server

# Start proxy server
llm-firewall-proxy --config config.yaml --port 8080

# Point your LLM SDK at the proxy
export OPENAI_BASE_URL=http://localhost:8080/openai
export ANTHROPIC_BASE_URL=http://localhost:8080/anthropic

Features

🛡️ Threat Detection

Prompt Injection Detection

  • Pattern-based detection (known attack vectors)
  • ML-based classification (custom trained model)
  • Confidence scoring (0-100%)
  • Automatic blocking or warning mode

Jailbreak Prevention

  • Detects attempts to bypass content policies
  • Recognizes role-play attacks ("pretend you're...")
  • Identifies multi-turn manipulation attempts

Data Exfiltration Protection

  • Scans for requests asking for system prompts
  • Detects attempts to extract training data
  • Prevents credential/key harvesting

🔒 Content Security

PII Redaction

  • Automatic detection and redaction:
    • Email addresses
    • Phone numbers
    • Credit card numbers
    • SSN/Tax IDs
    • IP addresses
    • API keys/tokens
  • Reversible redaction (restore in logs)
  • Custom redaction patterns

Response Filtering

  • Scan AI responses for sensitive data
  • Block or redact policy violations
  • Custom content rules

Data Loss Prevention (DLP)

  • Prevent specific data types from being sent/received
  • Configurable allow/deny lists
  • Regex-based pattern matching

📊 Policy Engine

Access Control

  • User-based quotas (requests per hour/day)
  • Model access restrictions
  • Feature gating (by tier, role, etc.)
  • IP allowlist/denylist

Cost Management

  • Budget limits per user/team
  • Token usage tracking
  • Cost alerts and auto-cutoff
  • Provider cost comparison

Compliance

  • GDPR mode (data minimization)
  • HIPAA compliance features
  • SOC 2 audit logging
  • Data residency controls

📈 Observability

Audit Logging

  • Complete request/response logging
  • Threat detection events
  • Policy violations
  • Performance metrics
  • Export to SIEM (Splunk, Elastic, Datadog)

Real-time Monitoring

  • Live dashboard
  • Threat alerts (Slack, PagerDuty, webhook)
  • Usage analytics
  • Performance metrics

Analytics

  • User behavior analysis
  • Attack pattern detection
  • Model performance comparison
  • Cost optimization insights

Architecture

┌─────────────────┐
│   Application   │
└────────┬────────┘
         │
    ┌────▼────────────────────────────────────────┐
    │       LLM Security Firewall                 │
    │                                             │
    │  ┌──────────────────────────────────────┐  │
    │  │    Input Protection Layer             │  │
    │  │  • Prompt Injection Detection         │  │
    │  │  • PII Redaction                      │  │
    │  │  • Request Validation                 │  │
    │  └──────────────────────────────────────┘  │
    │                                             │
    │  ┌──────────────────────────────────────┐  │
    │  │    Policy Engine                      │  │
    │  │  • Access Control                     │  │
    │  │  • Rate Limiting                      │  │
    │  │  • Cost Management                    │  │
    │  └──────────────────────────────────────┘  │
    │                                             │
    │  ┌──────────────────────────────────────┐  │
    │  │    Output Protection Layer            │  │
    │  │  • Response Scanning                  │  │
    │  │  • Content Filtering                  │  │
    │  │  • Data Redaction                     │  │
    │  └──────────────────────────────────────┘  │
    │                                             │
    │  ┌──────────────────────────────────────┐  │
    │  │    Audit & Monitoring                 │  │
    │  │  • Event Logging                      │  │
    │  │  • Metrics Collection                 │  │
    │  │  • Alert Management                   │  │
    │  └──────────────────────────────────────┘  │
    └────────┬────────────────────────────────────┘
             │
    ┌────────▼────────┐
    │  AI Providers   │
    │  • OpenAI       │
    │  • Anthropic    │
    │  • Azure        │
    │  • Local LLMs   │
    └─────────────────┘

Configuration

YAML Configuration

# config.yaml
firewall:
  # Detection settings
  detection:
    prompt_injection:
      enabled: true
      threshold: 0.7  # 70% confidence
      action: block  # or 'warn'

    jailbreak:
      enabled: true
      patterns:
        - "ignore previous instructions"
        - "pretend you are"
        - "act as if"

    data_exfiltration:
      enabled: true
      sensitive_keywords:
        - "api key"
        - "password"
        - "secret"

  # Content filtering
  content:
    pii_redaction:
      enabled: true
      types:
        - email
        - phone
        - ssn
        - credit_card

    response_filtering:
      enabled: true
      block_patterns:
        - r"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b"

  # Policy engine
  policy:
    rate_limiting:
      enabled: true
      limits:
        default: 100/hour
        premium: 1000/hour

    cost_management:
      enabled: true
      budget_limits:
        daily: 100.00
        monthly: 2000.00

    access_control:
      allowed_models:
        - gpt-4
        - gpt-4-turbo
        - claude-3-sonnet

  # Logging & monitoring
  logging:
    audit_log:
      enabled: true
      destination: postgresql
      retention_days: 90

    alerts:
      webhook_url: https://hooks.slack.com/services/YOUR/WEBHOOK
      alert_on:
        - high_risk_threat
        - policy_violation
        - budget_exceeded

Environment Variables

# Provider API keys
export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...

# Firewall settings
export LLM_FIREWALL_CONFIG=config.yaml
export LLM_FIREWALL_LOG_LEVEL=INFO
export LLM_FIREWALL_DATABASE_URL=postgresql://localhost/firewall

# Security
export LLM_FIREWALL_SECRET_KEY=your-secret-key
export LLM_FIREWALL_ENCRYPTION_KEY=your-encryption-key

Use Cases

Enterprise SaaS Application

# Protect customer-facing chatbot
firewall = LLMFirewall(config)

@app.post("/api/chat")
async def chat(message: str, user_id: str):
    # Enforce per-user rate limits
    # Block prompt injection
    # Redact PII from user messages
    # Log all interactions for compliance

    async with firewall.protect(user_id=user_id) as session:
        return await session.chat(
            provider="anthropic",
            model="claude-3-sonnet",
            messages=[{"role": "user", "content": message}]
        )

Internal Developer Tools

# Protect code generation assistant
config = FirewallConfig(
    enable_prompt_injection_detection=True,
    enable_code_safety_analysis=True,  # Scan generated code
    enable_cost_tracking=True,
    cost_alerts={
        "daily": 50.00,
        "per_request": 0.50,
    }
)

firewall = LLMFirewall(config)

RAG Application

# Protect retrieval-augmented generation
async with firewall.protect() as session:
    # Prevent prompt injection in retrieved documents
    # Block attempts to extract training data
    # Redact sensitive data from vector DB results

    results = vector_db.search(query)
    response = await session.chat(
        provider="openai",
        model="gpt-4",
        messages=[
            {"role": "system", "content": "Use these docs: " + results},
            {"role": "user", "content": user_query}
        ]
    )

Deployment

Docker

# Pull image
docker pull llmsecurity/firewall:latest

# Run as proxy
docker run -p 8080:8080 \
  -e OPENAI_API_KEY=$OPENAI_API_KEY \
  -v $(pwd)/config.yaml:/app/config.yaml \
  llmsecurity/firewall:latest

Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: llm-firewall
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: firewall
        image: llmsecurity/firewall:latest
        env:
        - name: OPENAI_API_KEY
          valueFrom:
            secretKeyRef:
              name: llm-api-keys
              key: openai
        ports:
        - containerPort: 8080

AWS Lambda (Serverless)

# lambda_handler.py
from llm_firewall import LLMFirewall, FirewallConfig

config = FirewallConfig.from_env()
firewall = LLMFirewall(config)

def lambda_handler(event, context):
    user_input = event['body']['message']

    async with firewall.protect() as session:
        response = await session.chat(
            provider="openai",
            model="gpt-4",
            messages=[{"role": "user", "content": user_input}]
        )

    return {"statusCode": 200, "body": response}

Performance

Latency Overhead:

  • Pattern-based detection: ~5-10ms
  • ML-based detection: ~20-50ms
  • PII redaction: ~10-15ms
  • Total average: ~35-75ms added latency

Throughput:

  • 10,000+ requests/sec (pattern-based only)
  • 2,000+ requests/sec (full protection)
  • Scales horizontally with Redis cache

Resource Usage:

  • Memory: ~200MB base + ~50MB per 1000 req/sec
  • CPU: ~0.5 cores at 1000 req/sec

Pricing

Open Source (MIT License)

  • ✅ Core security features
  • ✅ Self-hosted deployment
  • ✅ Community support

Cloud (SaaS)

  • Starter: $99/month

    • 100K requests/month
    • Basic threat detection
    • 30-day audit logs
  • Professional: $499/month

    • 1M requests/month
    • Advanced ML detection
    • 90-day audit logs
    • Slack/PagerDuty alerts
  • Enterprise: Custom pricing

    • Unlimited requests
    • Custom ML models
    • Unlimited log retention
    • SLA & dedicated support
    • On-premise deployment

Roadmap

Q1 2026

  • Core firewall MVP
  • Prompt injection detection
  • PII redaction
  • Web dashboard
  • SIEM integrations

Q2 2026

  • Advanced ML models
  • Multi-language support
  • Custom policy DSL
  • Terraform provider

Q3 2026

  • Real-time collaboration features
  • Advanced analytics
  • Compliance certifications
  • Enterprise features

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE for details.

Support


Built with ❤️ for secure AI deployments

Proudly part of the AfterDark Security ecosystem

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

afterdark_llm_firewall-0.1.0.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

afterdark_llm_firewall-0.1.0-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file afterdark_llm_firewall-0.1.0.tar.gz.

File metadata

  • Download URL: afterdark_llm_firewall-0.1.0.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for afterdark_llm_firewall-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1537e8647aec8024161b827857587a18932dca3564b167e02ed8bfcf85dadd57
MD5 648bab363f4c38297fc1310fcd4df120
BLAKE2b-256 c56018fa5810ff205b5164221a92988fb08fe41def4a92f977740fce29825a65

See more details on using hashes here.

File details

Details for the file afterdark_llm_firewall-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for afterdark_llm_firewall-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8b2c2ef41d41dcc814e77868f5f4834f461db29cb486ee8d1391292e4d8bfd0c
MD5 2359afce58651eace284de0d78700755
BLAKE2b-256 2687794b822a25a26a86ba8ab9fa971ed585fbfdd2d7bd6e87afef33343fb99c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page