Comment trouver le nombre de ports ouverts sous Linux?

17

Comment trouver le nombre de ports ouverts sous Linux? Je veux voir si je manque de ports. De plus, comment puis-je voir la limite de mon système d'exploitation?

erotsppa
la source
2
Que faites-vous que vous avez peur de manquer de ports?
MDMarra

Réponses:

27

Sur Linux moderne, utilisez l'utilitaire ss (socket stats).

$ ss -s
Total: 10160 (kernel 10262)
TCP:   10349 (estab 8886, closed 408, orphaned 0, synrecv 0, timewait 393/0), ports 3147

Transport Total     IP        IPv6
*         10262     -         -        
RAW       0         0         0        
UDP       5         5         0        
TCP       9941      9941      0        
INET      9946      9946      0        
FRAG      0         0         0        
Curtis Doty
la source
9
netstat -an | grep ESTABLISHED | wc -l

vous donnera le nombre de ports ouverts, 32 dans mon cas.

cat /proc/sys/net/ipv4/ip_local_port_range

Rendra quelque chose comme:

32768 61000

ce qui signifie, 61000 - 32768 - $ OPENPORTS = AvailablePorts

Sur ma boîte, c'est:

61000-32768-32 = 28200 numéros de port disponibles.

Grizly
la source
le -a46 n'a pas fonctionné. De l'aide?
erotsppa
quelle distribution vous exécutez? (qui fonctionne sur le serveur ubuntu 10.04 LTS). Bien sûr, si vous n'avez pas installé ipv6, utilisez simplement netstat -a.
Grizly
Testé sur ma boîte CentOS, il semble qu'il se bloque si vous n'utilisez pas "-n" pour arrêter la résolution de nom. (netstat -an | grep ESTABLISHED | wc -l)
Grizly
Je viens de voir "ss" ci-dessous, c'est génial, je ne savais pas ... beaucoup mieux! Utilisez ip_local_port_range pour déterminer ce que votre Linux est configuré pour autoriser, mais cela vous montre ce que vous utilisez actuellement dans un format beaucoup plus accessible!
Grizly
8

Comme d'autres l'ont mentionné, netstat est l'outil à utiliser pour déterminer quels ports sont actuellement utilisés. En ce qui concerne les limites, le nombre de ports disponibles est un entier non signé 16 bits qui vous donne la plage 0-65535. Les ports disponibles pour les applications à lier sont les ports réservés / root réservés (0-1024) plus tout ce qui n'est pas couvert par votre plage de ports éphémères.

Vous pouvez afficher vos ports éphémères en exécutant cat /proc/sys/net/ipv4/ip_local_port_range.

Pour modifier cela de manière persistante, vous devez ajouter / modifier "net.ipv4.ip_local_port_range" dans le fichier /etc/sysctl.conf, ou de manière interactive avec sysctl -n net.ipv4.ip_local_port_range="<start_port> <end_port>"

Alex
la source
1
cueillette de nit, mais ce n'est pas exactement une limite ipv4. C'est une limite tcp / udp. et ceux qui fonctionnent indépendamment d'ipv4. (ex. ipv6 ne fait rien pour la couche transport)
Joel K
Aaah, tu as raison. J'ai supprimé la référence IPV4 dans ma réponse.
Alex
1

Personnellement, je préfère nmap. Vous pouvez trouver l'état de tous les ports en émettant la cible nmap -P 1-65535. La plupart des distributions devraient avoir ce package disponible via leur gestionnaire de packages.

ThaKidd KG5ORD
la source
1

Essayer

# lsof -n -i -P 

Par souci d'exhaustivité :)

Yuri
la source
0

netstat vous permettra de voir quels ports sont ouverts, faites "netstat -" pour voir ce qui correspond le mieux à vos besoins.

jer.salamon
la source
1
netstat --inetaidera le plus.
Paul Tomblin
Je voulais dire -? caractère manquant.
jer.salamon
ou lisez la page de
manuel
Incluez également --inet6 (abréviation pour les deux: -4 -6), pour obtenir des sockets IPv6 et des sockets ip-agnostic (ce dernier étant la valeur par défaut sur les hôtes à double pile, voir rfc 3493 section 3.7).
Tobu
0

'nmap localhost' vous donnera tous vos ports ouverts et services fonctionnant sur eux.

Vivek Varghese Cherian
la source
1
pas vraiment, il ne scannera les ports que pour 127.0.0.1, pas pour toute IP wan
Lucas Kauffman
0

netstat -tulnp

Les arguments du programme netstat sont répertoriés ci-dessous:

*

  t - Show TCP
*

  u - Show UDP
*

  l - Show only listening processes (netstat can show both listening and all established connections, i.e. as a client too)
*

  n - Do not resolve network IP address names or port numbers
*

  p - Show the process name that is listening on the port
Rajat
la source
0

utilisez la commande suivante sur le terminal pour vérifier tous les ports

netstat -lntu

Pour voir un état de ports spécifique, utilisez la commande suivante

netstat -an | grep ':6060'

remplacez 6060 par votre numéro de port spécifique.

Samuel
la source