Avant d'apprendre à ouvrir un port sur Linux, comprenons ce que sont les ports réseau. Un port est un terminal de communication. Au sein d'un système d'exploitation, un port permet aux paquets de données des processus spécifiques ou des services réseau.
Généralement, les ports identifient un service réseau spécifique qui leur est attribué. Cela peut être modifié en configurant manuellement le service pour utiliser un port différent, mais en général, les valeurs par défaut peuvent être utilisées.
Le premier 1024 ports (Ports 0-1023 ) sont appelés numéros de port bien connus et sont réservés aux services les plus couramment utilisés, notamment SSH (port 22), HTTP et HTTPS (ports 80 et 443), etc. Les numéros de port supérieurs à 1024 sont appelés éphémères ports .
Parmi les ports éphémères, les numéros de port 1024-49151 sont appelés Enregistré/Utilisateur Ports. Le reste des ports, 49152-65535 sont appelés Dynamique/Privé Ports.
Dans ce didacticiel, nous montrerons comment ouvrir un port éphémère sous Linux, car les services les plus courants utilisent les ports bien connus.
Répertorier tous les ports ouverts
Avant d'ouvrir un port sur Linux, vérifions d'abord la liste de tous les ports ouverts et choisissons un port éphémère à ouvrir dans cette liste.
Nous pouvons utiliser le netstat commande pour lister tous les ports ouverts, y compris ceux de TCP , UDP , qui sont les protocoles les plus courants pour la transmission de paquets dans la couche réseau.
REMARQUE :Si votre distribution n'a pas netstat
, Ce n'est pas un problème. Vous pouvez utiliser le ss
commande pour afficher les ports ouverts via les sockets d'écoute.
netstat -lntu
Cela imprimera tous les écoutes sockets (-l
) avec le numéro de port (-n
), avec TCP ports (-t
) et UDP ports (-u
) également répertorié dans la sortie.
Juste pour nous assurer que nous obtenons des sorties cohérentes, vérifions cela en utilisant le ss
commande pour lister les sockets en écoute avec un port ouvert.
ss -lntu
Cela donne plus ou moins les mêmes ports ouverts que netstat
, nous sommes donc prêts à partir !
Ouverture d'un port sous Linux pour autoriser les connexions TCP
Ouvrons un port fermé et faisons-le écouter TCP Connexions, pour les besoins de cet exemple.
Depuis le port 4000 n'est pas utilisé dans mon système, je choisis d'ouvrir le port 4000 . Si ce port n'est pas ouvert dans votre système, n'hésitez pas à choisir un autre port fermé. Assurez-vous simplement qu'il est supérieur à 1023 !
Encore une fois, juste pour être sûr, assurons-nous que le port 4000 n'est pas utilisé, en utilisant le netstat
ou le ss
commande.
netstat -na | grep :4000
ss -na | grep :4000
La sortie doit rester vide, vérifiant ainsi qu'elle n'est pas utilisée actuellement, afin que nous puissions ajouter manuellement les règles de port au pare-feu système iptables .
Pour les utilisateurs Ubuntu et les systèmes basés sur un pare-feu ufw
Ubuntu a un pare-feu appelé ufw
, qui prend en charge ces règles pour les ports et les connexions, au lieu de l'ancien iptables
pare-feu. Si vous êtes un utilisateur Ubuntu, vous pouvez directement ouvrir le port en utilisant ufw
sudo ufw allow 4000
Vous pouvez ignorer les étapes suivantes et tester directement votre nouveau port !
Pour les systèmes basés sur CentOS et pare-feu
Pour ces types de systèmes, si vous avez firewalld
comme pare-feu principal, il est recommandé d'utiliser le firewall-cmd
pour mettre à jour vos règles de pare-feu, au lieu de l'ancien iptables
pare-feu.
firewall-cmd --add-port=4000/tcp
REMARQUE :Cela réinitialisera le firewalld
règles par défaut lors d'un redémarrage, donc si vous souhaitez modifier ce paramètre de manière permanente, ajoutez le --permanent
drapeau à la commande.
firewall-cmd --add-port=4000/tcp --permanent
Vous pouvez ignorer les étapes suivantes et tester directement votre nouveau port !
Pour les autres distributions Linux
Ajoutons donc ce nouveau port à nos règles système iptables, en utilisant iptables
commande.
Si cette commande n'est pas encore installée, récupérez-la à l'aide de votre gestionnaire de packages.
iptables -A INPUT -p tcp --dport 4000 -j ACCEPT
Cela définit le pare-feu pour ajouter (-A
) la nouvelle règle pour accepter les paquets d'entrée via le protocole (-p
) TCP où le port de destination (--dport
) est 4000 , et spécifie le saut cible (-j
) règle comme ACCEPTER .
Pour mettre à jour les règles du pare-feu, redémarrez iptables
services.
sudo service iptables restart
OU en utilisant systemctl
si vous l'avez.
sudo systemctl restart iptables
Testez le port nouvellement ouvert pour les connexions TCP
Maintenant que nous avons ouvert avec succès un nouveau TCP port (Port 4000 dans mon cas), testons-le.
Tout d'abord, nous allons démarrer netcat (nc
) et écoutez sur le port 4000, tout en envoyant la sortie de ls
à tout client connecté. Ainsi, après qu'un client a ouvert une connexion TCP sur le port 4000, il recevra la sortie de ls
.
ls | nc -l -p 4000
Cela fait que netcat écoute sur le port 4000. Laissez cette session tranquille pour l'instant.
Ouvrez une autre session de terminal sur la même machine.
Depuis que j'ai ouvert un port TCP, je vais utiliser telnet
pour vérifier la connectivité TCP. Si la commande n'existe pas, encore une fois, installez-la à l'aide de votre gestionnaire de packages.
Format pour telnet :
telnet [hostname/IP address] [port number]
Entrez donc l'adresse IP de votre serveur et le numéro de port, qui est 4000 dans mon cas, et exécutez cette commande.
telnet localhost 4000
Ceci essaie d'ouvrir une connexion TCP sur localhost
sur le port 4000.
Vous obtiendrez une sortie similaire à celle-ci, indiquant qu'une connexion a été établie avec le programme d'écoute (nc
).
Comme vous pouvez le voir, la sortie de ls
(while.sh
dans mon cas) a également été envoyé au client, indiquant une connexion TCP réussie !
Pour vous montrer que le port est bien ouvert, nous pouvons utiliser nmap
pour vérifier cela.
nmap localhost -p 4000
En effet, notre port a été ouvert ! Nous avons ouvert avec succès un nouveau port sur notre système Linux !
REMARQUE :nmap
répertorie uniquement les ports ouverts qui ont une application en cours d'écoute. Si vous n'utilisez aucune application d'écoute telle que netcat, cela affichera le port 4000 comme fermé, car aucune application n'écoute actuellement sur ce port. De même, telnet ne fonctionnera pas non plus, car il a également besoin d'une application d'écoute à laquelle se connecter. C'est la raison pour laquelle nc
est un outil tellement utile. Cela simule de tels environnements dans une simple commande.
Mais ce n'est que temporaire, car les modifications seront réinitialisées à chaque redémarrage du système.
Besoin de mettre à jour les règles après chaque redémarrage
L'approche présentée dans cet article ne mettra à jour que temporairement les règles de pare-feu jusqu'à ce que le système s'arrête/redémarre. Des étapes similaires doivent donc être répétées pour ouvrir à nouveau le même port après un redémarrage.
Pour le pare-feu ufw
Le ufw
les règles ne sont pas réinitialiser au redémarrage, donc si vous êtes un utilisateur d'Ubuntu, vous n'avez pas à vous soucier de cette partie !
En effet, il est intégré au processus de démarrage et le noyau enregistre les règles du pare-feu à l'aide de ufw
, via les fichiers de configuration appropriés.
Pour pare-feu
Comme mentionné précédemment, firewalld
souffre également du même problème, mais cela peut être évité en ajoutant un --permananent
drapeau à la commande initiale, lors de l'ouverture d'un port ou de la définition de toute autre règle.
Par exemple, vous pouvez ouvrir le port TCP 4000 en permanence à l'aide de la commande ci-dessous :
firewall-cmd --zone=public --add-port=400/tcp --permanent
Pour iptables
Pour les iptables
pare-feu, bien que cet inconvénient ne puisse être évité, nous pourrions minimiser les tracas.
Nous pouvons enregistrer les iptables
règles dans un fichier de configuration, tel que /etc/iptables.conf
.
sudo iptables-save | sudo tee -a /etc/iptables.conf
Nous pouvons ensuite le récupérer à partir du fichier de configuration après le redémarrage, en utilisant la commande ci-dessous :
sudo iptables-restore < /etc/iptables.conf
Maintenant, les iptables
les règles sont maintenant mises à jour et nos ports sont à nouveau ouverts !
Conclusion
Dans ce didacticiel, nous vous avons montré comment ouvrir un nouveau port sous Linux et le configurer pour les connexions entrantes.