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.
- Reconheça portas e serviços comumente explorados. Como regra geral, feche as portas que você não está usando.
- Fique atento a números de portas incomuns e aprenda a reconhecer portas legítimas em uso no seu sistema.
- 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.