Question Obtenir une liste des ports ouverts sous Linux


J'ai besoin d'une commande Linux pour répertorier tous les ports ouverts libres à utiliser dans une application

lsof -i TCP| fgrep LISTEN

Ne semble pas aider car les ports qu'il répertorie ne sont pas nécessairement libres d'utilisation. Comment lister les ports ouverts libres non utilisés?


151
2018-01-08 07:34


origine


//, Et si netstat n'est pas disponible sur l'hôte? - Nathan Basanese


Réponses:


netstat -lntu

comme répondu par @askmish vous donnera la liste des services exécutés sur votre système sur les ports TCP et UDP où

  • -l = uniquement les services qui écoutent sur certains ports
  • -n = afficher le numéro de port, n'essayez pas de résoudre le nom du service
  • -t = ports TCP
  • -u = ports udp
  • -p = nom du programme

Vous n'avez pas besoin du paramètre « p » que vous êtes seulement intéressés à obtenir les ports sont libres et non quel programme en cours d'exécution sur elle.

Cela montre seulement quels ports de votre système sont utilisés, cependant. Cela ne vous dit pas le statut de votre réseau, par ex. Si vous êtes derrière NAT et que vous souhaitez que certains services soient accessibles de l'extérieur. Ou si le pare-feu bloque le port pour les visiteurs extérieurs. Dans ce cas, nmap vient à la rescousse. AVERTISSEMENT: Utilisez nmap uniquement sur les réseaux sous votre contrôle. En outre, il existe des règles de pare-feu qui peuvent bloquer les pings nmap, vous devrez manipuler les options pour obtenir des résultats corrects.


217
2018-01-08 11:51



Notez que netstat est déconseillé sur de nombreux systèmes et ss devrait être utilisé à la place. - Johu


Depuis net-tools est déconseillé, vous pouvez utiliser le ss commander au lieu de netstat si netstat n'est pas présent sur votre machine:

ss -lntu

devrait fonctionner de manière similaire à

netstat -lntu

selon l'aide intégrée:

-n, --numeric       don't resolve service names
-l, --listening     display listening sockets
-t, --tcp           display only TCP sockets
-u, --udp           display only UDP sockets

53
2018-06-08 20:19





Cette commande répertorie les ports réseau ouverts et les processus qui leur appartiennent:

netstat -lnptu

Vous pouvez ensuite filtrer les résultats selon vos spécifications exactes.

Vous pouvez aussi utiliser nmap pour des résultats plus précis sur les ports.


19
2018-01-08 07:45



L’indicateur -p nécessite des privilèges root pour certains processus. sudo netstat -lnptu - klaus se


Tous les ports ouverts, y compris le trafic de réponse:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l

4
2017-11-03 04:33



Une liste de juste numéros de port uniques et uniquement IPv4: netstat -tuwanp4 | awk '{print $4}' | grep ':' | cut -d ":" -f 2 | sort | uniq - Aaron C. de Bruyn
+1 pour montrer comment filtrer et extraire les nombres du résultat. Édité pour supprimer la sortie de stderr de netstat (qui ajoute un en-tête au résultat dans Ubuntu). - datashaman
Hmm, à la réflexion. -1 pour ne pas répondre à la question. - datashaman


La commande suivante fonctionnera sur n'importe quel Unix qui sortira dans le même format que Ubuntu / Debian - où l'adresse locale est dans la colonne 4 et la sortie inclut un en-tête de 2 lignes en haut. Si l'un de ces nombres est différent, ajustez la commande awk ci-dessous.

Si vous souhaitez uniquement IPv4:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq

Si vous voulez uniquement IPv6:

netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq

Si vous voulez les deux ensemble:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq

La commande affiche une liste des numéros de port à l'écoute de toutes les interfaces. Si vous souhaitez répertorier tous les ports qui écoutent l’interface localhost, utilisez quelque chose comme ceci:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq

0
2018-04-04 06:29