visão geral
todos sabemos que um porto só pode ser usado por uma única aplicação ou serviço ao mesmo tempo. Por vezes, precisamos de saber que processo está a ouvir num porto específico.
neste tutorial, veremos diferentes abordagens para encontrar o processo de escuta em uma determinada porta no Linux.
root Permission
no Linux, apenas o utilizador raiz ou o dono do processo podem obter a informação detalhada do processo.,
Quando queremos verificar um processo de escuta em uma determinada porta, não sabemos a quem pertence o processo.
com permissão da raiz, podemos obter todas as informações necessárias sobre o processo, por exemplo, o identificador do processo.
portanto, podemos precisar iniciar nossas ferramentas de rede com o usuário raiz (ou com sudo).
Usando o netstat
O comando netstat é um membro do pacote net-tools.
no passado, ele veio pré-instalado em muitas distribuições Linux. No entanto, o pacote net-tools não foi atualizado desde 2011.,
devido à sua falta de suporte das funcionalidades modernas do kernel Linux e outras razões, o pacote net-tools tornou-se obsoleto.
dito isto, o netstat em si ainda é amplamente utilizado, então vamos dar uma olhada em como ele pode ajudar.
Em Primeiro Lugar, vamos ver um exemplo de saída do comando netstat:
com as opções ltnup, o netstat mostra-nos todos os portos em uso no exemplo acima.,
Vamos dar uma olhada no que a média opções:
- l – mostrar apenas ouvir sockets
- t – mostra as conexões TCP
- n – mostrar endereços em um formato numérico
- u – mostrar conexões UDP
- p – mostra o processo de identificação/nome do programa
Se a gente reveja a saída acima, a última coluna é exatamente o que estamos procurando: o PID e o nome do Processo de escuta em uma porta específica.
Podemos simplesmente canalizar a saída do netstat para o comando grep para obter a informação do processo em uma porta individual.,
Por exemplo, vamos ver qual processo está escutando na porta 22:
root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd
Usando ss
Na seção anterior, discutimos que o pacote net-tools é preterido.
o comando ss é a substituição do comando netstat.
Agora vamos ver como usar o comando ss para ver que processo está ouvindo no porto 22:
se verificarmos as opções, descobrimos que as opções que passamos para o comando ss são as mesmas que passamos para o netstat.,
A única diferença é que estávamos fazendo uso do filtro de Estado do utilitário ss em vez de um processo grep extra para filtrar a saída.
Similar ao resultado do comando netstat, a informação esperada do processo também está na última coluna.
usando lsof
o comando lsof pode listar todos os ficheiros abertos num sistema Linux.,
podemos usar o comando lsof para localizar o processo usando uma porta específica com o-i :port_number opção:
root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)
As primeiras quatro colunas na saída acima de nos dizer o nome de processo de escuta na porta 22 e seu PID, proprietário, e o descritor de arquivo.
podemos passar vários -i :porta para o comando lsof para descobrir os processos escutando várias portas:
root# lsof -i :22 -i :68COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)dhcpcd 8822 root 10u IPv4 49601 0t0 UDP *:bootpc
Usando fusor
O fusor utilitário exibe os processos que estão usando o nome de arquivos, sockets, ou sistemas de arquivos., Ele está incluído no Pacote psmisc e pré-instalado em muitas distribuições Linux modernas por padrão.
Podemos usar isso para visualizar a informação do processo em execução em uma porta específica. Mais uma vez vamos descobrir o PID da porta de processamento de escuta TCP 22:
root# fuser 22/tcp22/tcp: 575
a saída acima é bastante simples. Sabemos que o processo com o PID 575 está a ouvir na porta tcp 22.
no entanto, ele não nos diz informações detalhadas sobre o processo, por exemplo, Qual é o nome do processo 575? quem é o dono do processo? e assim por diante.,
Se quisermos obter mais detalhes sobre o processo, que pode passar a opção “-v” para o fusor comando para ter uma saída detalhada:
root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd
Usando a unidade de fusão de comando, também é possível verificar o processo de execução informação sobre várias portas TCP ou UDP com um tiro:
root# fuser -v 22/tcp 68/udp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd68/udp: root 8822 F.... dhcpcd
Conclusão
neste breve artigo, aprendemos quatro diferentes Linux utilitários de linha de comando com exemplos para descobrir as informações de que o processo de escuta em uma porta específica.,
são todas ferramentas muito poderosas para ter no nosso arsenal na linha de comandos Linux.