Question Vérifiez si le port est ouvert ou fermé sur un serveur Linux?


Comment puis-je vérifier si un port écoute sur un serveur Linux?


170
2017-09-07 17:24


origine


Ce que vous demandez n'est pas tout à fait clair. Qu'entendez-vous par "ouvert"? Voulez-vous dire qu'un serveur écoute sur ce port? Ou voulez-vous dire que c'est autorisé par le pare-feu du système? Ou quoi? - David Schwartz
Je pense qu'un port est bloqué sur mon serveur et je veux le débloquer / l'ouvrir à nouveau. - James Anderson
netstat -an | grep PORTNUMBER | grep -i listen Si la sortie est vide, le port n'est pas utilisé. - automatix


Réponses:


Vous pouvez vérifier si un processus écoute sur un port TCP ou UDP avec netstat -tuplen.

Pour vérifier si certains ports sont accessibles de l’extérieur (c’est probablement ce que vous voulez), vous pouvez utiliser un scanner de ports comme Nmap de un autre système. Exécuter Nmap sur le même hôte que vous voulez vérifier est tout à fait inutile.


158
2017-09-07 17:31



GNU netstat connaît les paramètres -t, -u, -p, -l, -e, et -n. Grâce à l’analyseur d’options, il peut être exprimé par -tuplen. linux.die.net/man/8/netstat - joschi
Également telnet La commande ne prend généralement en charge que le protocole TCP. Vous n'avez donc pas de chance si le service que vous souhaitez vérifier s'exécute sur un autre protocole. - joschi
oui, j'utilisais des fenêtres d'où la confusion. - Dexter
nc est (mieux) une alternative à telnet. Il supporte aussi UDP. - Tsvetomir Dimitrov
Utilisez-le avec sudo: sudo netstat -tuplen. Cela vous donnera des processus appartenant non seulement à vous, mais aussi à d'autres, et imprimera des détails supplémentaires (tels que PID / nom du programme) s'ils ne sont pas déjà affichés en tant qu'utilisateur non root. - John Red


Le moyen le plus rapide de tester si un port TCP est ouvert (y compris les pare-feu matériels que vous pourriez avoir) consiste à taper, à partir d'un ordinateur distant (par exemple, votre bureau):

telnet myserver.com 80

Qui va essayer d'ouvrir une connexion au port 80 sur ce serveur. Si vous obtenez une pause ou un refus, le port n'est pas ouvert :)


83
2017-09-07 17:33



dit qu'il ne reconnaît pas "telnet" en tant que commande ... - James Anderson
"yum install telnet" pour installer le package du client telnet. - cjc
Dit: telnet: connectez-vous à l'adresse 82.165.148.224: connexion refusée - James Anderson
Écrit ci-dessus: if you get a time out or deny, the port is not open - Industrial
Que faire si vous n'avez pas de permanente pour installer telnet? Existe-t-il un autre outil standard? - KC Baltz


OK, en résumé, vous avez un serveur auquel vous pouvez vous connecter. Vous voulez voir si quelque chose écoute sur un port. En tant que root, lancez:

netstat -nlp

Cela affichera une liste des processus d'écoute sur les ports TCP et UDP. Vous pouvez analyser (ou grep) le processus qui vous intéresse et / ou les numéros de port que vous souhaitez voir.

Si le processus auquel vous vous attendez n'existe pas, vous devez le démarrer et vérifier à nouveau netstat. Si le processus est en place, mais qu'il écoute sur une interface et un port auxquels vous ne vous attendiez pas, il y a un problème de configuration (par exemple, il peut être en train d'écouter, mais uniquement sur l'interface de bouclage, de sorte que 127.0.0.1:3306 et pas d'autres lignes pour le port 3306, dans le cas de la configuration par défaut pour MySQL).

Si le processus est terminé et qu'il écoute sur le port que vous attendez, vous pouvez essayer d'exécuter un "telnet" sur ce port depuis votre Macbook dans votre bureau / domicile, par exemple,

 telnet xxxxxxxxxxxx.co.uk 443

Cela vérifiera si (en supposant les ports standard) s’il existe un serveur Web configuré pour SSL. Notez que ce test utilisant telnet ne fonctionnera que si le processus écoute sur un port TCP. Si c'est un port UDP, vous pouvez aussi essayer avec n'importe quel client que vous alliez utiliser pour vous y connecter. (Je vois que vous avez utilisé le port 224. Ceci est masqdialer, et je n'ai aucune idée de ce que c'est).

Si le service existe, mais que vous ne pouvez pas y accéder de l'extérieur, un pare-feu vous bloque. Dans ce cas, lancez:

 iptables -L -n

Cela affichera toutes les règles de pare-feu telles que définies sur votre système. Vous pouvez poster cela, mais généralement, si vous n'autorisez pas tout sur la chaîne INPUT, vous devrez probablement autoriser explicitement le trafic sur le port en question:

 iptables -I INPUT -p tcp --dport 224 -j ACCEPT

Ou quelque chose du genre. N'exécutez pas vos commandes de pare-feu à l'aveuglette en vous basant sur ce qu'un étranger vous a dit sur Internet. Considérez ce que vous faites.

Si votre pare-feu sur le boîtier autorise le trafic souhaité, il est possible que votre hébergeur utilise un pare-feu (par exemple, il autorise uniquement SSH (22 / tcp), HTTP (80 / tcp) et HTTPS (443 / tcp). et refuser tout autre trafic entrant). Dans ce cas, vous devrez ouvrir un ticket de support technique avec eux pour résoudre ce problème, bien que je suppose qu'il se peut que quelque chose dans votre cPanel le permette.


23
2017-09-07 20:01



Pourriez-vous svp ajouter comment annuler la commande iptables -I? Merci!! - Evgeny
"iptables -D" suivi de tout ce que vous avez après le "-I" dans la commande d'origine. Fondamentalement, recherchez la documentation. - cjc


J'utilise le combo de netstatet lsof:

netstat -an | grep <portnumber>
lsof -i:<portnumber>

Pour voir si le port est utilisé et ce qui l’utilise.


8
2018-03-28 19:32



rien ne demande avec ou sans sudo - Dheeraj Thedijje
@DheerajThedijje - alors ce port n'est pas ouvert - warren
Oui ce n'était pas, compris. - Dheeraj Thedijje


Si vous êtes connecté au système et pouvez exécuter une commande en tant que root, vous pouvez vérifier la sortie de iptables.

iptables -L -vn

cela listera les règles de pare-feu et les ports cibles ouverts ACCEPT et toute cible de ports explicitement fermée REJECT.


7
2017-09-07 17:57



Et si vous avez un pare-feu, c'est plus simple firewall-cmd --query-port=port/protocol, par exemple. firewall-cmd --query-port=80/tcp. - Agostino


lsof -i :ssh listera tous les processus avec le port ssh ouvert, les connexions à l'écoute et actives.


5
2018-01-25 21:45



Préfixe sudo si elle ne renvoie aucune sortie. - Elijah Lynn