/ #Impressões #Linux 

Netstat Saiba O Que Esta Rolando Em Seu Ambiente

Saudações pessoal,

Que tal saber um pouco mais sobre o que lhe cerca virtualmente? Conexões de rede às quais sua máquina está ligada, tabelas de roteamento, estatísticas de interfaces, conexões mascaradas, multicasting, etc.. ?

Apesar de muitos conhecerem o netstat, poucos sabem que ele é capaz de tudo isso e mais um pouco. O netstat é sem sombra de dúvidas uma rica ferramenta que possui inúmeros comandos e combinações que sequer cabem em um artigo simples como este post.

A ideia vai ser apenas apresentar algumas opções que podem ser bem interessantes no dia a dia de um administrador de redes/sysadmin.

Vamos lá…

1. Listar todas as portas, incluindo portas que estão sendo escutadas e portas que não estão:

1.1 Para listar TODAS as portas, podemos utilizar o parâmetro -a:

[root@tuxcaverna ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost.localdo:55481 *:*                     LISTEN
tcp        0      0 *:60634                 *:*                     LISTEN
tcp        0      0 *:6881                  *:*                     LISTEN
tcp        0      0 172.16.1.6:46714        gru03s08-in-f20.1:https TIME_WAIT
tcp        0      0 172.16.1.6:40899        gx-in-f138.1e1:www-http ESTABLISHED
tcp        0      0 localhost.localdo:48742 localhost.localdo:55481 ESTABLISHED
tcp        0      0 172.16.1.6:48643        125-233-152-234.d:21990 TIME_WAIT
tcp        0      0 172.16.1.6:46717        gru03s08-in-f20.1:https TIME_WAIT
tcp        0      0 172.16.1.6:57293        apache2-fungi.:www-http TIME_WAIT
tcp        0      0 172.16.1.6:36444        gru03s05-in-f22.1:https ESTABLISHED
tcp        0      0 172.16.1.6:57659        gru03s06-in-f1:www-http ESTABLISHED
tcp        0      0 localhost.localdo:55481 localhost.localdo:48742 ESTABLISHED
tcp        0      0 172.16.1.6:50581        gru03s06-in-f23.1:https ESTABLISHED
tcp        0      0 172.16.1.6:39979        sn1msg1010828.phx.:msnp ESTABLISHED
...

Não coloquei a saída inteira, pois era bem extensa e ainda temos muitos parâmetros para ver. Onde existe XXX.XX.X.XX, obviamente, era o endereço IP que ocultei por puro protesto pela alta no preço do amendoim.

1.2 Para listar todas as portas UDP, utilizamos os parâmetros -au:

[root@tuxcaverna ~]# netstat -au

Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:bootpc *:* udp 0 0 *:49119 *:* udp 0 0 *:mdns *:*

1.3 Para listar todas as portas TCP, utilizamos os parâmetros -at:

[root@tuxcaverna ~]# netstat -at
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.localdo:39307 *:* LISTEN tcp 0 0 *:64758 *:* LISTEN tcp 0 0 XXX.XX.X.XX:54293 gru03s06-in-f21.1:https ESTABLISHED tcp 1 0 XXX.XX.X.XX:58732 sn1msg3020104.sn1.:msnp CLOSE_WAIT

2. Listar os Sockets que estão no estado Listening ou escuta:

2.1 Para listar todas no estado Listening, utilizamos o parâmetro -l:

[root@tuxcaverna ~]# netstat -l

Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.localdo:39307 *:* LISTEN tcp 0 0 *:64758 *:* LISTEN Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 10443 @/tmp/.ICE-unix/1396 unix 2 [ ACC ] STREAM LISTENING 8262 /var/run/xdmctl/dmctl/socket unix 2 [ ACC ] STREAM LISTENING 8277 /var/run/xdmctl/dmctl-:0/socket

2.2 Para listar apenas as portas TCP no estado Listening, utilizamos os parâmetros -lt:

[root@tuxcaverna ~]# netstat -lt

Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.localdo:39307 *:* LISTEN tcp 0 0 *:64758 *:* LISTEN

2.3 Para listar apenas as portas UNIX em estado Listening, utilizamos os parâmetrox -lx:

[root@tuxcaverna ~]# netstat -lx

Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 10443 @/tmp/.ICE-unix/1396 unix 2 [ ACC ] STREAM LISTENING 8262 /var/run/xdmctl/dmctl/socket unix 2 [ ACC ] STREAM LISTENING 8277 /var/run/xdmctl/dmctl-:0/socket

3. Apresentar as estatísticas para cada protocolo:

3.1 Para apresentar as estatísticas de todos os protocolos, utilizamos o parâmetro -s:

[root@tuxcaverna ~]# netstat -s

Ip: 98790 total packets received 54 with invalid headers 2 with invalid addresses 0 forwarded 0 incoming packets discarded 94778 incoming packets delivered 79070 requests sent out Icmp: 0 ICMP messages received 0 input ICMP message failed. ICMP input histogram: 0 ICMP messages sent 0 ICMP messages failed ICMP output histogram: Tcp: 2019 active connections openings 2 passive connection openings 10 failed connection attempts 161 connection resets received 14 connections established 88977 segments received 75703 segments send out 297 segments retransmited 0 bad segments received. 216 resets sent Udp: 2986 packets received 0 packets to unknown port received. 0 packet receive errors 3080 packets sent 0 receive buffer errors 0 send buffer errors

...

...

3.2 Para apresentar as estatísticas do protocolo TCP (ou) UDP, utilizamos os parâmetros -st (ou) -su:

[root@tuxcaverna ~]# netstat -st

Tcp: 2031 active connections openings 2 passive connection openings 10 failed connection attempts 164 connection resets received 10 connections established 89257 segments received 76010 segments send out 297 segments retransmited 0 bad segments received. 219 resets sent

ou

[root@tuxcaverna ~]# netstat -su

Udp: 3012 packets received 0 packets to unknown port received. 0 packet receive errors 3107 packets sent 0 receive buffer errors 0 send buffer errors

4. Apresentar o PID (ID do prcesso) e os nomes de programas:

4.1 Neste caso utilizamos o netstat com o parâmetro -p para receber a informação de “PID/Nome do Programa” na saída do netstat. Esta opção é muito útil para debugar e identificar qual programa está rodando em uma porta específica. O parâmetro -p pode ser combinado com demais parâmetros:

[root@tuxcaverna ~]# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 XXX.XX.X.X:6881         83-228-34-45.btc-:11729 SYN_RECV    -
tcp        0      0 XXX.XX.X.X:39508        200.123.194.16:www-http ESTABLISHED 30741/chromium
tcp        0      0 XXX.XX.X.X:36321        208.46.17.59:www-http   ESTABLISHED 30741/chromium
tcp        0      0 XXX.XX.X.X:57411        65.55.142.101:https     ESTABLISHED 3292/python2
tcp        0      0 XXX.XX.X.X:6881         bd3e1c77.virtua.c:59298 ESTABLISHED 20447/qbittorrent

5. Não resolver host, porta ou nome de usuário:

5.1 Utiliza-se o parâmetro -an quando não se deseja receber na saída do netstat informações de host, porta ou usuarios com seus respectivos nomes resolvidos. Ao invés destas informações virão números:

[root@tuxcaverna ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:61108           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:6881            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:49155         0.0.0.0:*               LISTEN

5.2 Se você não quizer descartar as 3 informações de uma vez, pode optar por ocultar apenas uma em específico, conforme abaixo:

[root@tuxcaverna ~]# netstat -a –numericports

ou

[root@tuxcaverna ~]# netstat -a -numeric-hosts

ou

[root@tuxcaverna ~]# netstat -a numeric-users

6. Que tal ter uma saída contínua de informações em tempo real? Para isso usa-se o parâmetro -c, que vai atualizar as informações do netstat a cada segundo:

[root@tuxcaverna ~]# netstat -c
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 XXX.XX.X.X:57411        65.55.142.101:https     ESTABLISHED
tcp        0      0 XXX.XX.X.X:6881         bd3e1c77.virtua.c:59298 ESTABLISHED
tcp        1      0 XXX.XX.X.X:49920        sn1msg2010605.phx.:msnp CLOSE_WAIT
tcp        0      0 XXX.XX.X.X:45554        111-240-177-108.dy:8921 TIME_WAIT

7. Encontrar famílias de endereços não suportadas em seu sistema:

Utilizamos o parâmetro –verbose. Repare que nas últimas linhas do retorno teremos algo como:

[root@tuxcaverna ~]# netstat -c
netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.

8. Para apresentar informações de rotas do kernel utilizamos o parâmetro -r:

[root@tuxcaverna ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         172.16.1.1      0.0.0.0         UG        0 0          0 wlan0
172.16.1.0      *               255.255.255.0   U         0 0          0 wlan0

…ou, pode-se utilizar -rn para apresentar em formato numérico ao invés de nomes de hosts.


9. Para descobrir em qual porta um determinado programa está rodando utilizamos os parâmetros -ap:

[root@tuxcaverna ~]# netstat -ap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:61108                 *:*                     LISTEN      3452/wish
tcp        0      0 *:6881                  *:*                     LISTEN      20447/qbittorrent
tcp        0      0 localhost.localdo:49155 *:*                     LISTEN      4010/GoogleTalkPlug
tcp        0    269 172.16.1.3:58742        52.60.in-addr.arp:12814 FIN_WAIT1   -
tcp        0      0 172.16.1.3:6881         bd3e1c77.virtua.c:59298 ESTABLISHED 20447/qbittorrent

9.1 Se quizer especificar o programa, ao invés de o procurar em uma extensa lista, utilize um filtro com o grep da seguinte forma:

[root@tuxcaverna ~]# netstat -ap | grep chromium
unix  2      [ ACC ]     STREAM     LISTENING     252100   30741/chromium       /tmp/.org.chromium.Chromium.bSJLzX/SingletonSocket
unix  3      [ ]         STREAM     CONNECTED     309051   30741/chromium
unix  3      [ ]         STREAM     CONNECTED     308785   30741/chromium

9.2 Se ao invés de especificar o programa, você quizer especificar uma porta e saber o que está rodando nela, pode-se utilizar o filtro do grep da seguinte forma:

[root@tuxcaverna ~]# netstat -an | grep ‘:80’

10. Para terminar, podemos utilizar o parâmetro -i para listar nossas interfaces de rede:

[root@tuxcaverna ~]# netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500 0         0      0      0 0             0      0      0      0 BMU
lo    16436 0       662      0      0 0           662      0      0      0 LRU
wlan0  1500 0    157377      0      4 0        133487      0      0      0 BMRU

Se desejar informações mais detalhadas sobre cada interface, pode-se utilizar a combinação de parâmetros -ie:

[root@tuxcaverna ~]# netstat -ie
Kernel Interface table
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500  metric 1
ether a4:ba:db:d7:41:c0  txqueuelen 1000  (Ethernet)
RX packets 0  bytes 0 (0.0 B)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 0  bytes 0 (0.0 B)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
device interrupt 47  base 0xc000

Happy Hacking…