mTLS avec bypass d'ip whitelist

Bonjour,
J’aurais besoin d’aide avec le plugin mTLS.

Si TheophileDiot passe par ici: Merci beaucoup pour ce WAF il est vraiment incroyable et franchement déjà bien abouti.

J’utilise la version 1.6.9 en docker.
J’utilise les variables d’environnement docker.
Je n’ai pas d’erreur dans les logs du scheduler.
Tout fonctionne très bien mTLS compris, cependant je n’arrive pas a la faire fonctionner avec le besoin suivant.
J’ai besoin de faire fonctionner la mTLS avec un bypass des ips whitelist.
C’est dire que j’aimerais que les clients derrière une ip whitelisté puisse accéder au services sans certificat.
J’ai tenté avec MTLS_VERIFY_CLIENT=optional mais si le client refuse de fournir le certificat il accède tout de même au service.
Avec MTLS_VERIFY_CLIENT=on si mon client derrière une ip whitlisté refuse de fournir le certificat mon accès est refusé avec ce message?

400 Bad Request
No required SSL certificate was sent
Nginx

(C’est dommage d’ailleurs de ne pas avoir une belle page d’erreur faite par bunkerweb elles sont vraiment top.)

J’ai essayé de jouer avec PLUGINS_ORDER_ACCESS sans succès.

PLUGINS_ORDER_ACCESS: “ssl whitelist letsencrypt blacklist mtls greylist country dnsbl bunkernet crowdsec reversescan limit authbasic misc cors securitytxt robotstxt antibot”

Voici mes paramètres récupérés depuis l’ui pour être plus pertinant.

Global Settings

MULTISITE=yes
API_WHITELIST_IP=127.0.0.0/8 10.20.30.0/24
USE_BAD_BEHAVIOR=no
BLACKLIST_COMMUNITY_LISTS=ua:mitchellkrogza-bad-user-agents ip:laurent-minne-data-shield-aggressive ip:laurent-minne-data-shield-critical
USE_GZIP=yes
AUTO_LETS_ENCRYPT=yes
EMAIL_LETS_ENCRYPT=acme_dS2uz3T1@fqdn.com
LETS_ENCRYPT_CHALLENGE=dns
LETS_ENCRYPT_DNS_PROVIDER=gandi
LETS_ENCRYPT_DNS_CREDENTIAL_ITEM=token JthYtZUKZOt5cFp9cjkglAyhK384V7Qt #Random token not the true one
USE_MODSECURITY=no
USE_REAL_IP=yes
REAL_IP_FROM=10.10.10.1
USE_REDIS=yes
REDIS_HOST=redis
UI_HOST=http://bw-ui:7000
WHITELIST_IP=1.2.3.4/32 5.6.7.8/32

Services

IS_DRAFT=no
SERVER_NAME=service.fqdn.com
USE_BAD_BEHAVIOR=no
BLACKLIST_COMMUNITY_LISTS=ua:mitchellkrogza-bad-user-agents ip:laurent-minne-data-shield-aggressive ip:laurent-minne-data-shield-critical
USE_GZIP=yes
GZIP_PROXIED=expired no-cache no-store private auth
AUTO_LETS_ENCRYPT=yes
EMAIL_LETS_ENCRYPT=acme_dS2uz3T1@fqdn.com
LETS_ENCRYPT_CHALLENGE=dns
LETS_ENCRYPT_DNS_PROVIDER=gandi
LETS_ENCRYPT_DNS_CREDENTIAL_ITEM=token JthYtZUKZOt5cFp9cjkglAyhK384V7Qt
USE_MODSECURITY=no
USE_MTLS=yes
MTLS_CA_CERTIFICATE=/etc/bunkerweb/ca.pem
MTLS_VERIFY_CLIENT=on
MTLS_CRL=/etc/bunkerweb/ca.crl
USE_REAL_IP=yes
REAL_IP_FROM=10.10.10.1
USE_REVERSE_PROXY=yes
REVERSE_PROXY_HOST=https://192.168.44.103:443
REVERSE_PROXY_HEADERS=X-Real-IP $remote_addr;X-Forwarded-For $proxy_add_x_forwarded_for
WHITELIST_IP=1.2.3.4/32 5.6.7.8/32

Merci d’avoir pris le temps de me lire.
Merci d’avance pour votre aide :slight_smile:

Hello, sur ça je ne sais pas trop, le cas d’usage n’as peut être pas été pensé,

@theophile_bunkerity

Mais en tant que tel, sans quelque chose d’explicite de la part des devs, je ne pense pas que ce soit possible, vu que c’est bloqué au niveau handshake TLS, donc avant même l’execution de plugins, etc.

Je laisse téophile clarifié

1 Like