Un VPS public sans firewall en 2026, c’est un serveur qui sera scanné dans les 5 minutes suivant sa mise en ligne et tenté pour brute-force SSH dans l’heure. Heureusement, Hetzner Cloud propose un Cloud Firewall gratuit et puissant qui se configure en quelques clics. Couplé à des bonnes pratiques sur le VPS lui-même (UFW, fail2ban, SSH hardening, mises à jour automatiques), vous obtenez une posture de sécurité solide.
Cet article complète notre guide Hetzner Cloud Afrique.
Hetzner Cloud Firewall : pourquoi et comment
- Gratuit et illimité (autant de règles que vous voulez)
- Avant le VPS : économise les ressources kernel/iptables du VPS
- Multi-VPS : un firewall peut être attaché à plusieurs VPS (politique uniforme)
- Configurable via API : Terraform, Ansible, scripts
Étape 1 — Créer un Firewall Cloud
- Console Hetzner → Firewalls → Create Firewall
- Nom :
web-public - Règles entrantes : SSH (TCP 22) limité à votre IP, HTTP (80) et HTTPS (443) ouverts à tous
- Règles sortantes : Allow All par défaut
- Apply to Resources → cocher votre VPS
Étape 2 — Hardening SSH
# /etc/ssh/sshd_config
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitEmptyPasswords no
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3
LoginGraceTime 30
AllowUsers deploy admin
systemctl restart ssh
Étape 3 — fail2ban
apt install -y fail2ban
# /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
backend = systemd
[sshd]
enabled = true
port = 22
maxretry = 3
systemctl restart fail2ban
fail2ban-client status sshd
Étape 4 — UFW comme deuxième barrière
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
ufw status verbose
Étape 5 — Mises à jour automatiques
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
# Décommenter la ligne security dans
# /etc/apt/apt.conf.d/50unattended-upgrades
systemctl status unattended-upgrades
Étape 6 — Audit Lynis
apt install -y lynis
lynis audit system
# Voir les recommandations dans le rapport
ss -tulpn | grep LISTEN
ps aux | awk '$1=="root"'
Étape 7 — Surveillance et alertes
- fail2ban envoie des emails sur ban
- Hetzner Cloud Monitoring avec alertes email
- Uptime Kuma auto-hébergé pour HTTP checks
- auditd sur fichiers sensibles si conformité requise
Configuration Terraform
resource "hcloud_firewall" "web_public" {
name = "web-public"
rule {
direction = "in"
protocol = "tcp"
port = "22"
source_ips = ["MA_IP_FIXE/32", "10.0.0.0/8"]
}
rule {
direction = "in"
protocol = "tcp"
port = "80"
source_ips = ["0.0.0.0/0", "::/0"]
}
rule {
direction = "in"
protocol = "tcp"
port = "443"
source_ips = ["0.0.0.0/0", "::/0"]
}
}
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| SSH bloqué après config Firewall | IP changée | Ouvrir temporairement, mettre à jour règle |
| fail2ban ban votre IP | Tests SSH répétés | fail2ban-client unban [IP] |
| Brute-force malgré tout | SSH 0.0.0.0/0 | Restreindre par IP via Firewall |
Pour aller plus loin
- Guide Hetzner Cloud Afrique
- Snapshots Hetzner
- Tailscale VPN
- Documentation Hetzner Firewall : docs.hetzner.com/cloud/firewalls