Obtenha uma lista de portas abertas no Linux

157

Eu preciso de um comando Linux para listar todas as portas abertas para uso em um aplicativo

lsof -i TCP| fgrep LISTEN

Não parece estar ajudando, pois as Portas que ele lista não são necessariamente gratuitas para uso. Como faço para listar as portas abertas livres que não estão em uso?

    
por ErrorNotFoundException 08.01.2013 / 08:34

5 respostas

227
netstat -lntu

como respondido por @askmish lhe dará uma lista de serviços em execução no seu sistema nas portas tcp e udp onde

  • -l = apenas serviços que estão escutando em alguma porta
  • -n = show port number, não tente resolver o nome do serviço
  • -t = portas tcp
  • -u = portas udp
  • -p = nome do programa

Você não precisa do parâmetro 'p' porque está interessado apenas em saber quais portas são gratuitas e não qual programa está sendo executado.

Isso só mostra quais portas do seu sistema estão esgotadas. Isso não informa o status da sua rede, por exemplo, se você estiver por trás do NAT e quiser que alguns serviços sejam acessíveis de fora. Ou se o firewall estiver bloqueando a porta para visitantes externos. Nesse caso, o nmap vem para o resgate. AVISO: Use o nmap somente em redes que estão sob seu controle. Além disso, existem regras de firewall que podem bloquear pings nmap, você terá que mexer nas opções para obter resultados corretos.

    
por 08.01.2013 / 12:51
59

Como net-tools está obsoleto , você pode usar o ss command em vez de netstat if netstat is não está presente na sua máquina:

ss -lntu

deve funcionar de forma semelhante a

netstat -lntu

de acordo com a ajuda integrada:

-n, --numeric       don't resolve service names
-l, --listening     display listening sockets
-t, --tcp           display only TCP sockets
-u, --udp           display only UDP sockets
    
por 08.06.2016 / 22:19
19

Este comando listará as portas de rede abertas e os processos que as possuem:

netstat -lnptu

você pode depois filtrar os resultados para suas especificações exatas.

Você também pode usar nmap para obter resultados mais granulares sobre as portas.

    
por 08.01.2013 / 08:45
4

Todas as portas abertas, incluindo o tráfego de resposta:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
    
por 03.11.2014 / 05:33
0

O comando a seguir funcionará em qualquer Unix que tenha saída no mesmo formato que o Ubuntu / Debian - onde o endereço local está na coluna 4 e a saída inclui um cabeçalho de 2 linhas na parte superior. Se qualquer um desses números for diferente, ajuste o comando awk abaixo.

Se você quiser apenas IPv4:

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

Se você quiser apenas IPv6:

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

Se você quer os dois juntos:

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

O comando gera uma lista de números de porta que estão escutando em todas as interfaces. Se você quiser listar todas as portas que estão escutando na interface localhost, use algo assim:

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

Tags