Skip to content

Sécurisation avancée Caddy : blocage des scans & logs propres

1. Bloc (bot-protection)

shell
(bot-protection) {
	@_bots {
		path_regexp wp_paths ^/(wp-admin|wp-content|wp-includes|wp-.*\.php|xmlrpc\.php|\.env(\..*)?$|phpinfo.*|\.git.*|\.aws.*|\.htaccess|\.DS_Store|\.vscode|\.idea|\.editorconfig|composer\.(json|lock)|package(-lock)?\.json|yarn\.lock|docker-compose\.ya?ml|application\.properties|settings\.py|config\.env|.*\.(bak|sql|ini|log|conf|yml|xml|old))$
	}
	respond @_bots "Access denied" 403
}

Rôle :

  • Bloquer immédiatement toutes les requêtes HTTP visant des chemins ou fichiers sensibles (WordPress, dumps, configs, fichiers cachés, etc).
  • Répondre par un HTTP 403 ("Access denied") avant que la requête atteigne le backend ou PHP.

Utilité :

  • Stoppe les scans automatisés et tentatives d’exploitation courantes.
  • Allège la charge backend et protège toute stack (WordPress, Node, Symfony, Python…).

2. Bloc (log-filter)

shell
(log-filter) {
	@localIPs remote_ip 192.168.0.254 127.0.0.1 ::1
	log_skip @localIPs
	log {
		output file /var/log/caddy/requests.json {
			roll_size 1mb
			roll_keep 20
			roll_keep_for 48h
		}
		format json
	}
}

Rôle :

  • Ignorer toutes les requêtes des IPs locales pour ne pas polluer les logs.
  • Logger tout le reste au format JSON dans /var/log/caddy/requests.json (rotation automatique).

Utilité :

  • Permet un audit ou une détection de bots claire, sans bruit lié à l’administration ou au monitoring local.
  • Le log JSON est facilement exploitable par script, outil ou SIEM.

3. Exemple d’utilisation sur un domaine

shell
mailhog.simschab.cloud {
	import log-filter
	import bot-protection
	basic_auth {
		simon $2a$14$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	}
	reverse_proxy localhost:8025
}

Effet combiné :

  • Toute requête suspecte est bloquée avant même d’atteindre Mailhog.
  • Toutes les requêtes hors IP locales sont tracées dans un log JSON dédié (pour supervision ou analyse).
  • L’accès à l’interface Mailhog est protégé par mot de passe.

Poursuivre vers le script qui traite le fichier de log : Surveillance automatique des IPs malveillantes via les logs Caddy.

Résumé

  • Sécurité immédiate : stoppe les scans & bots avant le backend.
  • Logs propres et exploitables : tout le trafic non-local est tracé pour l’audit ou le monitoring.
  • Blocs factorisables : ces règles peuvent être importées dans tous tes vhosts/services Caddy.