Tutoriel Linux

Abrir portas no Linux: netstat, ss e os comandos para usar hoje em dia.

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Você está procurando saber quais portas estão abertas em uma máquina Linux? Primeiro, um esclarecimento importante: uma porta “aberta” no servidor geralmente significa que a porta está aberta. ouvindo localmenteIsso ainda não prova que seja acessível pela Internet, nem que um firewall permita sua passagem.

No meu caso, eu sempre verifico em duas etapas: primeiro, o que está escutando no servidor com ss, e então o serviço ou processo por trás da porta. netstat Ainda é conhecido, mas em muitas distribuições modernas, ele não é mais instalado por padrão. É melhor seguir as melhores práticas atuais.

Tux inspeciona as portas de rede abertas de um servidor Linux.

O comando a ser usado hoje: ss

No Linux recente, ss é o comando preferido. Faz parte da pilha. iproute2 e muitas vezes substitui netstat Inspecionar sockets de rede.

sudo ss -lntup

As opções são importantes:

  • -EU Exibe as portas de escuta.
  • -n Evita a resolução de DNS e mantém as portas em números.
  • -t limitado a conexões TCP.
  • -você adiciona UDP.
  • -p Exibe o processo associado, quando você possui os direitos necessários.

Sem sudoÀs vezes você verá a porta, mas nem sempre o programa por trás dela. Para uma auditoria rápida em um servidor, prefiro executar o comando com privilégios de administrador e ler a coluna diretamente. Processo.

Leia o resultado sem cometer erros.

Um resultado típico se parece com isto:

Estado Recebimento-Q Envio-Q Endereço Local:Porta Endereço do Par:Porta Processo
ESCUTAR 0 128 0.0.0.0:22 0.0.0.0:* usuários:(("sshd",pid=812,fd=3))
ESCUTAR 0 511 127.0.0.1:3306 0.0.0.0:* usuários:(("mariadbd",pid=1044,fd=21))

A coluna que você deve observar primeiro é Endereço Local:PortoSe você ver 0.0.0.0:22O serviço escuta em todas as interfaces IPv4. Se você vir 127.0.0.1:3306O serviço só escuta localmente. Não é o mesmo risco.

Para IPv6, você também pode ver Ou Novamente, não leia muito rápido: pode significar escuta ampla no lado IPv6, enquanto permanece local.

Filtrar uma porta específica

Se você estiver procurando apenas por SSH, HTTP ou um banco de dados, não há necessidade de analisar toda a saída. Filtre com grep ou com os filtros de ss.

sudo ss -lntup | grep ':22'
sudo ss -lntup | grep ':80'
sudo ss -lntup | grep ':443'

Para uma saída mais focada em TCP, você pode usar:

sudo ss -ltnp '(sport = :22)'

Costumo guardar a versão com grep Quando estou com pressa, porque ela conversa com todo mundo. Para um roteiro ou diagnóstico claro, os filtros nativos de ss Evite falsos positivos.

E quanto ao netstat em tudo isso?

netstat Não desapareceu da memória dos administradores, mas vem do pacote. ferramentas de rede, frequentemente ausente em instalações Debian, Ubuntu ou mínimas. Se você encontrar documentação que pergunte netstat E se o comando estiver faltando, não é necessariamente um erro do seu servidor.

netstat -lntup

A saída é semelhante em conceito: protocolos, endereços locais, portas, PID e nome do programa. Mas se você precisar instalar um pacote apenas para usá-lo… netstatPrimeiro, pergunte a si mesmo se ss Isso não é suficiente. Em um servidor recente, minha resposta é quase sempre sim.

A página de manual do ss detalha os filtros disponíveis. Isso de netstat Continua sendo útil se você ainda mantém scripts antigos.

Descubra o processo por trás de uma porta.

Quando uma porta inesperadamente estiver aberta, não a feche aleatoriamente. Primeiro, identifique o processo e, se necessário, o serviço systemd associado.

sudo ss -lntup
sudo lsof -iTCP -sTCP: LISTEN -P -n

lsof É útil quando você deseja associar uma porta, um PID e um binário. -POs portos permanecem em números. Com -nAssim, você evita resoluções de DNS que tornam a leitura mais lenta ou a embaralham.

Se você tiver um PID, rastreie-o até o serviço:

ps -p 812 -o pid,ppid,usuário,cmd
systemctl status ssh

Para um servidor que utiliza o systemd, consulte o guia sobre o Serviços Linux e comandos systemctl Esta etapa foi concluída com sucesso. O objetivo é determinar se você tem um serviço esperado, um contêiner, um daemon antigo e esquecido ou um processo iniciado manualmente.

Uma porta de escuta não significa necessariamente uma porta exposta.

Essa é a armadilha clássica. Se ss Se uma porta for exibida como em modo de escuta, você sabe que um programa está aceitando conexões na máquina. Você ainda não sabe se essa porta está passando pelo firewall local, pelas regras da nuvem, pelo NAT ou pelo roteador.

Para analisá-los, verifique no mínimo:

  • O endereço de escuta: 127.0.0.1, 0.0.0.0, IP privado, IP público;
  • o serviço por trás do porto;
  • o firewall local, por exemplo ufw, nftáveis Ou tabelas de ip ;
  • regras de segurança no lado da hospedagem ou da nuvem;
  • Um teste realizado em outra máquina é necessário para validar a exposição real.
sudo ufw status verbose
sudo nft listar regras
sudo iptables -S

Não execute esses comandos em um script de limpeza automatizado. Leia primeiro. Em um servidor remoto, uma regra de firewall incorreta pode interromper sua conexão SSH mais rapidamente do que o esperado. Se o SSH já estiver inativo, use o método descrito acima. Reinstale e verifique o SSH no Ubuntu..

Uma rápida verificação antes de mexer no firewall.

  • sudo ss -lntup Para visualizar as portas TCP e UDP em escuta.
  • sudo ss -ltnp Se eu quiser apenas TCP.
  • sudo lsof -iTCP -sTCP: LISTEN -P -n para confirmar o processo.
  • systemctl status nome-do-serviço para verificar o serviço por trás disso.
  • journalctl -u nome-do-serviço -b --no-pager Se o serviço estiver escutando quando não deveria.
  • Um teste externo só deve ser feito após entender o que está sendo monitorado localmente.

Se você descobrir uma porta inesperada, não encerre o processo imediatamente. Anote a porta, o PID e o serviço e, em seguida, revise os logs. (Consulte o guia em…) journalctl na última inicialização ajudará você a determinar se o serviço inicia automaticamente ou se é devido a uma ação recente.

Resumindo: ss Em primeiro lugar, netstat Somente se precisar manter hábitos antigos, e nunca modifique o firewall antes de identificar o serviço por trás da porta.

sudo apt update && sudo apt upgrade