Docs / Security / Web Application Firewall with ModSecurity

Web Application Firewall with ModSecurity

By Admin · Jan 12, 2026 · Updated Apr 23, 2026 · 562 views · 2 min read

What is ModSecurity?

ModSecurity is an open-source WAF (Web Application Firewall) that inspects HTTP requests and blocks attacks like SQL injection, XSS, and file inclusion.

Installation with Nginx

sudo apt install -y libmodsecurity3 libmodsecurity-dev
sudo apt install -y libnginx-mod-http-modsecurity

OWASP Core Rule Set

cd /etc/nginx
sudo git clone https://github.com/coreruleset/coreruleset.git modsecurity-crs
cd modsecurity-crs
sudo cp crs-setup.conf.example crs-setup.conf

Configuration

# /etc/nginx/modsecurity/modsecurity.conf
SecRuleEngine On
SecRequestBodyAccess On
SecRequestBodyLimit 13107200
SecResponseBodyAccess Off

# Logging
SecAuditEngine RelevantOnly
SecAuditLog /var/log/modsecurity/audit.log
SecAuditLogParts ABCFHZ

# Include OWASP CRS
Include /etc/nginx/modsecurity-crs/crs-setup.conf
Include /etc/nginx/modsecurity-crs/rules/*.conf

Nginx Integration

server {
    listen 443 ssl http2;
    server_name example.com;

    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

Tuning False Positives

Start in detection mode:

SecRuleEngine DetectionOnly

Review logs, then whitelist legitimate requests:

# Disable specific rule for a path
SecRule REQUEST_URI "@beginsWith /api/webhook" \
    "id:1001,phase:1,nolog,allow,ctl:ruleRemoveById=942100"

Common Rules Triggered

Rule ID Attack Type Description
941100 XSS Cross-site scripting attempt
942100 SQLi SQL injection attempt
949110 Inbound Anomaly score exceeded
932100 RCE Remote command execution
930100 Path Traversal ../ in request

Warning Never deploy ModSecurity in blocking mode without testing in DetectionOnly first. Overzealous rules can break legitimate functionality like rich text editors, file uploads, and API calls with JSON payloads.

Was this article helpful?