Contexte
Vous gérez un VPS Winheberg et vous avez repéré une adresse IP suspecte dans vos logs ? Un bot qui spamme votre formulaire de contact, un script qui tente de se connecter en SSH des centaines de fois, ou simplement un visiteur indésirable que vous voulez écarter ? Bloquer une IP sur votre VPS est une opération simple et efficace qui prend moins d'une minute.
Ce guide vous présente les trois méthodes les plus utilisées pour bloquer une IP sur un VPS Linux, selon le pare-feu installé sur votre système.
Prérequis
- Un VPS Winheberg en service avec un accès root en SSH
- L'IP (ou la plage d'IP) que vous souhaitez bloquer, identifiée dans vos logs
Quelle méthode choisir selon votre distribution ?
Le choix de l'outil dépend du pare-feu déjà installé sur votre VPS.
| Distribution | Pare-feu recommandé |
|---|---|
| Ubuntu | UFW |
| Debian | UFW (installable) |
| AlmaLinux, Rocky Linux, Fedora | firewalld |
| Toutes distributions, dont Alpine | iptables |
- UFW est le pare-feu par défaut sur Ubuntu, et le plus simple à utiliser. Il est aussi facilement installable sur Debian
- firewalld est le pare-feu par défaut sur AlmaLinux, Rocky Linux et Fedora. Il offre une gestion avancée par zones
- iptables est l'outil bas niveau qui fonctionne sur toutes les distributions Linux, y compris Alpine. C'est la solution universelle si vous n'avez pas envie d'installer un pare-feu en plus
Utilisez le pare-feu déjà installé sur votre système plutôt que d'en empiler plusieurs. Mélanger UFW et iptables manuels peut créer des conflits difficiles à diagnostiquer.
Bloquer une IP selon votre pare-feu
UFW (Uncomplicated Firewall) est de loin la solution la plus simple. La syntaxe est claire et lisible.
Installer UFW (si ce n'est pas déjà fait)
Sur Ubuntu, UFW est généralement déjà installé. Sur Debian, ajoutez-le avec cette commande.
apt install ufw -y
Bloquer une IP unique
Pour bloquer une adresse IP précise.
ufw deny from 203.0.113.42
Remplacez 203.0.113.42 par l'IP que vous voulez bloquer. La règle est appliquée immédiatement.
Bloquer toute une plage d'IP
Si vous voulez bloquer un bloc complet (par exemple toute une plage utilisée par un attaquant), utilisez la notation CIDR.
ufw deny from 203.0.113.0/24
Cette commande bloque les 256 adresses de 203.0.113.0 à 203.0.113.255.
Bloquer une IP uniquement sur un port
Si vous voulez bloquer une IP uniquement pour un service spécifique (par exemple, l'empêcher d'accéder au SSH mais lui laisser le port 80).
ufw deny from 203.0.113.42 to any port 22
Vérifier les règles actives
Pour voir toutes les règles UFW en place.
ufw status numbered
Vous verrez quelque chose comme.
Status: active
To Action From
-- ------ ----
[ 1] Anywhere DENY 203.0.113.42
[ 2] 22/tcp ALLOW Anywhere
Supprimer une règle de blocage
Pour retirer une règle, utilisez son numéro.
ufw delete 1
Ou directement en spécifiant l'IP.
ufw delete deny from 203.0.113.42
firewalld est le pare-feu par défaut sur l'écosystème Red Hat. Il fonctionne par zones et avec des règles riches (rich rules) pour le filtrage par IP.
Bloquer une IP unique
Pour bloquer une adresse IP avec firewalld, on utilise une rich rule.
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.42" reject'
firewall-cmd --reload
L'option --permanent rend la règle persistante après un redémarrage. firewall-cmd --reload applique les changements.
Bloquer toute une plage d'IP
Pour bloquer un bloc CIDR complet.
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" reject'
firewall-cmd --reload
Bloquer une IP uniquement sur un port
Pour bloquer une IP uniquement sur le port SSH (22).
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.42" port port="22" protocol="tcp" reject'
firewall-cmd --reload
Vérifier les règles actives
Pour voir toutes les rich rules en place.
firewall-cmd --list-rich-rules
Supprimer une règle de blocage
Pour retirer une règle, utilisez --remove-rich-rule avec exactement la même syntaxe que pour l'ajout.
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="203.0.113.42" reject'
firewall-cmd --reload
reject renvoie un paquet d'erreur à l'expéditeur, tandis que drop ignore silencieusement les paquets. drop est généralement préférable face à des attaquants pour ne pas leur confirmer que le port est filtré.
iptables est l'outil bas niveau de gestion du pare-feu Linux. Il fonctionne sur toutes les distributions sans installation supplémentaire, sauf Alpine où il faut l'installer.
Sur Alpine, installer iptables
apk add iptables
Bloquer une IP unique
Pour bloquer une adresse IP en entrée.
iptables -A INPUT -s 203.0.113.42 -j DROP
L'action DROP ignore silencieusement les paquets venant de cette IP. Pour renvoyer une erreur à l'expéditeur, utilisez REJECT à la place.
Bloquer toute une plage d'IP
iptables -A INPUT -s 203.0.113.0/24 -j DROP
Bloquer une IP uniquement sur un port
Pour bloquer une IP seulement sur le port SSH.
iptables -A INPUT -s 203.0.113.42 -p tcp --dport 22 -j DROP
Vérifier les règles actives
iptables -L INPUT -n -v --line-numbers
Vous verrez quelque chose comme.
Chain INPUT (policy ACCEPT)
num pkts bytes target prot opt in out source destination
1 0 0 DROP all -- * * 203.0.113.42 0.0.0.0/0
Supprimer une règle de blocage
Pour retirer une règle, utilisez son numéro de ligne (visible avec --line-numbers).
iptables -D INPUT 1
Rendre les règles persistantes
Par défaut, les règles iptables sont perdues au redémarrage. Pour les conserver, vous devez les sauvegarder.
Sur Debian et Ubuntu
apt install iptables-persistent -y
netfilter-persistent save
Sur AlmaLinux, Rocky Linux et Fedora
Si vous utilisez iptables au lieu de firewalld, installez le service de sauvegarde.
dnf install iptables-services -y
service iptables save
Sur Alpine Linux
/etc/init.d/iptables save
rc-update add iptables
Si vous ne sauvegardez pas les règles, vos blocages disparaîtront au prochain redémarrage du VPS.
Comment trouver l'IP à bloquer ?
Avant de bloquer une IP, il faut d'abord savoir laquelle bloquer. Voici les sources les plus courantes.
Dans les logs SSH
Pour voir les tentatives de connexion SSH récentes et identifier les IPs malveillantes.
# Debian, Ubuntu
journalctl -u ssh -n 100 | grep "Failed password"
# AlmaLinux, Rocky, Fedora
journalctl -u sshd -n 100 | grep "Failed password"
# Alpine
tail -n 100 /var/log/messages | grep "Failed password"
Dans les logs d'un serveur web
Pour identifier les IPs qui spamment votre site (Nginx en exemple).
tail -n 1000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
Cette commande affiche les 10 IPs les plus actives sur les 1000 dernières requêtes. Une IP qui apparaît des centaines de fois est probablement un bot ou un attaquant.
Vérifier la réputation d'une IP
Avant de bloquer, vous pouvez vérifier la réputation d'une IP sur des services en ligne comme AbuseIPDB ou VirusTotal. Si l'IP est signalée par de nombreux utilisateurs, le blocage est généralement justifié.
Ces services ne sont pas infaillibles. Une IP peut être signalée à tort, ou avoir été utilisée par un attaquant dans le passé puis réattribuée à un utilisateur légitime (cas fréquent avec les IP dynamiques des FAI, les VPN partagés, ou les sorties Tor). Avant de bloquer une plage entière, vérifiez vos propres logs pour confirmer que l'IP a bien un comportement suspect chez vous. Ne vous fiez pas uniquement à AbuseIPDB pour bloquer.
Une approche plus automatisée, CrowdSec
Si vous voulez bloquer automatiquement les IPs qui attaquent votre serveur, sans avoir à les chercher à la main, nous recommandons l'installation de CrowdSec. Il analyse les logs en temps réel, détecte les comportements malveillants et bloque les IPs automatiquement. C'est aussi une alternative moderne à Fail2Ban.
Pour en savoir plus, consultez notre guide sur la sécurisation d'un VPS Linux qui couvre l'installation complète de CrowdSec.
Besoin d'aide ?
Si vous avez bloqué votre propre IP par accident (oui, ça arrive 😅) et que vous n'arrivez plus à vous connecter à votre VPS, notre équipe est là. Ouvrez un ticket dans le département Technique depuis votre espace client et renseignez le champ Produit lié avec le VPS concerné, nous pouvons vous aider à accéder à votre serveur via la console de secours pour annuler le blocage.
Vous savez maintenant comment bloquer une IP sur votre VPS Linux quel que soit votre système 🛡️


