Pesquisa de site

Veja as conexões de rede do seu servidor Linux com netstat


O comando netstat fornece informações importantes sobre o seu servidor Linux, tanto para monitoramento quanto para solução de problemas de rede.

Compartilhei alguns primeiros passos importantes para ajudar a gerenciar seu servidor Linux pessoal em um artigo anterior. Mencionei brevemente o monitoramento de conexões de rede para portas de escuta e quero expandir isso usando o comando netstat para sistemas Linux.

O monitoramento de serviços e a varredura de portas são práticas padrão do setor. Existem softwares muito bons como o Prometheus para ajudar a automatizar o processo e o SELinux para ajudar a contextualizar e proteger o acesso ao sistema. No entanto, acredito que entender como o seu servidor se conecta a outras redes e dispositivos é fundamental para estabelecer uma linha de base do que é normal para o seu servidor, o que ajuda a reconhecer anormalidades que podem sugerir um bug ou intrusão. Como iniciante, descobri que o comando netstat fornece informações importantes sobre meu servidor, tanto para monitoramento quanto para solução de problemas de rede.

Netstat e ferramentas similares de monitoramento de rede, agrupadas no pacote net-tools, exibem informações sobre conexões de rede ativas. Como os serviços executados em portas abertas costumam ser vulneráveis à exploração, praticar o monitoramento regular da rede pode ajudá-lo a detectar precocemente atividades suspeitas.

Instalar o netstat

O Netstat é frequentemente pré-instalado em distribuições Linux. Se o netstat não estiver instalado no seu servidor, instale-o com o seu gerenciador de pacotes. Em um sistema baseado em Debian:

$ sudo apt-get install net-tools

Para sistemas baseados em Fedora:

$ dnf install net-tools

Usar netstat

Por si só, o comando netstat exibe todas as conexões estabelecidas. Você pode usar as opções netstat acima para especificar ainda mais a saída pretendida. Por exemplo, para mostrar todas as conexões de escuta e não escuta, use a opção --all (-a para abreviar). Isso retorna muitos resultados, então neste exemplo eu canalizo a saída para head para exibir apenas as primeiras 15 linhas de saída:

$ netstat --all | head -n 15
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 *:27036                 *:*                     LISTEN      
tcp        0      0 localhost:27060         *:*                     LISTEN      
tcp        0      0 *:16001                 *:*                     LISTEN      
tcp        0      0 localhost:6463          *:*                     LISTEN      
tcp        0      0 *:ssh                   *:*                     LISTEN      
tcp        0      0 localhost:57343         *:*                     LISTEN      
tcp        0      0 *:ipp                   *:*                     LISTEN      
tcp        0      0 *:4713                  *:*                     LISTEN      
tcp        0      0 10.0.1.222:48388        syd15s17-in-f5.1e:https ESTABLISHED
tcp        0      0 10.0.1.222:48194        ec2-35-86-38-2.us:https ESTABLISHED
tcp        0      0 10.0.1.222:56075        103-10-125-164.va:27024 ESTABLISHED
tcp        0      0 10.0.1.222:46680        syd15s20-in-f10.1:https ESTABLISHED
tcp        0      0 10.0.1.222:52730        syd09s23-in-f3.1e:https ESTABLISHED

Para mostrar apenas portas TCP, use as opções --all e --tcp, ou -at para abreviar:

$ netstat -at | head -n 5
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address   Foreign Address  State       
tcp        0      0 *:27036         *:*              LISTEN      
tcp        0      0 localhost:27060 *:*              LISTEN      
tcp        0      0 *:16001         *:*              LISTEN

Para mostrar apenas portas UDP, use as opções --all e --udp, ou -au para abreviar:

$ netstat -au | head -n 5
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address    State       
udp        0      0 *:27036           *:*                                 
udp        0      0 10.0.1.222:44741  224.0.0.56:46164   ESTABLISHED
udp        0      0 *:bootpc          

As opções do netstat costumam ser intuitivas. Por exemplo, para mostrar todas as portas TCP e UDP de escuta com ID de processo (PID) e endereço numérico:

$ sudo netstat --tcp --udp --listening --programs --numeric
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address      Foreign Addr  State   PID/Program name     
tcp        0      0 0.0.0.0:111        0.0.0.0:*     LISTEN  1/systemd            
tcp        0      0 192.168.122.1:53   0.0.0.0:*     LISTEN  2500/dnsmasq         
tcp        0      0 0.0.0.0:22         0.0.0.0:*     LISTEN  1726/sshd            
tcp        0      0 127.0.0.1:631      0.0.0.0:*     LISTEN  1721/cupsd           
tcp        0      0 127.0.0.1:6010     0.0.0.0:*     LISTEN  4023/sshd: tux@  
tcp6       0      0 :::111             :::*          LISTEN  1/systemd            
tcp6       0      0 :::22              :::*          LISTEN  1726/sshd            
tcp6       0      0 ::1:631            :::*          LISTEN  1721/cupsd           
tcp6       0      0 ::1:6010           :::*          LISTEN  4023/sshd: tux@  
udp        0      0 0.0.0.0:40514      0.0.0.0:*             1499/avahi-daemon:   
udp        0      0 192.168.122.1:53   0.0.0.0:*             2500/dnsmasq         
udp        0      0 0.0.0.0:67         0.0.0.0:*             2500/dnsmasq         
udp        0      0 0.0.0.0:111        0.0.0.0:*             1/systemd            
udp        0      0 0.0.0.0:5353       0.0.0.0:*             1499/avahi-daemon:   
udp6       0      0 :::111             :::*                  1/systemd            
udp6       0      0 :::44235           :::*                  1499/avahi-daemon:   
udp6       0      0 :::5353            :::*                  1499/avahi-daemon:

A versão abreviada desta combinação comum é -tulpn.

Para exibir informações sobre um serviço específico, filtre com grep:

$ sudo netstat -anlp | grep cups
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1721/cupsd           tcp6       0      0 ::1:631                 :::*                    LISTEN      1721/cupsd
unix  2      [ ACC ]     STREAM     LISTENING     27251    1/systemd /var/run/cups/cups.sock
unix  2      [ ]         DGRAM                    59530    1721/cupsd
unix  3      [ ]         STREAM     CONNECTED     55196    1721/cupsd /var/run/cups/cups.sock

Próximos passos

Depois de executar o comando netstat, você pode tomar medidas para proteger seu sistema, garantindo que apenas os serviços que você usa ativamente estejam escutando em sua rede.

  1. Reconheça portas e serviços comumente explorados. Como regra geral, feche as portas que você não está usando.
  2. Fique atento a números de portas incomuns e aprenda a reconhecer portas legítimas em uso no seu sistema.
  3. Preste muita atenção aos erros do SELinux. Às vezes, tudo o que você precisa fazer é atualizar os contextos para corresponder a uma alteração legítima feita em seu sistema, mas ler os erros para ter certeza de que o SELinux não está alertando sobre atividades suspeitas ou maliciosas.

Se você descobrir que uma porta está executando um serviço suspeito ou simplesmente quiser fechar uma porta que não usa mais, você pode negar manualmente o acesso à porta por meio de regras de firewall seguindo estas etapas:

Se você estiver usando firewall-cmd, execute estes comandos:

$ sudo firewall-cmd –remove-port=<port number>/tcp
$ sudo firewall-cmd –runtime-to-permanent

Se você estiver usando UFW, execute o seguinte comando:

$ sudo ufw deny <port number>

Em seguida, interrompa o próprio serviço usando systemctl:

$ systemctl stop <service>

Aprenda netstat

Netstat é uma ferramenta útil para coletar rapidamente informações sobre as conexões de rede do seu servidor. O monitoramento regular da rede é uma parte importante do conhecimento do seu sistema e ajuda a mantê-lo seguro. Para incorporar essa etapa à sua rotina administrativa, você pode usar ferramentas de monitoramento de rede como netstat ou ss, além de scanners de portas de código aberto como o Nmap ou sniffers como o Wireshark, que permitem tarefas agendadas.

À medida que os servidores armazenam grandes quantidades de dados pessoais, é cada vez mais importante garantir a segurança dos servidores pessoais. Ao compreender como o seu servidor se conecta à Internet, você pode diminuir a vulnerabilidade da sua máquina, ao mesmo tempo que se beneficia da crescente conectividade da era digital.