Setup

The creoline WAF is currently in the closed beta phase. As a result, setup is only possible through our new Customer Center. Due to ongoing development, some features of the creoline WAF are available only on a limited basis.



Setup

  • Request beta access through our support team
  • Log in to our new Customer Center at app.creoline.com
  • Select the menu item Web Application FirewallCreate Instance.



Enter the full domain name of the website you want to protect as the domain name. Be sure to strictly separate the main domain from any subdomains. For example, if your web server performs a 301 redirect from my-shop.com to www.my-shop.com, the www. version must also be added to the WAF instance.


For the Upstream Host, you can use either the IPv4 address or the DNS hostname of your server. Please note that you cannot use your website’s domain name here, as it will be redirected to our Web Application Firewall via DNS in the next step.



Modifying the DNS Zone

The next step involves modifying your domain’s DNS records. If you want to protect a primary domain, change the DNS records as follows with your DNS provider:


Primary Domain

Example for my-shop.com 

RR Type Host Value TTL
A my-shop.com 5.1.73.191 3600
AAAA my-shop.com 2a07:6fc0:1:0:7::213 3600


Subdomain

Example for www.my-shop.com 

RR Type Host Value TTL
A www.my-shop.com 5.1.73.191 3600
AAAA www.my-shop.com 2a07:6fc0:1:0:7::213 3600


Once we have validated the DNS records, we automatically issue a matching SSL certificate, completely eliminating the need for you to manually issue or renew certificates.



Configuration in the Web Application

In the future, HTTP requests to your web application will first be routed through the Web Application Firewall and then forwarded to your web application. If your application evaluates the client’s IP address—for example, for logging or to store specific information—you will need to adjust the application.


WAF Request Headers

The following HTTP headers are sent by the WAF to the upstream server in every request:

Header Example Description
WAF Instance
X-Waf-Instance-ID e975c46a-0d62-445a-88d2-fa478de425ac UUID of the WAF instance
X-Waf-Edge-IP 5.1.73.191 Edge IP address of the WAF
Request
X-Waf-Request-ID a850f804-c4fa-48b1-b9c9-e673a526811a Request ID
X-Waf-Request-Type dynamic Request type (static / dynamic)
Client
X-Original-IP 5.1.73.100 Client IP address
X-Forwarded-For 5.1.73.100, 5.1.73.191 Clients' IP addresses
X-Forwarded-Proto https Client protocol
GEO
X-Geo-Asn 205948 ASN
X-Geo-Country-Code DE Country code (ISO-3166 / Alpha-2)
X-Geo-Domain creoline.com Primary domain of the network
X-Geo-Name CREOLINE-AS Name of the network
X-Geo-Network 62.32.40.0/21 Network route
X-Geo-Org creoline GmbH Company name


General

The client’s IP address is included in the X-Original-IP request header. In addition, a chain of all IP addresses is sent via X-Forwarded-For.


Relevant GEO information is sent to the upstream via the X-Geo-* headers. For example, the client’s country can be determined via X-Geo-Country-Code.


Shopware / Symfony

In Shopware or Symfony, you must first configure a framework.yaml file that enables the internal TRUSTED_PROXIES configuration.


# config/packages/framework.yaml

framework:
    trusted_proxies: '%env(TRUSTED_PROXIES)%'


Next, the TRUSTED_PROXIES configuration can be set up in the .env.local file.

# .env.local

TRUSTED_PROXIES=127.0.0.1,5.1.73.196/32,5.1.73.88/32,5.1.73.201/32,5.1.73.79/32,5.1.73.86/32

Enter the source IP address of the load balancer in the TRUSTED_PROXIES configuration.



Configuration for an NGINX-based server

NGINX provides the set_real_ip_modules extension, which enables the translation of the original IP address. With the following adjustment, the correct IP addresses of the original clients are also stored in the NGINX access logs.


/etc/nginx/conf.d/zz-creoline-waf.conf
# creoline WAF
set_real_ip_from 5.1.73.196/32;
set_real_ip_from 5.1.73.88/32;
set_real_ip_from 5.1.73.201/32;
set_real_ip_from 5.1.73.79/32;
set_real_ip_from 5.1.73.86/32;

real_ip_header X-Forwarded-For;
real_ip_recursive on;


More information: https://nginx.org/en/docs/http/ngx_http_realip_module.html



Setup for a Plesk-based Web Server

Plesk includes the Fail2Ban package by default. Fail2Ban can be used to block unwanted IP addresses based on log entries. When the creoline WAF is enabled, incoming HTTP requests are sent from various IP addresses. An exception must be defined for Fail2Ban to prevent these IP addresses from being blocked unintentionally.



In the Plesk Control Panel, navigate to Tools & Settings → Blocking IP Addresses (Fail2Ban) → Trusted IP Addresses and add the following IP addresses:


IP Address Description
5.1.73.196 creoline WAF
5.1.73.88 creoline WAF
5.1.73.201 creoline WAF
5.1.73.79 creoline WAF
5.1.73.86 creoline WAF


More information on Fail2Ban



Blocking Direct Access

Determine the WAF instance ID via our Customer Center at app.creoline.com.

Then add the following additional NGINX directive in Plesk for the corresponding website:


if ($http_x_waf_instance_id != "47e43bc0-37f5-49e6-b3c7-9bfc7f3c620b") {
  return 403;
}



Timeouts

The creoline Web Application Firewall currently supports a request timeout of 120 seconds. If the upstream server cannot provide a response within the set timeout of 120 seconds, the request is aborted with an HTTP error 504. Requests aborted by the WAF are also marked with a Timeout flag in the access log.