Pare-feu et sécurité
Table des matières
- Introduction aux pare-feu Linux
- UFW (Uncomplicated Firewall)
- firewalld (RedHat/CentOS)
- iptables : bases
- Règles courantes
- Exercices pratiques
1 - Introduction aux pare-feu Linux
Qu'est-ce qu'un pare-feu ?
Un pare-feu contrôle le trafic réseau entrant et sortant selon des règles définies.
Architecture Linux
| Couche | Description |
|---|---|
| UFW/firewalld | Interface utilisateur simple |
| iptables/nftables | Outil de configuration |
| Netfilter | Module kernel (filtre réel) |
Concepts clés
| Terme | Description |
|---|---|
| INPUT | Trafic entrant vers le serveur |
| OUTPUT | Trafic sortant du serveur |
| FORWARD | Trafic traversant (routeur) |
| ACCEPT | Autoriser |
| DROP | Ignorer silencieusement |
| REJECT | Refuser avec message |
🔝 Retour à la table des matières
2 - UFW (Uncomplicated Firewall)
UFW est l'interface simplifiée pour Ubuntu/Debian.
Installation et activation
# Installer
sudo apt install ufw
# Vérifier le statut
sudo ufw status
# Activer
sudo ufw enable
# Désactiver
sudo ufw disable
Règles par défaut
# Bloquer tout le trafic entrant
sudo ufw default deny incoming
# Autoriser tout le trafic sortant
sudo ufw default allow outgoing
Autoriser des services/ports
# Par nom de service
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
# Par numéro de port
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
# Port TCP spécifique
sudo ufw allow 3000/tcp
# Port UDP
sudo ufw allow 53/udp
# Plage de ports
sudo ufw allow 8000:8100/tcp
Autoriser depuis une IP
# Autoriser une IP spécifique
sudo ufw allow from 192.168.1.100
# Autoriser un réseau
sudo ufw allow from 192.168.1.0/24
# IP spécifique vers un port spécifique
sudo ufw allow from 192.168.1.100 to any port 22
# IP vers port avec protocole
sudo ufw allow from 192.168.1.100 to any port 3306 proto tcp
Bloquer / Supprimer des règles
# Bloquer une IP
sudo ufw deny from 203.0.113.5
# Lister les règles avec numéros
sudo ufw status numbered
# Supprimer une règle par numéro
sudo ufw delete 3
# Supprimer une règle explicitement
sudo ufw delete allow 80
Afficher le statut
# Statut simple
sudo ufw status
# Statut détaillé
sudo ufw status verbose
# Avec numéros
sudo ufw status numbered
Exemple de sortie :
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Toujours autoriser SSH AVANT d'activer le pare-feu pour ne pas perdre l'accès !
sudo ufw allow ssh
sudo ufw enable
🔝 Retour à la table des matières
3 - firewalld (RedHat/CentOS)
firewalld est le pare-feu par défaut sur RHEL/CentOS/Fedora.
Concepts
firewalld utilise des zones pour regrouper les règles :
| Zone | Usage |
|---|---|
| drop | Bloquer tout |
| public | Réseaux publics (défaut) |
| work | Réseau de travail |
| home | Réseau domestique |
| trusted | Tout autoriser |
Commandes de base
# Statut
sudo firewall-cmd --state
# Zone par défaut
sudo firewall-cmd --get-default-zone
# Zones actives
sudo firewall-cmd --get-active-zones
# Lister les règles
sudo firewall-cmd --list-all
Gérer les services
# Autoriser un service
sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https
# Rendre permanent
sudo firewall-cmd --add-service=http --permanent
# Ou recharger après modifications
sudo firewall-cmd --reload
# Supprimer un service
sudo firewall-cmd --remove-service=http --permanent
Gérer les ports
# Ouvrir un port
sudo firewall-cmd --add-port=3000/tcp --permanent
# Supprimer un port
sudo firewall-cmd --remove-port=3000/tcp --permanent
# Recharger
sudo firewall-cmd --reload
🔝 Retour à la table des matières
4 - iptables : bases
iptables est l'outil de bas niveau pour configurer Netfilter.
Structure
Tables principales
| Table | Usage |
|---|---|
| filter | Filtrage (défaut) |
| nat | Traduction d'adresses |
| mangle | Modification de paquets |
Chaînes de filter
| Chaîne | Usage |
|---|---|
| INPUT | Paquets entrants |
| OUTPUT | Paquets sortants |
| FORWARD | Paquets routés |
Commandes de base
# Lister les règles
sudo iptables -L -n -v
# Lister avec numéros de ligne
sudo iptables -L --line-numbers
# Politique par défaut
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# Autoriser le loopback
sudo iptables -A INPUT -i lo -j ACCEPT
# Autoriser les connexions établies
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Autoriser SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Autoriser HTTP/HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Supprimer une règle par numéro
sudo iptables -D INPUT 3
# Supprimer toutes les règles
sudo iptables -F
Sauvegarder les règles
# Debian/Ubuntu
sudo iptables-save > /etc/iptables/rules.v4
# Restaurer
sudo iptables-restore < /etc/iptables/rules.v4
# Avec iptables-persistent
sudo apt install iptables-persistent
sudo netfilter-persistent save
Préférez UFW ou firewalld pour la gestion quotidienne. iptables est plus complexe mais offre plus de contrôle.
🔝 Retour à la table des matières
5 - Règles courantes
Serveur web
# UFW
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Serveur avec base de données
# MySQL accessible uniquement depuis le réseau local
sudo ufw allow from 192.168.1.0/24 to any port 3306
# PostgreSQL
sudo ufw allow from 192.168.1.0/24 to any port 5432
Bloquer une IP malveillante
# UFW
sudo ufw deny from 203.0.113.5
# iptables
sudo iptables -I INPUT -s 203.0.113.5 -j DROP
Rate limiting SSH (protection brute-force)
# UFW
sudo ufw limit ssh
# iptables
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Configuration type serveur
#!/bin/bash
# Configuration pare-feu basique
# Reset
sudo ufw reset
# Défauts
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH (limité)
sudo ufw limit ssh
# Web
sudo ufw allow http
sudo ufw allow https
# Activer
sudo ufw enable
# Vérifier
sudo ufw status verbose
🔝 Retour à la table des matières
6 - Exercices pratiques
Exercice 1 : Configuration UFW basique
# 1. Vérifiez le statut actuel
sudo ufw status
# 2. Définissez les règles par défaut
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 3. Autorisez SSH (important !)
sudo ufw allow ssh
# 4. Activez le pare-feu
sudo ufw enable
# 5. Vérifiez
sudo ufw status verbose
Exercice 2 : Ajouter des règles
# 1. Autorisez HTTP et HTTPS
sudo ufw allow http
sudo ufw allow https
# 2. Autorisez un port personnalisé (ex: 3000)
sudo ufw allow 3000/tcp
# 3. Listez les règles
sudo ufw status numbered
# 4. Supprimez la règle du port 3000
sudo ufw delete allow 3000/tcp
Exercice 3 : Règle par IP
# 1. Autorisez SSH seulement depuis votre IP (remplacez)
sudo ufw allow from VOTRE_IP to any port 22
# 2. Vérifiez
sudo ufw status
Quiz
Q1. Quelle commande active UFW ?
Réponse
sudo ufw enable
Q2. Que doit-on toujours faire avant d'activer le pare-feu ?
Réponse
Autoriser SSH (sudo ufw allow ssh) pour ne pas perdre l'accès !
Q3. Quelle est la différence entre DROP et REJECT ?
Réponse
DROP ignore silencieusement le paquet, REJECT envoie une réponse d'erreur.
🔝 Retour à la table des matières
Points clés à retenir
- UFW = interface simple pour Ubuntu/Debian
- firewalld = pare-feu de RedHat/CentOS
- iptables = contrôle bas niveau
- Toujours autoriser SSH avant d'activer le pare-feu
- Politique par défaut :
deny incoming,allow outgoing ufw limit sshpour la protection brute-force- Sauvegarder les règles iptables avec
iptables-save
🔝 Retour à la table des matières
← Chapitre précédent | Chapitre suivant : Tâches planifiées →