Aller au contenu principal

Pare-feu et sécurité


Table des matières

  1. Introduction aux pare-feu Linux
  2. UFW (Uncomplicated Firewall)
  3. firewalld (RedHat/CentOS)
  4. iptables : bases
  5. Règles courantes
  6. 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

CoucheDescription
UFW/firewalldInterface utilisateur simple
iptables/nftablesOutil de configuration
NetfilterModule kernel (filtre réel)

Concepts clés

TermeDescription
INPUTTrafic entrant vers le serveur
OUTPUTTrafic sortant du serveur
FORWARDTrafic traversant (routeur)
ACCEPTAutoriser
DROPIgnorer silencieusement
REJECTRefuser 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)
Important

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 :

ZoneUsage
dropBloquer tout
publicRéseaux publics (défaut)
workRéseau de travail
homeRéseau domestique
trustedTout 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

TableUsage
filterFiltrage (défaut)
natTraduction d'adresses
mangleModification de paquets

Chaînes de filter

ChaîneUsage
INPUTPaquets entrants
OUTPUTPaquets sortants
FORWARDPaquets 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
astuce

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 ssh pour 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 →