Prérequis
- Un serveur Ubuntu/Debian ou AlmaLinux 9/Rocky Linux 9
- Accès root ou sudo
Le pare-feu est essentiel pour sécuriser votre serveur. Ubuntu/Debian utilisent UFW (Uncomplicated Firewall), tandis qu'AlmaLinux/Rocky Linux utilisent firewalld. Ce guide couvre les deux solutions.
Attention !
Avant d'activer le pare-feu, assurez-vous d'avoir autorisé SSH (port 22) sinon vous serez bloqué hors de votre serveur !
UFW - Ubuntu/Debian
1. Installer UFW
# Mettre à jour les paquets
apt update
# Installer UFW
apt install ufw -y
# Vérifier le statut (désactivé par défaut)
ufw status2. Configuration de base
# Bloquer tout le trafic entrant par défaut
ufw default deny incoming
# Autoriser tout le trafic sortant
ufw default allow outgoing3. Autoriser SSH (IMPORTANT)
# Autoriser SSH (port 22)
ufw allow ssh
# Ou explicitement avec le numéro de port
ufw allow 22/tcp
# Si vous utilisez un port SSH personnalisé
ufw allow 2222/tcp4. Activer UFW
# Activer UFW (confirmez avec 'y')
ufw enable
# Vérifier le statut
ufw status verbose5. Règles courantes
Serveur Web (HTTP/HTTPS)
# HTTP
ufw allow 80/tcp
# HTTPS
ufw allow 443/tcp
# Ou les deux en une commande
ufw allow 'Nginx Full' # Si Nginx est installé
ufw allow 'Apache Full' # Si Apache est installéServeur de base de données
# MySQL/MariaDB (seulement si accès externe nécessaire)
ufw allow 3306/tcp
# PostgreSQL
ufw allow 5432/tcp
# Limiter à une IP spécifique (recommandé)
ufw allow from 192.168.1.100 to any port 3306Serveur de messagerie
# SMTP
ufw allow 25/tcp
ufw allow 465/tcp # SMTPS
ufw allow 587/tcp # Submission
# POP3
ufw allow 110/tcp
ufw allow 995/tcp # POP3S
# IMAP
ufw allow 143/tcp
ufw allow 993/tcp # IMAPSServeur FTP
# FTP
ufw allow 21/tcp
# FTP passif (plage de ports)
ufw allow 40000:50000/tcpServeur DNS
# DNS (TCP et UDP)
ufw allow 53/tcp
ufw allow 53/udpApplications diverses
# DirectAdmin
ufw allow 2222/tcp
# Minecraft
ufw allow 25565/tcp
# Portainer
ufw allow 9443/tcp
# Webmin
ufw allow 10000/tcp
# Node.js (développement)
ufw allow 3000/tcp
# Redis
ufw allow 6379/tcp6. Règles avancées
Autoriser une IP spécifique
# Autoriser tout le trafic d'une IP
ufw allow from 192.168.1.100
# Autoriser une IP sur un port spécifique
ufw allow from 192.168.1.100 to any port 22
# Autoriser un sous-réseau
ufw allow from 192.168.1.0/24
# Autoriser un sous-réseau sur un port
ufw allow from 10.0.0.0/8 to any port 3306Bloquer une IP
# Bloquer une IP
ufw deny from 123.45.67.89
# Bloquer un sous-réseau
ufw deny from 123.45.67.0/24
# Bloquer une IP sur un port spécifique
ufw deny from 123.45.67.89 to any port 22Limiter les connexions (anti-bruteforce)
# Limiter les connexions SSH (6 connexions en 30 secondes)
ufw limit ssh
# Limiter un port personnalisé
ufw limit 2222/tcp7. Gérer les règles
# Voir les règles numérotées
ufw status numbered
# Supprimer une règle par numéro
ufw delete 3
# Supprimer une règle par définition
ufw delete allow 80/tcp
# Insérer une règle à une position
ufw insert 1 allow from 192.168.1.1008. Désactiver temporairement UFW
# Désactiver UFW
ufw disable
# Réactiver UFW
ufw enable
# Réinitialiser toutes les règles
ufw reset9. Activer les logs
# Activer les logs
ufw logging on
# Niveaux de log : off, low, medium, high, full
ufw logging medium
# Voir les logs
tail -f /var/log/ufw.log10. Configuration pour Docker
Docker modifie iptables directement et peut contourner UFW. Pour corriger ce comportement :
# Éditer la configuration Docker
nano /etc/docker/daemon.json
# Ajouter (désactive la manipulation iptables par Docker) :
{
"iptables": false
}
# Redémarrer Docker
systemctl restart docker
# Note: Vous devrez ensuite ouvrir manuellement les ports des conteneursExemple de configuration complète UFW
# Reset des règles
ufw reset
# Politique par défaut
ufw default deny incoming
ufw default allow outgoing
# SSH avec limite
ufw limit 22/tcp
# HTTP/HTTPS
ufw allow 80/tcp
ufw allow 443/tcp
# DirectAdmin (si installé)
ufw allow 2222/tcp
# FTP (si nécessaire)
ufw allow 21/tcp
ufw allow 40000:50000/tcp
# Email (si serveur mail)
ufw allow 25/tcp
ufw allow 465/tcp
ufw allow 587/tcp
ufw allow 110/tcp
ufw allow 995/tcp
ufw allow 143/tcp
ufw allow 993/tcp
# DNS (si serveur DNS)
ufw allow 53/tcp
ufw allow 53/udp
# Activer
ufw enable
# Vérifier
ufw status verbosefirewalld - AlmaLinux/Rocky Linux
Sur AlmaLinux et Rocky Linux, le pare-feu par défaut est firewalld. Il utilise des zones et des règles permanentes pour gérer le trafic réseau.
1. Installer et activer firewalld
# Installer firewalld (généralement déjà présent)
dnf install -y firewalld
# Activer et démarrer firewalld
systemctl enable --now firewalld
# Vérifier l'état
firewall-cmd --state2. Voir la configuration actuelle
# Voir toutes les règles actives
firewall-cmd --list-all
# Voir la zone par défaut
firewall-cmd --get-default-zone
# Lister toutes les zones
firewall-cmd --get-zones
# Voir les services autorisés
firewall-cmd --list-services
# Voir les ports ouverts
firewall-cmd --list-ports3. Autoriser SSH (IMPORTANT)
# SSH est généralement autorisé par défaut, vérifier :
firewall-cmd --query-service=ssh
# Si non autorisé, l'ajouter
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload4. Ouvrir des ports
Par service
# HTTP
firewall-cmd --permanent --add-service=http
# HTTPS
firewall-cmd --permanent --add-service=https
# FTP
firewall-cmd --permanent --add-service=ftp
# DNS
firewall-cmd --permanent --add-service=dns
# SMTP, IMAP, POP3
firewall-cmd --permanent --add-service=smtp
firewall-cmd --permanent --add-service=smtps
firewall-cmd --permanent --add-service=imap
firewall-cmd --permanent --add-service=imaps
firewall-cmd --permanent --add-service=pop3
firewall-cmd --permanent --add-service=pop3s
# Appliquer les changements
firewall-cmd --reload
# Voir tous les services disponibles
firewall-cmd --get-servicesPar numéro de port
# Ouvrir un port TCP
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
# Ouvrir un port UDP
firewall-cmd --permanent --add-port=53/udp
# Ouvrir une plage de ports
firewall-cmd --permanent --add-port=40000-50000/tcp
# Ports courants
firewall-cmd --permanent --add-port=2222/tcp # DirectAdmin
firewall-cmd --permanent --add-port=10000/tcp # Webmin
firewall-cmd --permanent --add-port=25565/tcp # Minecraft
firewall-cmd --permanent --add-port=9443/tcp # Portainer
firewall-cmd --permanent --add-port=3000/tcp # Node.js
firewall-cmd --permanent --add-port=587/tcp # Submission
# Appliquer les changements
firewall-cmd --reload5. Fermer des ports
# Fermer un port
firewall-cmd --permanent --remove-port=80/tcp
# Retirer un service
firewall-cmd --permanent --remove-service=http
# Appliquer les changements
firewall-cmd --reload6. Règles avancées (Rich Rules)
# Autoriser une IP spécifique sur un port
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="3306" protocol="tcp" accept'
# Bloquer une IP
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.45.67.89" reject'
# Bloquer un sous-réseau
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.45.67.0/24" reject'
# Autoriser un sous-réseau sur un port
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="3306" protocol="tcp" accept'
# Appliquer les changements
firewall-cmd --reload
# Voir les rich rules
firewall-cmd --list-rich-rules7. Activer les logs
# Activer les logs pour les paquets rejetés
firewall-cmd --set-log-denied=all
# Options : all, unicast, broadcast, multicast, off
firewall-cmd --set-log-denied=unicast
# Voir les logs
journalctl -f | grep -i firewall
# Ou dans les logs kernel
dmesg | grep -i rejectExemple de configuration complète firewalld
# S'assurer que firewalld est actif
systemctl enable --now firewalld
# SSH (normalement déjà autorisé)
firewall-cmd --permanent --add-service=ssh
# HTTP/HTTPS
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
# DirectAdmin (si installé)
firewall-cmd --permanent --add-port=2222/tcp
# FTP (si nécessaire)
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=40000-50000/tcp
# Email (si serveur mail)
firewall-cmd --permanent --add-service=smtp
firewall-cmd --permanent --add-service=smtps
firewall-cmd --permanent --add-port=587/tcp
firewall-cmd --permanent --add-service=pop3
firewall-cmd --permanent --add-service=pop3s
firewall-cmd --permanent --add-service=imap
firewall-cmd --permanent --add-service=imaps
# DNS (si serveur DNS)
firewall-cmd --permanent --add-service=dns
# Appliquer tous les changements
firewall-cmd --reload
# Vérifier
firewall-cmd --list-allPare-feu configuré !
Votre serveur est maintenant protégé. Pensez à tester vos services après avoir activé le pare-feu pour vous assurer que les ports nécessaires sont ouverts.