Portas abertas no Linux [Guia Básico]

Parte do diagnóstico de rede, é verificar os serviços com portas abertas no Linux.

Como Verificar as Portas Abertas no Linux

Para verificar as portas em aberto com o netstat, as opções “-tunl” podem ser usadas:

  •  -t para TCP
  • -u para UDP
  • -n para não resolver nomes
  • -l para as portas abertas (listen)

Neste exemplo, o netstat lista as portas abertas TCP/UDP:

$ netstat -tunl
Active Internet connections (only servers)
Proto Local Address   Foreign Address
tcp    127.0.0.53:53   0.0.0.0:* 
tcp    0.0.0.0:22      0.0.0.0:*
tcp6   0 :::22           :::*  
udp    127.0.0.53:53   0.0.0.0:*

O netstat com a opção -p mostra os processos donos das portas. Para utilizar essa opção é preciso ser o root:

$ sudo netstat -tunlp
Active Internet connections (only servers)
Proto Local Address   State   PID/Program name    
tcp    127.0.0.53:53   LISTEN  24813/systemd-resol 
tcp    0.0.0.0:22      LISTEN  9857/sshd           
tcp6   :::22           LISTEN  9857/sshd           
udp    127.0.0.53:53      24813/systemd-resol 

O comando ss também pode mostrar as portas abertas com a opção idêntica:

# ss -tunelp
Netid  Local Address:Port  Peer Address:Port                                                                                  
udp    127.0.0.53%lo:53    0.0.0.0:*   ("systemd-resolve",pid=355)
udp    0.0.0.0:68          0.0.0.0:*   ("dhclient",pid=17984)
udp    0.0.0.0:5353        0.0.0.0:*   ("avahi-daemon",pid=27533)
tcp    0.0.0.0:22          0.0.0.0:*   ("sshd",pid=14825)

Comando lsof no Linux

Como tudo no Linux é um arquivo, também as conexões de rede podem ser visualizadas como um “arquivo em aberto”. O comando “lsof” pode ser usado neste contexto para ver os arquivos que correspondem a endereços de Internet.

A opção “-i” do lsof filtra os arquivos em aberto do tipo de endereços de Internet. É necessário executar o lsof como root:

$ sudo lsof -i
COMMAND     PID            USER   FD   TYPE  NODE NAME
sshd       9857            root    3u  IPv4  TCP *:ssh (LISTEN)
sshd       9857            root    4u  IPv6  TCP *:ssh (LISTEN)
systemd-r 24813 systemd-resolve   12u  IPv4  UDP localhost:domain 
systemd-r 24813 systemd-resolve   13u  IPv4  TCP localhost:domain (LISTEN)

Comando fuser no Linux

O comando “fuser” também pode ser usado para mostrar informações sobre uma determinada porta em aberto. Ele identifica os processos através dos arquivos ou sockets, retornando o PID dos processos:

$ sudo fuser 22/tcp
22/tcp:               9857 24313 24400

Para saber qual processo está usando determinado arquivo:

$ fuser -v /bin/bash
                     USER     PID ACCESS COMMAND
/usr/bin/bash:       ec2-user  16092 ...e. bash

Os comandos netstat, ss, lsof e fuser servem para ver as portas em aberto da máquina local.

Existe uma ferramenta chamada nmap que pode também descobrir as portas em aberto tanto da máquina local, quanto de máquinas remotas.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe