Pesquisa de site

15 ‘Exemplos de comando Sockstat’ úteis para encontrar portas abertas no FreeBSD


Sockstat é um utilitário de linha de comando versátil usado para exibir soquetes abertos de rede e sistema no FreeBSD. Principalmente, o comando meiasstat é instalado por padrão no FreeBSD e é comumente usado para exibir o nome dos processos que abriram uma determinada porta de rede em um sistema FreeBSD.

No entanto, sockstat também pode listar soquetes abertos com base na versão do protocolo (ambas as versões IP), no estado da conexão e em quais portas um daemon ou programa se liga e escuta.

Leia também: 20 exemplos úteis de comando ‘netstat’ para verificar conexões de rede

Ele também pode exibir soquetes de comunicação entre processos, normalmente conhecidos como soquetes de domínio Unix ou IPC. O comando Sockstat combinado com o filtro grep ou canalizado através do utilitário awk prova ser uma ferramenta poderosa para a pilha de rede local.

Ele pode reduzir os resultados de uma conexão aberta com base no usuário proprietário do soquete, no descritor de arquivo de um soquete de rede ou no PID do processo que abriu o soquete.

Neste guia listaremos alguns exemplos de utilização comuns, mas também muito poderosos, do utilitário de rede de linha de comando Sockstat no FreeBSD.

Requisitos

  1. Guia de instalação do FreeBSD 11.1

1. Liste todas as portas abertas no FreeBSD

Simplesmente executado sem quaisquer opções ou opções, o comando meiasstat exibirá todos os soquetes abertos em um sistema FreeBSD, conforme ilustrado na imagem abaixo.

sockstat

Os valores exibidos na saída do meiasstat são descritos como:

  • USER : O proprietário (conta de usuário) do soquete.
  • COMMAND : O comando que abriu o soquete.
  • PID : O ID do processo do comando que possui o soquete.
  • FD : O número do descritor de arquivo do soquete.
  • PROTO : O protocolo de transporte (geralmente TCP/UDP) associado ao soquete aberto ou tipo de soquete no caso de soquetes de domínio unix (datagrama, stream ou seqpac) para soquetes UNIX.
  • ENDEREÇO LOCAL : Representa o endereço IP local para soquetes baseados em IP. No caso de soquetes Unix, representa o nome do arquivo do terminal anexado ao soquete. O “?? ” a notação implica que o endpoint do soquete não pôde ser reconhecido ou estabelecido.
  • ENDEREÇO ESTRANGEIRO : O endereço IP remoto ao qual o soquete está conectado.

2. Liste as portas de escuta ou abertas no FreeBSD

Executado com o sinalizador -l, o comando Sockstat exibirá todos os soquetes de escuta abertos na pilha de rede e todos os soquetes de domínio Unix abertos ou pipes nomeados envolvidos em algum tipo de processamento de dados local no sistema.

sockstat -l

3. Liste as portas IPv4 abertas no FreeBSD

Para exibir todos os soquetes abertos apenas para o protocolo IPv4, emita o comando com o sinalizador -4, conforme sugerido no exemplo abaixo.

sockstat -4

4. Liste as portas IPv6 abertas no FreeBSD

Semelhante à versão IPv4, você também pode exibir os soquetes de rede abertos apenas para IPv6, emitindo o comando conforme mostrado abaixo.

sockstat -6

5. Liste as portas TCP ou UDP abertas no FreeBSD

Para exibir soquetes de rede baseados apenas em um protocolo de rede específico, como TCP ou UDP, use o sinalizador -P, seguido pelo símbolo nome do argumento do protocolo.

Os nomes dos protocolos podem ser encontrados inspecionando o conteúdo do arquivo /etc/protocols. Atualmente, o protocolo ICMP não é compatível com a ferramenta meiasstat.

Mostrar apenas soquetes TCP
sockstat -P tcp

Mostrar apenas soquetes UDP
sockstat -P udp

Encadeie ambos os protocolos.

sockstat –P tcp,udp

6. Liste os números de porta específicos TCP e UDP

Se você deseja exibir todos os soquetes TCP ou UDP IP abertos, com base no número da porta local ou remota, use os sinalizadores de comando e sintaxe abaixo, conforme ilustrado na captura de tela abaixo.

sockstat -P tcp -p 443             [Show TCP HTTPS Port]
sockstat -P udp -p 53              [Show UDP DNS Port] 
sockstat -P tcp -p 443,53,80,21    [Show Both TCP and UDP]

7. Liste as portas abertas e conectadas no FreeBSD

Para exibir todos os soquetes abertos e conectados, use o sinalizador -c. Conforme mostrado nos exemplos abaixo, você pode listar todos os soquetes conectados por HTTPS ou todos os soquetes conectados por TCP emitindo os comandos.

sockstat -P tcp -p 443 -c
sockstat -P tcp -c

8. Liste as portas de escuta de rede no FreeBSD

Para listar todos os soquetes TCP abertos no estado de escuta, anexe os sinalizadores -l e -s, conforme mostrado no exemplo abaixo. Por ser um protocolo sem conexão, o UDP não mantém nenhuma informação sobre o estado da conexão.

Os soquetes UDP abertos não podem ser exibidos usando seu estado, porque o protocolo udp usa datagramas para enviar/receber dados e não possui mecanismo integrado para determinar o estado da conexão.

sockstat -46 -l -s

9. Listar soquetes Unix e pipes nomeados

Soquetes de domínio Unix, bem como outras formas de comunicação local entre processos, como pipes nomeados, podem ser exibidos pelo comando meiasstat usando o sinalizador -u, conforme mostrado na imagem abaixo.

sockstat -u

10. Listar portas abertas por aplicativo no FreeBSD

A saída do comando Sockstat pode ser filtrada por meio do utilitário grep para exibir uma lista de portas abertas por um aplicativo ou comando específico.

Suponha que você queira listar todos os soquetes associados ao servidor web Nginx, você pode emitir o seguinte comando para realizar a tarefa.

sockstat -46 | grep nginx

Para exibir apenas os soquetes conectados associados ao servidor web Nginx, emita o seguinte comando.

sockstat -46 -c| grep nginx

11. Listar protocolos conectados HTTPS

Você pode listar todos os soquetes conectados associados ao protocolo HTTPS junto com o estado de cada conexão executando o comando abaixo.

sockstat -46 -s -P TCP -p 443 -c

12. Listar soquetes remotos HTTP

Para listar todos os soquetes remotos associados ao protocolo HTTP, você pode executar uma das seguintes combinações de comandos.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | uniq -c | sort -nr
sockstat -46 -c -p 80,443 | grep -v ADDRESS|awk '{print $7}' | uniq -c | sort -nr

13. Encontre as solicitações HTTP mais altas por endereços IP

Caso você queira saber quantas conexões HTTP são solicitadas por cada endereço IP remoto, emita o comando abaixo. Este comando pode ser muito útil caso você queira determinar se o seu servidor web está sob algum tipo de ataque DDOS. Em caso de suspeitas, você deve investigar os endereços IP com maior taxa de solicitação.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | cut -d: -f1 | uniq -c | sort –nr

14. Listar soquetes abertos de DNS

Se você configurou um servidor DNS de cache e encaminhamento em suas instalações para atender clientes internos via protocolo de transporte TCP e deseja exibir uma lista de todos os soquetes
aberto pelo resolvedor, junto com o estado de cada conexão de soquete, execute o seguinte comando.

sockstat -46 -P tcp –p 53 -s

15. Consulte TCP DNS no domínio local

Se não houver tráfego DNS na rede, você poderá acionar manualmente uma consulta DNS no soquete TCP a partir do console da máquina local executando o seguinte comando dig. Depois, emita o comando acima para listar todos os soquetes do resolvedor.

dig +tcp  www.domain.com  @127.0.0.1

Isso é tudo! Junto com os utilitários de linha de comando netstat e lsof, a linha de comando Sockstat é um utilitário poderoso usado para adquirir informações de rede e solucionar problemas de vários aspectos da pilha de rede do FreeBSD e de processos e serviços relacionados à rede.

A contraparte do comando Sockstat do FreeBSD no Linux é representada pelo comando netstat ou pelo novo comando ss. Acredite ou não, com base no utilitário Sockstat, você pode encontrar um aplicativo semelhante desenvolvido para o sistema operacional Android, chamado SockStat – Simple Netstat GUI.