Introduction #
Un firewall, ou pare-feu en français, est un dispositif de sécurité réseau conçu pour surveiller et contrôler le trafic réseau entrant et sortant basé sur des règles de sécurité prédéfinies. Il constitue une barrière entre un réseau interne sécurisé et des réseaux externes non sécurisés, tels qu’Internet. Les firewalls sont essentiels pour protéger les réseaux contre les attaques et les accès non autorisés.
Types de Firewalls #
Type | Description | Modèles |
---|---|---|
Software | Logiciel installé sur un serveur ou un dispositif, facile à mettre à jour et à configurer. | Linux (iptables, nftables, firewalld), Windows Firewall, pfSense, UFW, IPFire, Shorewall |
Hardware | Appareil physique dédié, offrant des performances élevées et une sécurité renforcée. Permet de fournir en général des services de monitoring et alerting avancés. | Fortinet, Cisco ASA, Palo Alto Networks, Check Point, Juniper SRX, SonicWall |
Firewalld #
Liste des Commandes firewalld avec les Fonctions par Zones #
Gestion des Zones #
-
Obtenir la liste de toutes les zones disponibles :
sudo firewall-cmd --get-zones
-
Obtenir la liste des zones actives :
sudo firewall-cmd --get-active-zones
-
Lister toutes les règles et configurations de la zone publique :
sudo firewall-cmd --zone=public --list-all

Vérification et Gestion des Services Prédéfinis #
Les services prédéfinis de firewalld sont stockés sous forme de fichiers XML. Vous pouvez les trouver dans le répertoire suivant :
/usr/lib/firewalld/services

Commandes de Base pour la Gestion de firewalld #
- Gestion du service firewalld :
sudo systemctl (start|stop|restart|enable|disable) firewalld
Vérification et Gestion des Règles #
-
Vérifier toutes les règles :
sudo firewall-cmd --list-all
-
Obtenir la liste des services :
sudo firewall-cmd --get-services
-
Recharger la configuration :
sudo firewall-cmd --reload
-
Définir la politique par défaut à DENY :
sudo firewall-cmd --set-default-zone=drop
Autorisation des Ports et Services #
-
Autoriser le port 80 (HTTP) :
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload
-
Autoriser le service SSH sur l’interface eth0 : Ajout de l’interface
eth0
à la zonepublic
et du servicessh
sudo firewall-cmd --permanent --zone=public --add-interface=eth0 sudo firewall-cmd --permanent --zone=public --add-service=ssh sudo firewall-cmd --reload
-
Autoriser le service FTP pour le réseau 192.168.1.0/24 :
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ftp" accept' sudo firewall-cmd --reload
Nftables #
Liste des Commandes nftables #
Gestion du Service nftables avec systemctl #
- Gestion du service nftables :
sudo systemctl (start|stop|restart|enable|disable) nftables
Vérification et Gestion des Règles #
-
Vérifier toutes les règles :
sudo nft list ruleset
-
Obtenir la liste des tables disponibles :
sudo nft list tables
-
Recharger la configuration :
sudo nft -f /etc/nftables.conf
-
Définir la politique par défaut à DROP :
sudo nft add rule ip filter input drop sudo nft add rule ip filter forward drop sudo nft add rule ip filter output drop
Autorisation des Ports et Services #
-
Autoriser le port 80 (HTTP) :
sudo nft add rule ip filter input tcp dport 80 accept
-
Autoriser le service SSH sur l’interface eth0 :
sudo nft add rule ip filter input iif eth0 tcp dport 22 accept
-
Autoriser le service FTP pour le réseau 192.168.1.0/24 :
sudo nft add rule ip filter input ip saddr 192.168.1.0/24 tcp dport 21 accept
Gestion des Tables et des Chaînes #
-
Lister les règles de toutes les tables :
sudo nft list ruleset
-
Créer une nouvelle table :
sudo nft add table ip mytable
-
Créer une nouvelle chaîne :
sudo nft add chain ip mytable mychain { type filter hook input priority 0 \; }
-
Ajouter une règle dans une chaîne :
sudo nft add rule ip mytable mychain tcp dport 80 accept
-
Supprimer une règle dans une chaîne :
sudo nft delete rule ip mytable mychain handle 10
-
Insérer une règle à une position spécifique dans une chaîne :
sudo nft insert rule ip mytable mychain position 1 tcp dport 80 accept
-
Vérifier les compteurs de paquets et d’octets pour chaque règle :
sudo nft list ruleset -a
-
Enregistrer les règles actuelles dans un fichier :
sudo nft list ruleset > /etc/nftables.conf
-
Restaurer les règles à partir d’un fichier :
sudo nft -f /etc/nftables.conf
Zones et Services #
nftables
n’a pas de concept direct de zones comme firewalld
, mais vous pouvez organiser les règles en tables et chaînes pour une gestion similaire. Les services ne sont pas définis dans des fichiers XML comme avec firewalld
, mais vous pouvez définir les règles nécessaires directement dans les configurations.
Modèle de configuration initiale #
Un exemple de configuration de fichier /etc/nftables.conf
:
#!/usr/sbin/nft -f
flush ruleset
table ip filter {
chain input {
type filter hook input priority 0; policy drop;
tcp dport 80 accept
tcp dport 22 accept
ip saddr 192.168.1.0/24 tcp dport 21 accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy drop;
}
}
Iptables #
iptables
est de plus en plus déprécié au profit de nftables
, qui offre une syntaxe plus moderne et des fonctionnalités améliorées. Il est recommandé de migrer vers nftables
pour les nouvelles configurations de pare-feu.
Liste des Commandes iptables #
Gestion du Service iptables avec systemctl #
- Gestion du service iptables :
sudo systemctl (start|stop|restart|enable|disable) iptables
Vérification et Gestion des Règles #
-
Vérifier toutes les règles :
sudo iptables -L -v -n
-
Obtenir la liste des tables disponibles :
sudo iptables -L -t nat sudo iptables -L -t mangle sudo iptables -L -t raw sudo iptables -L -t filter
-
Recharger la configuration :
sudo systemctl restart iptables
-
Définir la politique par défaut à DROP :
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT DROP
Autorisation des Ports et Services #
-
Autoriser le port 80 (HTTP) :
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-
Autoriser le service SSH sur l’interface eth0 :
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
-
Autoriser le service FTP pour le réseau 192.168.1.0/24 :
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 21 -j ACCEPT
Gestion des Tables et des Chaînes #
-
Lister les règles de la table
filter
(par défaut) :sudo iptables -L -t filter
-
Lister les règles de la table
nat
:sudo iptables -L -t nat
-
Lister les règles de la table
mangle
:sudo iptables -L -t mangle
-
Lister les règles de la table
raw
:sudo iptables -L -t raw
-
Ajouter une règle dans la chaîne
INPUT
de la tablefilter
:sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-
Supprimer une règle dans la chaîne
INPUT
de la tablefilter
:sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
-
Insérer une règle à une position spécifique dans la chaîne
INPUT
de la tablefilter
:sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
-
Vérifier les compteurs de paquets et d’octets pour chaque règle :
sudo iptables -L -v
-
Enregistrer les règles actuelles dans un fichier :
sudo iptables-save > /etc/iptables/rules.v4
-
Restaurer les règles à partir d’un fichier :
sudo iptables-restore < /etc/iptables/rules.v4