337 votes

Comment puis-je lister mes ports réseau ouverts avec netstat ?

J'aimerais répertorier mes ports réseau ouverts dans le terminal avec des commandes intégrées. D'après ce que je sais, netstat est la commande à utiliser. Mais j'ai du mal à en tirer des informations utiles.

Comment puis-je lister mes ports ouverts avec netstat ? Y a-t-il des drapeaux spécifiques qui m'aident dans ce cas ?

483voto

grg Points 181593

netstat -anvp tcp | awk 'NR<3 || /LISTEN/'

Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)     rhiwat shiwat    pid   epid  state    options
tcp46      0      0  *.62981                *.*                    LISTEN      131072 131072  34548      0 0x0100 0x00000006
…

sudo lsof -PiTCP -sTCP:LISTEN

COMMAND     PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
BetterTou 34548 grgarside   20u  IPv4 0xa42a1d0ade5d3585      0t0  TCP *:62981 (LISTEN)
BetterTou 34548 grgarside   21u  IPv6 0xa42a1d0ad67f7a5d      0t0  TCP *:62981 (LISTEN)
…

2 votes

lsof liner est merveilleux car il révèle également les métadonnées du processus et de l'utilisateur et pourrait être exécuté sans sudo pour réduire le champ d'application.

108voto

strivescript Points 1071

Vous pouvez peut-être utiliser lsof :

lsof -Pn -i4

-i4 signifie seulement montrer l'adresse et les ports ipv4 -P et -n sortie rapide

le résultat est le suivant

  lsof -Pn -i4 | grep LISTEN
QQPlatfor 22767 xxxx   15u  IPv4 0x36c2bfa04e49385d      0t0  TCP *:49969 (LISTEN)
GoAgentX  33377 xxxx    4u  IPv4 0x36c2bfa06e68b12d      0t0  TCP *:56154 (LISTEN)
GoAgentX  33377 xxxx   20u  IPv4 0x36c2bfa04e492f8d      0t0  TCP 127.0.0.1:56155 (LISTEN)

5 votes

lsof liste les fichiers ouverts. Les sockets réseau comptent comme des fichiers, donc chaque socket réseau ouvert (soit en écoute, soit en utilisation active) sera listé dans lsof .

23voto

virtualadrian Points 261

Tout d'abord, je ne suis pas un expert BSD, mais comme l'OP, je voulais l'équivalent approximatif de l'exécution de ce qui suit sur une boîte *nix, ou quelque chose de proche :

netstat -tulpn

J'ai lu d'autres questions/réponses proposant lsof* et netstat* sur MacOS, et je voulais toujours quelque chose avec une sortie plus compacte. C'est donc ce que j'ai rapidement mis en place :

netstat -Watnlv | grep LISTEN | awk '{"ps -o comm= -p " $9 | getline procname;colred="\033[01;31m";colclr="\033[0m"; print cred "proto: " colclr $1 colred " | addr.port: " colclr $4 colred " | pid: " colclr $9 colred " | name: " colclr procname;  }' | column -t -s "|"

C'est un peu exagéré, alors j'ai ajouté de la couleur à la sortie pour faire bonne mesure. Comme je ne vais pas être capable de me souvenir, ou de vouloir taper, ce mastodonte. Je l'ai mis dans une fonction bash et je l'appelle juste quand c'est nécessaire. Voici ladite fonction bash :

macnst (){
    netstat -Watnlv | grep LISTEN | awk '{"ps -o comm= -p " $9 | getline procname;colred="\033[01;31m";colclr="\033[0m"; print colred "proto: " colclr $1 colred " | addr.port: " colclr $4 colred " | pid: " colclr $9 colred " | name: " colclr procname;  }' | column -t -s "|"
}

J'ai une petite collection de ces fonctions pratiques dans un fichier que je source à partir de ~/.bash_profile, ou ~/.zshrc. Ceci est ajouté à la collection. Il serait intéressant de voir d'autres possibilités de rendre cela plus beau/plus mince.

Exemple de sortie :

> macns
proto: tcp4     addr.port: 127.0.0.1.9999     pid: 70078    name:  /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46    addr.port: *.35729            pid: 70078    name:  /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46    addr.port: *.62087            pid: 70078    name:  /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46    addr.port: *.62070            pid: 70078    name:  /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46    addr.port: *.62085            pid: 70078    name:  /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp4     addr.port: *.61993            pid: 70043    name:  /Applications/IntelliJ IDEA.app/Contents/MacOS/idea
proto: tcp46    addr.port: *.61992            pid: 70065    name:  /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4     addr.port: 127.0.0.1.42329    pid: 70065    name:  /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4     addr.port: 127.0.0.1.61983    pid: 70043    name:  /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4     addr.port: 127.0.0.1.63342    pid: 70043    name:  /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4     addr.port: 127.0.0.1.6942     pid: 70043    name:  /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4     addr.port: 127.0.0.1.3075     pid: 67931    name:  /Applications/electerm.app/Contents/Frameworks/electerm Helper.app/Contents/MacOS/electerm Helper
proto: tcp6     addr.port: *.58640            pid: 320      name:  /usr/libexec/rapportd
proto: tcp4     addr.port: *.58640            pid: 320      name:  /usr/libexec/rapportd
proto: tcp4     addr.port: 127.0.0.1.9770     pid: 71       name:  /Applications/Pritunl.app/Contents/Resources/pritunl-service

12voto

Rich Points 2429

La méthode la plus simple consiste à utiliser netstat :

$ netstat -ap tcp
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  10.0.2.23.58792        17.172.233.109.5223    ESTABLISHED
tcp4      87      0  my_iMac__at_home.55481 stackoverflow.co.http  ESTABLISHED
tcp4     116      0  my_iMac__at_home.55478 stackoverflow.co.http  ESTABLISHED
tcp4      58      0  my_iMac__at_home.63452 stackoverflow.co.http  ESTABLISHED
tcp4      87      0  my_iMac__at_home.63429 stackoverflow.co.http  ESTABLISHED
tcp4       0      0  localhost.63173        localhost.773          ESTABLISHED
tcp4       0      0  localhost.773          localhost.63173        ESTABLISHED
tcp4       0      0  localhost.63173        *.*                    LISTEN     
tcp4       0      0  localhost.63172        *.*                    LISTEN     
tcp4       0      0  localhost.ipp          *.*                    LISTEN     
tcp6       0      0  localhost.ipp          *.*                    LISTEN     

sans aucun filtrage supplémentaire, afin d'obtenir les bons en-têtes, et de voir les deux serveurs à l'écoute, et les connexions déjà établies dans les deux sens. Dans cet exemple, la 1ère ligne montre une connexion de mon Mac vers 17.172.233.109 qui est un autre :

whois 17.172.233.109

m'a appris qu'il est situé chez Apple.

1 votes

Cette réponse est identique à la réponse déjà acceptée

0 votes

Si vous ne comprenez pas la différence essentielle, essayez-la sur un cas réel d'attaque et vous verrez laquelle est la meilleure pour votre défense.

0 votes

Je comprends la différence essentielle, à savoir que la réponse acceptée filtre uniquement les ports d'écoute, ce qui constitue une meilleure réponse à la question "comment puis-je lister mes ports ouverts ?". Regarder toutes les connexions a de la valeur dans d'autres cas (comme une attaque) mais ce n'est pas ce dont il est question ici.

6voto

muelleth Points 41

Sur la base de l'excellente réponse de @kroolk, je suggérerais cette phrase unique :

netstat -Watnlv | grep LISTEN | awk '{"ps -ww -o args= -p " $9 | getline procname;colred="\033[01;31m";colclr="\033[0m"; print colred "proto: " colclr $1 colred " | addr.port: " colclr $4 colred " | pid: " colclr $9 colred " | name: " colclr procname; }' | column -t -s "|"

...qui ne tronquera pas la sortie de ps (du moins sur mon mac) et donnez la commande complète avec les arguments :-)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X