Questão Obter uma lista de portas abertas no Linux


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

lsof -i TCP| fgrep LISTEN

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


151


origem


//, e se netstat não estiver disponível no host? - Nathan Basanese


Respostas:


netstat -lntu

como respondido por @askmish lhe dará lista de serviços em execução no seu sistema em tcp e portas 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', pois só está interessado em saber quais portas são gratuitas e não qual programa está sendo executado.

Isso mostra apenas 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 com opções para obter resultados corretos.


216



Observe que netstat está obsoleto em muitos sistemas e ss deve ser usado em seu lugar. - Johu


Desde a net-tools está obsoleto, você pode usar o ss comando ao invés de netstat E se netstat não está presente na sua máquina:

ss -lntu

deve funcionar de forma semelhante ao

netstat -lntu

de acordo com a ajuda interna:

-n, --numeric       don't resolve service names
-l, --listening     display listening sockets
-t, --tcp           display only TCP sockets
-u, --udp           display only UDP sockets

53





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

netstat -lnptu

Depois disso, você pode filtrar os resultados para suas especificações exatas.

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


19



O sinalizador -p requer privilégios de root para alguns processos, então seria sudo netstat -lnptu - klaus se


Todas as portas abertas incluindo tráfego de resposta:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l

4



Uma lista de somente números de porta exclusivos e somente IPv4: netstat -tuwanp4 | awk '{print $4}' | grep ':' | cut -d ":" -f 2 | sort | uniq - Aaron C. de Bruyn
1 para mostrar como filtrar e extrair os números do resultado. Editado para remover a saída stderr do netstat (que adiciona um cabeçalho ao resultado no Ubuntu). - datashaman
Hmm, em segunda opinião. -1 por não responder a pergunta. - datashaman


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 como isto:

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

0