2013-01-08 07:34:55 +0000 2013-01-08 07:34:55 +0000
202
202

Obtenha uma lista de Portos Abertos em Linux

Preciso de um comando Linux para listar todos os Portos Abertos gratuitos para utilização numa aplicação

lsof -i TCP| fgrep LISTEN

Não é visto como uma ajuda, uma vez que os Portos que lista não são necessariamente gratuitos para utilização. Como faço para listar as portas livres abertas que não estão a ser utilizadas?

Respostas (7)

268
268
268
2013-01-08 11:51:03 +0000
netstat -lntu

como resposta de @askmish dar-lhe-á uma lista de serviços a correr no seu sistema nas portas tcp e udp onde

  • -l = apenas serviços que estão a ouvir em alguma porta
  • -n = mostrar o número da porta, não tente resolver o nome do serviço
  • -t = tcp ports
  • -u = udp ports
  • -p = nome do programa

Não precisa do parâmetro ‘p’ pois só está interessado em obter que portas são livres e não que programa está a correr nele.

Isto mostra apenas quais as portas do seu sistema que estão gastas. Isto não lhe diz o estado da sua rede, por exemplo, se está atrás de NAT e quer que alguns serviços sejam acessíveis a partir do exterior. Ou se a firewall está a bloquear a porta para visitantes externos. Nesse caso, o nmap vem em socorro. AVISO: Utilize o nmap apenas em redes que estejam sob o seu controlo. Além disso, existem regras de firewall que podem bloquear os nmap pings, terá de se mexer com as opções para obter resultados correctos.

93
93
93
2016-06-08 20:19:05 +0000

Uma vez que net-tools está obsoleto , pode utilizar o comando ss em vez de netstat se netstat não estiver 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
21
21
21
2013-01-08 07:45:50 +0000

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

netstat -lnptu pode depois filtrar os resultados de acordo com as suas especificações exactas.

Também pode usar o nmap para resultados mais granulares sobre as portas.

5
5
5
2014-11-03 04:33:36 +0000

Todos os portos abertos, incluindo tráfego de resposta:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
1
1
1
2019-01-16 23:21:34 +0000

A minha opinião sobre a pergunta inicial era que ele estava a fazer perguntas sobre os portos não utilizados, e não sobre os portos actualmente ligados aos serviços. Se for este o caso, não há maneira específica de os listar, a não ser listando os portos usados e assumindo que os outros não são utilizados.

Um ponto adicional a ter em mente: como utilizador, não poderá abrir um porto inferior a 1024 (para isso necessitará de permissões de root).

0
0
0
2019-01-16 19:51:05 +0000

Experimente

sudo netstat -plnt | grep -E '(0.0.0.0:|:::|127.0.0.1:|::1:)' | awk 'NR>2{print $7}' | sort -n | uniq

e veja isto.

0
0
0
2016-04-04 06:29:27 +0000

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

Se quiser apenas IPv4:

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

Se quiser apenas IPv6:

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

Se quiser os dois juntos:

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

O comando emite uma lista de números de portas que estão à escuta em todos os interfaces. Se quiser listar todas as portas que estão à escuta no interface localhost, então use algo como isto:

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