Lors du travail avec des réseaux sous Linux, il peut être nécessaire d’ouvrir ou de fermer un port réseau. La gestion des ports est essentielle pour la sécurité — moins il y a de ports ouverts dans un système, moins il y a de vecteurs d’attaque potentiels. De plus, si un port est fermé, un attaquant ne peut pas recueillir d’informations sur le service fonctionnant sur ce port spécifique.
Ce guide explique comment ouvrir ou fermer des ports et comment vérifier les ports ouverts sur des distributions Linux telles que Ubuntu/Debian et CentOS/RHEL à l’aide de pare-feu comme ufw
, firewalld
et iptables
.
Nous allons démontrer ce processus sur deux distributions Linux : Ubuntu 22.04 et CentOS 9, exécutées sur un VPS Hostman. Toutes les commandes présentées ici fonctionnent sur n’importe quelle distribution basée sur Debian ou RHEL.
Les ports sont utilisés pour accéder à des applications et des protocoles spécifiques. Par exemple, un serveur peut héberger à la fois un serveur web et une base de données — les ports dirigent le trafic vers le service approprié. Techniquement, un port réseau est un entier non négatif allant de 0 à 65535.
Ports réservés (0–1023) : utilisés par des protocoles et services réseau populaires comme SSH (port 22), FTP (port 21), HTTP (port 80) et HTTPS (port 443).
Ports enregistrés (1024–49151) : peuvent être utilisés par des applications spécifiques pour la communication.
Sur les systèmes basés sur Debian (Ubuntu, Debian, Linux Mint, etc.), vous pouvez utiliser ufw
(Uncomplicated Firewall).
ufw
est préinstallé sur la plupart des distributions basées sur APT. Pour vérifier s’il est installé :
ufw version
Si une version s’affiche, ufw
est installé. Sinon, installez-le avec :
apt update && apt -y install ufw
Par défaut, ufw
est inactif, ce qui signifie que tous les ports sont ouverts. Vous pouvez vérifier son statut avec :
ufw status
Pour l’activer :
ufw enable
Vous devrez confirmer avec y
. Notez que l’activation d’ufw
peut interrompre les connexions SSH en cours. Par défaut, ufw
bloque tout le trafic entrant et autorise tout le trafic sortant.
Pour vérifier la politique par défaut :
cat /etc/default/ufw
Pour ouvrir un port :
ufw allow <port_number>
Exemple — ouvrir le port 22 pour SSH :
ufw allow 22
Vous pouvez ouvrir plusieurs ports en les séparant par des virgules et en spécifiant le protocole (tcp
ou udp
) :
ufw allow 80,443,8081,8443/tcp
ufw allow 80,443,8081,8443/udp
Au lieu des numéros de port, vous pouvez utiliser le nom du service (défini dans /etc/services
).
Exemple — ouvrir Telnet (port 23) :
ufw allow telnet
Remarque : Vous ne pouvez pas spécifier plusieurs noms de services à la fois. Sinon, ufw renverra une erreur :
Pour ouvrir une plage de ports :
ufw allow <start_port>:<end_port>/<protocol>
Exemple :
ufw allow 8000:8080/tcp
Pour fermer un port :
ufw deny <port_number>
Exemple — fermer le port 80 :
ufw deny 80
Vous pouvez également utiliser le nom du service. Exemple — fermer FTP (port 21) :
ufw deny ftp
Pour lister tous les ports ouverts et fermés :
ufw status
Ou pour une vue plus détaillée :
ufw status verbose
Les distributions basées sur RHEL (CentOS 7+, RHEL 7+, Fedora 18+, OpenSUSE 15+) utilisent par défaut firewalld
.
Vérifiez si firewalld
est installé :
firewall-offline-cmd -V
Si une version s’affiche, firewalld
est installé. Sinon, installez-le :
dnf install firewalld
Par défaut, firewalld
est désactivé. Vérifiez son statut :
firewall-cmd --state
Pour l’activer :
systemctl start firewalld
Ouvrir le port 8080 pour TCP :
firewall-cmd --zone=public --add-port=8080/tcp --permanent
--zone=public
: Spécifie la zone pour la règle.--add-port=8080/tcp
: Spécifie le port et le protocole.--permanent
: Enregistre la règle de façon permanente.Vous pouvez aussi ouvrir un service en utilisant son nom, par exemple HTTP (port 80) :
firewall-cmd --zone=public --add-service=http --permanent
Appliquer les changements :
firewall-cmd --reload
Pour fermer un port par numéro :
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
Ou par nom de service :
firewall-cmd --zone=public --remove-service=http --permanent
Toujours recharger après modification :
firewall-cmd --reload
Pour lister tous les ports ouverts :
firewall-cmd --list-ports
Contrairement à ufw
et firewalld
, iptables
est préinstallé sur de nombreuses distributions (Ubuntu, Debian, RHEL, Rocky Linux, AlmaLinux).
Pour ouvrir le port 8182 pour les connexions entrantes :
iptables -A INPUT -p tcp --dport 8182 -j ACCEPT
-A INPUT
: Ajoute une règle à la chaîne INPUT.-p tcp
: Spécifie le protocole.--dport 8182
: Spécifie le port à ouvrir.-j ACCEPT
: Autorise le trafic sur ce port.Pour les connexions sortantes :
iptables -A OUTPUT -p tcp --dport 8182 -j ACCEPT
Pour ouvrir une plage de ports :
iptables -A INPUT -p tcp --match multiport --dports 1024:2000 -j ACCEPT
Pour fermer un port :
iptables -A INPUT -p tcp --dport 8182 -j DROP
Fermer une plage de ports :
iptables -A INPUT -p tcp --match multiport --dports 1024:2000 -j DROP
Pour les sauvegarder de façon permanente, installez iptables-persistent.
Pour les systèmes basés sur APT :
apt update && apt -y install iptables-persistent
Pour les systèmes basés sur DNF :
dnf -y install iptables-persistent
Sauvegarder les règles actuelles :
iptables-save
Les règles seront automatiquement rechargées au prochain redémarrage.
Lister toutes les règles et ports ouverts :
iptables -L -v -n
Lister uniquement les règles IPv4 :
iptables -S
Lister les règles IPv6 :
ip6tables -S
Dans ce guide, nous avons montré comment ouvrir et fermer des ports réseau sous Linux et comment vérifier les ports actuellement ouverts à l’aide de trois outils différents : ufw
, firewalld
et iptables
. Une bonne gestion des ports réduit les risques d’attaques réseau potentielles et aide à dissimuler des informations sur les services utilisant ces ports.