Skip to main content
Chaque serveur dédié Hetzner de la plateforme Kaeyros exécute UFW (Uncomplicated Firewall) avec une politique restrictive. Cette page décrit les règles standard, les exceptions pour le cluster Kubernetes et la détection des scans de ports via psad.

Politique UFW par défaut

La configuration de base suit le principe du moindre privilège :
  • Entrant (incoming) : deny par défaut
  • Sortant (outgoing) : allow par défaut
  • Routage (forwarded) : deny par défaut
Seules les connexions explicitement autorisées peuvent atteindre les services exposés.

Règles UFW type

Voici les commandes appliquées par Ansible lors du provisionnement d’un nouveau serveur :
ufw-rules.sh
Les adresses IP 203.0.113.0/24 et 198.51.100.0/24 sont des exemples. Les plages réelles sont définies dans group_vars/all/ufw.yml du repo Ansible. Contactez devops@kaeyros-analytics.com pour obtenir les plages actuelles si vous devez ajouter un nouveau site.

Ports Kubernetes (réseau privé Hetzner)

Les serveurs membres du cluster RKE2 ouvrent des ports supplémentaires, mais uniquement sur le réseau privé Hetzner (10.0.0.0/8). Ces règles ne sont pas exposées sur l’interface publique :
ufw-k8s.sh
Ne jamais ouvrir les ports Kubernetes (6443, 2379-2380, 10250) sur l’interface publique. L’accès à l’API server depuis l’extérieur passe obligatoirement par le VPN WireGuard ou la bastion SSH.

Détection des scans avec psad

psad (Port Scan Attack Detector) analyse les logs du pare-feu pour détecter les comportements suspects et remonte les alertes vers Wazuh.

Fonctionnement

  1. UFW logge les paquets rejetés via iptables -N ufw-logging-input
  2. psad scrute /var/log/ufw.log toutes les 15 secondes
  3. En cas de scan détecté (seuil : 15 ports distincts en 60 secondes), psad génère une alerte
  4. L’alerte est transmise à l’agent Wazuh local, qui la remonte au serveur Wazuh central

Configuration psad clé

psad.conf

Commandes de gestion

Vérification de la configuration

Après toute modification des règles UFW, attendez 60 secondes avant de fermer votre session SSH actuelle. Testez la connexion dans un nouveau terminal pour vous assurer que vous n’avez pas bloqué votre propre accès.