Skip to main content

Web Application Templates

Protection templates for common web applications.

wordpress

WordPress login brute force and XML-RPC attack protection.

SettingDefault
Port80, 443
Log Path/var/log/apache2/access.log
Max Retry5
Find Time10 minutes
Ban Time1 hour

Detected Patterns

  • /wp-login.php access (any response)
  • /xmlrpc.php POST requests
  • /wp-admin/ authentication failures

Why Catch 200 Responses?

WordPress returns 200 for failed logins (bad UX practice). The filter catches all login attempts and relies on maxretry threshold.

Configuration Tips

Nginx Log Path:

logpath: /var/log/nginx/access.log

Multiple Sites:

logpath: /var/log/nginx/*access.log

wordpress-hard

Aggressive WordPress protection - catches exploit scanners.

SettingDefault
Port80, 443
Log Path/var/log/apache2/access.log
Max Retry2
Find Time10 minutes
Ban Time24 hours

Detected Patterns

  • /wp-config.php access attempts (configuration file)
  • /wp-includes/*.php? with query strings
  • /wp-content/plugins/*.php? with query strings
  • User enumeration via REST API

Use Case

Enable for sites under active attack or when you notice scanning in logs.

warning

May cause false positives with some plugins that have unusual URL patterns.

phpmyadmin

phpMyAdmin authentication failures.

SettingDefault
Port80, 443
Log Path/var/log/apache2/error.log
Max Retry5
Find Time10 minutes
Ban Time1 hour

Detected Patterns

  • User denied messages
  • 401 responses to /phpmyadmin/ or /pma/

Security Recommendation

phpMyAdmin is heavily targeted. Consider:

  1. Rename the URL path
  2. Restrict by IP
  3. Add HTTP Basic Auth layer
  4. Use SSH tunnel instead

nextcloud

Nextcloud login brute force protection.

SettingDefault
Port80, 443
Log Path/var/www/nextcloud/data/nextcloud.log
Max Retry5
Find Time10 minutes
Ban Time1 hour

Detected Patterns

  • Login failed messages
  • Trusted domain errors

Log Path

Nextcloud has its own log file, not the web server log:

# Standard installation
logpath: /var/www/nextcloud/data/nextcloud.log

# Docker (example)
logpath: /path/to/nextcloud/data/nextcloud.log

Configuration

Ensure Nextcloud logs to file:

// config/config.php
'log_type' => 'file',
'logfile' => '/var/www/nextcloud/data/nextcloud.log',
'loglevel' => 2,

grafana

Grafana dashboard login failures.

SettingDefault
Port3000
Log Path/var/log/grafana/grafana.log
Max Retry5
Find Time10 minutes
Ban Time1 hour

Detected Patterns

  • "Invalid username or password"
  • "invalid username or password" (different log format)

Log Path Options

SetupPath
Standard/var/log/grafana/grafana.log
DockerContainer log or volume mount

FTP Templates

vsftpd

SettingDefault
Port20, 21, 990
Log Path/var/log/vsftpd.log
Max Retry5

proftpd

SettingDefault
Port20, 21, 990
Log Path/var/log/proftpd/proftpd.log
Max Retry5

pure-ftpd

SettingDefault
Port20, 21, 990
Log Path/var/log/syslog
Max Retry5

Proxy Templates

traefik-http

Traefik reverse proxy errors (JSON logs).

SettingDefault
Port80, 443
Log Path/var/log/traefik/access.log
Max Retry10

Detects 401/403/404 responses from JSON-formatted access logs.

caddy-http

Caddy server errors (JSON logs).

SettingDefault
Port80, 443
Log Path/var/log/caddy/access.log
Max Retry10