Verifique qual processo está usando uma porta no Linux

Verifique qual processo está usando uma porta no Linux

O que é uma porta?

Na rede de computadores, uma porta representa uma entrada lógica e ponto de saída para uma conexão. As portas são baseadas em software e são totalmente virtuais. Essas portas em um computador são gerenciadas pelo sistema operacional.

Sobre o que vamos falar?

Este tutorial rápido demonstra os vários métodos para determinar qual processo ou serviço Linux está ouvindo atualmente em uma porta específica. Vamos falar sobre portos e seu propósito.

Como as portas são análogas às portas físicas?

Assim como as portas físicas ajudam a interagir com vários dispositivos periféricos conectados a um computador, as portas ajudam os diferentes serviços a se comunicarem entre si. Esses serviços podem estar no mesmo computador ou em diferentes computadores.

Um pouco sobre o porto de um serviço

Para ouvir solicitações de conexão recebidas, um processo se associa a um número de porta. A maioria dos processos é configurada com uma porta padrão e eles precisam usar essa porta de acordo com suas especificações. Eles não alternam automaticamente para a outra porta, a menos que sua configuração seja explicitamente modificada.

Alguns exemplos de protocolos e suas portas padrão associadas incluem o Protocolo Secure Shell (SSH) (PORT22), o Apache HTTP (Port80), o MySQL Database Server (Port3306) e assim por diante. Você pode usar essas informações para descobrir qual porta padrão um serviço utiliza.

O arquivo de configuração desses serviços pode ser editado para usar outra porta também.

Verificando as portas no Linux

Vamos agora ver como verificar qual porta/portas um processo está usando no Linux. Aqui, mostraremos os diferentes comandos para esse fim.

1. Comando lsof

O utilitário LSOF é útil para obter uma lista das portas usadas pelo seu sistema. Vamos considerar o exemplo a seguir para obter informações sobre um processo (processos) usando a porta TCP 22:

$ sudo lsof -i tcp: 22

O comando LSOF fornece mais informações como o nome do usuário e quais IDs de processo estão vinculados a cada processo. Funciona com as portas TCP e UDP.

2. Comando ss

O ss Comando é outra maneira de descobrir quais processos estão vinculados a uma determinada porta. Embora o LSOF seja a abreviação mais comum, algumas pessoas podem achar que Ss é mais útil.

Vamos procurar os processos ou serviços que ouvem na porta 3306:

$ sudo ss -tunap | Grep: 3306

Vamos quebrar este comando:

1. t: Ele diz ao comando SS para exibir os pacotes TCP.

2. você: Ele diz ao comando SS para exibir os pacotes UDP.

3. n: É usado para exibir os números da porta em vez de suas traduções.

4. a: É usado para exibir as soquetes escutas e não listenadoras de todos os tipos.

5. p: É usado para exibir os processos que utilizam um soquete.

O resultado do comando anterior mostra qual processo está utilizando qual porta. Você também pode emitir o seguinte comando:

$ sudo ss -tup -a esport =: 80

Aqui, o esporte significa a porta de origem.

Essas duas abordagens podem ajudá -lo a encontrar os IDs dos processos conectados a diferentes portas.

3. Comando netstat

O comando NetStat mostra as informações sobre sua rede e pode ser usado para corrigir os problemas ou alterar a maneira como sua rede está configurada. Ele também pode vigiar de perto suas conexões de rede.

Este comando é frequentemente usado para ver uma informação sobre conexões de entrada e saída, tabelas de roteamento, escuta por porta e estatísticas de uso. Embora tenha sido tornado obsoleto nos últimos anos, o NetStat ainda é uma ferramenta útil para analisar redes.

Com o comando Grep, o NetStat pode determinar qual processo ou serviço está usando uma determinada porta (mencionando a porta):

$ sudo netstat -ltnp | grep -w ': 80'

As opções usadas aqui podem ser classificadas da seguinte maneira:

1. t: Ele mostra apenas a conexão TCP.

2. eu: É usado para exibir os resultados em uma lista.

3. n: Ele exibe endereços e números de porta em formato numérico.

4. p: Ele exibe o nome do PID e do programa que estão associados a cada soquete.

4. Comando fuser

O comando FUSER determina os processos que utilizam os arquivos ou soquetes. Você pode usá -lo para listar os serviços que são executados em uma porta específica. Vamos dar o exemplo da porta 3306 e ver quais serviços estão sendo executados aqui:

$ sudo fuser 3306/tcp

Isso nos fornece os números de processo usando esta porta. Você pode usar esse número de processo para encontrar os nomes de processos correspondentes. Por exemplo, se o número do processo for 15809, o comando a ser usado aqui é o seguinte:

$ ps -p 15809 -O Comm =

No entanto, certas ferramentas são necessárias para identificar os processos que utilizam uma porta não padrão. "LSOF" é uma ferramenta para descobrir quais serviços estão disponíveis em uma rede e quais portas eles usam. Considere o seguinte exemplo. Isso mostra como listar as portas de escuta UDP e TCP:

$ sudo lsof -pni | egrep "(udp | escute)"

A seguir, é apresentada uma descrição das opções usadas aqui:

1. P: Ele suprime a pesquisa do nome do serviço portuária.

2. n: Ele exibe os endereços de rede numérica.

3. eu: Ele lista os soquetes IP.

Tanto as portas quanto os processos associados são mostrados no resultado mencionado anteriormente. Dessa forma, é particularmente útil para processos com portas não padrão.

Conclusão

Neste artigo, falamos sobre quatro ferramentas possíveis da linha de comando Linux e fornecemos os exemplos sobre como usá-los para descobrir qual processo está ouvindo em uma determinada porta.