Aller au contenu principal

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