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.