Chapitre 9.3 - Pare-feu
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre les pare-feu Linux
- Configurer iptables
- Utiliser firewalld (Red Hat/CentOS)
- Utiliser ufw (Ubuntu/Debian)
- Comprendre les règles de filtrage
- Sécuriser les services
Types de Pare-feu
iptables
Pare-feu bas niveau, contrôle direct du kernel:
Caractéristiques:
- Très puissant
- Complexe
- Direct kernel
- Disponible partout
firewalld
Pare-feu haut niveau, interface simplifiée:
- Zones (public, internal, etc.)
- Services prédéfinis
- Plus simple que iptables
- Red Hat/CentOS/Fedora
ufw
Uncomplicated Firewall, très simple:
- Interface simple
- Ubuntu/Debian
- Basé sur iptables
- Facile à utiliser
iptables - Base
Tables
# Tables principales
# - filter: Filtrage (défaut)
# - nat: Traduction d'adresses
# - mangle: Modification paquets
# Voir règles
sudo iptables -L -n -v
# Par table
sudo iptables -t filter -L
sudo iptables -t nat -L
Chaînes
Table FILTER:
- INPUT: Paquets entrants
- OUTPUT: Paquets sortants
- FORWARD: Paquets routés
Voir les Règles
# Liste simple
sudo iptables -L
# Avec numéros
sudo iptables -L --line-numbers
# Numérique (pas de résolution DNS)
sudo iptables -L -n
# Verbose (détails)
sudo iptables -L -v
# Toutes tables
sudo iptables -t nat -L -n -v
Règles iptables
Ajouter une Règle
# Format: iptables -A CHAINE -j ACTION
# Autoriser SSH (port 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Autoriser HTTP (port 80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Autoriser HTTPS (port 443)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Refuser tout le reste
sudo iptables -A INPUT -j DROP
Insérer une Règle
# Insérer au début (priorité)
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
# Insérer à position spécifique
sudo iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT
Supprimer une Règle
# Par numéro
sudo iptables -D INPUT 1
# Par correspondance
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
Politique par Défaut
# Politique par défaut (si aucune règle ne correspond)
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
Exemples iptables
Configuration Basique
#!/bin/bash
# Configuration pare-feu basique
# Vider règles existantes
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
# Politique par défaut
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# Autoriser loopback
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
# Autoriser 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
# ICMP (ping)
sudo iptables -A INPUT -p icmp -j ACCEPT
Sauvegarder/Restaurer
# Sauvegarder
sudo iptables-save > /etc/iptables/rules.v4
# Restaurer
sudo iptables-restore < /etc/iptables/rules.v4
# Automatique au démarrage (Ubuntu/Debian)
sudo apt install iptables-persistent
sudo netfilter-persistent save
firewalld
Concepts
Zones:
- public: Zone publique (par défaut)
- internal: Réseau interne
- trusted: Fiable
- work: Bureau
- home: Domicile
Commandes de Base
# Statut
sudo firewall-cmd --state
sudo firewall-cmd --list-all
# Zones
sudo firewall-cmd --get-zones
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --set-default-zone public
# Services
sudo firewall-cmd --get-services
sudo firewall-cmd --list-services
Ajouter Services
# Ajouter service (temporaire)
sudo firewall-cmd --add-service=http
# Ajouter service (permanent)
sudo firewall-cmd --add-service=http --permanent
# Recharger
sudo firewall-cmd --reload
# Vérifier
sudo firewall-cmd --list-services
Ports
# Ajouter port
sudo firewall-cmd --add-port=8080/tcp
# Permanent
sudo firewall-cmd --add-port=8080/tcp --permanent
# Supprimer
sudo firewall-cmd --remove-port=8080/tcp --permanent
ufw (Ubuntu/Debian)
Activation
# Voir statut
sudo ufw status
# Activer
sudo ufw enable
# Désactiver
sudo ufw disable
Règles de Base
# Autoriser SSH
sudo ufw allow 22/tcp
sudo ufw allow ssh
# Autoriser HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Autoriser depuis IP
sudo ufw allow from 192.168.1.0/24
# Refuser
sudo ufw deny 3306/tcp # MySQL
# Supprimer règle
sudo ufw delete allow 80/tcp
Voir les Règles
# Liste numérotée
sudo ufw status numbered
# Détails
sudo ufw status verbose
Réinitialiser
# Réinitialiser toutes les règles
sudo ufw reset
Bonnes Pratiques
Sécurité
# 1. Toujours autoriser SSH avant d'activer
sudo ufw allow ssh
sudo ufw enable
# 2. Politique par défaut restrictive
# DROP pour INPUT, ACCEPT pour OUTPUT
# 3. Autoriser seulement ce qui est nécessaire
# Pas de règles trop larges
# 4. Tester avant de sauvegarder
# Vérifier connectivité
# 5. Journaliser les rejets
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: "
Maintenance
# Vérifier règles régulièrement
sudo iptables -L -n -v
sudo firewall-cmd --list-all
sudo ufw status verbose
# Sauvegarder configuration
sudo iptables-save > backup-$(date +%Y%m%d).rules
Résumé
Dans ce chapitre, vous avez appris:
Types: iptables (bas niveau), firewalld (zones), ufw (simple)
iptables: Tables, chaînes, règles, politiques
firewalld: Zones, services, ports, permanent
ufw: Activation, règles, statut, reset
Sécurité: Politique restrictive, autoriser nécessaire seulement
Pratique: Configuration basique, sauvegarde, test
Prochaines Étapes
Chapitre 9.4: Audit et Monitoring Sécurité
Module 10: Gestion des Paquets
Chapitre créé le: Décembre 2024