Pourquoi un pare-feu sur un VPS ?
Un VPS fraîchement installé est exposé à Internet avec tous ses ports potentiellement ouverts. Sans pare-feu, n'importe quel service en écoute est accessible depuis le monde entier. Le pare-feu vous permet de définir précisément quels ports et protocoles sont autorisés.
Par défaut, il est recommandé de :
- Bloquer tout le trafic entrant sauf les services explicitement autorisés
- Autoriser tout le trafic sortant (votre serveur peut initier des connexions)
- Autoriser SSH (sinon vous serez bloqué hors de votre serveur)
UFW — Pare-feu simplifié pour Ubuntu/Debian
UFW (Uncomplicated Firewall) est une interface conviviale pour iptables, idéale pour les administrateurs qui ne maîtrisent pas encore les règles iptables complexes.
Installer UFW
sudo apt update
sudo apt install ufw
Configurer UFW
Définir la politique par défaut
Bloquez tout le trafic entrant et autorisez tout le trafic sortant :
sudo ufw default deny incoming sudo ufw default allow outgoingAutoriser SSH en premier
Indispensable : autorisez SSH avant d'activer UFW, sinon vous serez bloqué hors de votre serveur.
sudo ufw allow sshOu si vous utilisez un port SSH personnalisé (ex. : 2222) :
sudo ufw allow 2222/tcpAutoriser les services web
Si vous hébergez un site web, autorisez HTTP et HTTPS :
sudo ufw allow http sudo ufw allow httpsOu de façon équivalente :
sudo ufw allow 80/tcp sudo ufw allow 443/tcpActiver UFW
Une fois les règles essentielles définies, activez le pare-feu :
sudo ufw enableConfirmez avec
y. UFW s'active immédiatement et se lance automatiquement au démarrage du serveur.Vérifier l'état
sudo ufw status verboseLa sortie affiche toutes les règles actives et le statut du pare-feu.
Règles UFW courantes
Autoriser des ports spécifiques
# MySQL (si accès externe nécessaire — à éviter en général)
sudo ufw allow 3306/tcp
# FTP (non recommandé, préférez SFTP)
sudo ufw allow 21/tcp
# SMTP (serveur mail)
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp
# IMAP/POP3 (serveur mail)
sudo ufw allow 993/tcp
sudo ufw allow 995/tcp
Autoriser un port pour une IP spécifique uniquement
# Autoriser MySQL uniquement depuis votre IP de bureau
sudo ufw allow from 203.0.113.42 to any port 3306
# Autoriser SSH uniquement depuis votre IP
sudo ufw allow from 203.0.113.42 to any port 22
Bloquer une IP spécifique
sudo ufw deny from 198.51.100.0/24
Supprimer une règle
# Lister les règles numérotées
sudo ufw status numbered
# Supprimer la règle numéro 3
sudo ufw delete 3
Limiter les tentatives de connexion SSH
UFW dispose d'une règle limit qui bloque automatiquement les IPs qui tentent plus de 6 connexions en 30 secondes :
sudo ufw limit ssh
Cette règle est très efficace contre les attaques par force brute.
iptables — Contrôle avancé
Pour les administrateurs avancés ou les distributions sans UFW (CentOS, RHEL), iptables offre un contrôle granulaire.
Voir les règles actuelles
sudo iptables -L -n -v
Règles de base iptables
# Vider toutes les règles existantes
sudo iptables -F
sudo iptables -X
# Politique par défaut : bloquer tout le trafic entrant
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# Autoriser les connexions établies et connexions reliées
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Autoriser le loopback (interface locale)
sudo iptables -A INPUT -i lo -j ACCEPT
# Autoriser SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Autoriser HTTP et HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Autoriser ICMP (ping)
sudo iptables -A INPUT -p icmp -j ACCEPT
Sauvegarder les règles iptables
Les règles iptables sont perdues au redémarrage si elles ne sont pas sauvegardées :
Sur Ubuntu/Debian :
sudo apt install iptables-persistent
sudo netfilter-persistent save
Sur CentOS :
sudo service iptables save
Firewalld — Pour CentOS/RHEL/AlmaLinux
Firewalld est le pare-feu par défaut sur CentOS 7+, RHEL et AlmaLinux.
# Vérifier le statut
sudo firewall-cmd --state
# Lister les règles actives
sudo firewall-cmd --list-all
# Autoriser SSH, HTTP, HTTPS
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Appliquer les changements
sudo firewall-cmd --reload
Fail2ban — Protection supplémentaire contre le brute force
Fail2ban surveille les logs de votre serveur et bloque automatiquement les IPs qui effectuent trop de tentatives échouées :
sudo apt install fail2ban
# Copier la config par défaut
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Éditer la configuration
sudo nano /etc/fail2ban/jail.local
Dans le fichier, configurez la section [sshd] :
[sshd]
enabled = true
maxretry = 5
findtime = 300
bantime = 3600
Redémarrez fail2ban :
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Étapes suivantes
- Installer Nginx sur votre VPS pour héberger vos sites
- Configurer des sauvegardes automatiques
- Mettre en place une surveillance du serveur