Conheça sua rede de dentro para fora, verificando regularmente as portas abertas com esses comandos do Linux.
As portas de rede abertas são os pontos de entrada mais fáceis para sua rede. Às vezes, pode haver serviços indesejados em execução em portas visíveis externamente pela Internet. Caso esses serviços sejam vulneráveis, sua rede estará sob constante ameaça de ataque, pois todos os dias toda a Internet está sendo verificada em massa em busca de serviços vulneráveis em portas abertas.
Saiba como você pode escanear e visualizar portas abertas em seus sistemas Linux, para que possa defender sua rede contra ameaças.
O que são portas de rede?
As portas de rede são pontos de acesso lógico do seu sistema que podem ser usados como um canal para hospedar vários serviços. Uma porta é representada por um número inteiro de 16 bits, portanto, o maior número de porta é 65535.
Você pode pensar em portas como janelas e portas de uma casa - basicamente todos os diferentes pontos de entrada para uma casa ou um computador. As portas são de três tipos: portas do sistema (1-1023), portas registradas (1024-49151) e portas efêmeras ou dinâmicas (49152-65535).
Quando você inicia um aplicativo que requer conexão com a internet, ele usa portas dinâmicas para transmitir e receber dados pela rede. No entanto, quando você inicia um servidor da web ou um servidor SSH, ele geralmente se liga às portas do sistema ou às portas registradas.
Para servidores da web que atendem HTTP, a porta padrão do sistema é 80 e para SSH é 22. Esses regulamentos, como os intervalos de portas, são desenvolvidos pela Internet Assigned Numbers Authority (IANA). Você pode passar pelo RFC sobre portas para obter uma lista completa de todas as portas e suas funções.
É importante que você conheça o portas mais comumente vulneráveis para que você possa garantir que eles estejam fechados ou protegidos.
1. Verifique se há portas abertas com netstat
netstat é um utilitário popular que você pode usar para visualizar as estatísticas de rede do seu sistema Linux. Faz parte do pacote net-tools.
O pacote net-tools agora está depreciado devido à falta de manutenção adequada por parte do desenvolvedor. Esta é também a razão pela qual você pode encontrar um erro "ifconfig: comando não encontrado" ao executar o popular comando ifconfig no Linux.
Portanto, em sistemas modernos, talvez você precise primeiro instalar o pacote net-tools e, em seguida, poderá executar o comando netstat. Veja como verificar se há portas abertas com o netstat:
netstat -tuln
Explicação do comando:
- -t mostra as portas TCP.
- -você mostra as portas UDP.
- -eu mostra as portas de escuta. Substitua isso por a se você quiser ver todas as portas, independentemente de seu estado.
- -n mostra o valor numérico das portas em vez de resolver para nomes de serviço. Por exemplo, mostre a porta 22 em vez de SSH, ou seja, o serviço em execução na porta.
2. Verifique se há portas abertas com ss
ss é o equivalente moderno da ferramenta netstat. Você o encontrará pré-instalado em todas as distribuições Linux modernas. A sintaxe para verificar portas abertas com ss é idêntica ao netstat.
Veja como verificar se há portas abertas com ss:
ss-tuln
Explicação do comando:
- -t mostra as portas TCP.
- -você mostra as portas UDP.
- -eu mostra as portas de escuta. Substitua isso por a se você quiser ver todas as portas, independentemente de seu estado.
- -n mostra o valor numérico das portas em vez de resolver para nomes de serviço. Por exemplo, mostre a porta 21 em vez de FTP, ou seja, o serviço em execução na porta.
3. Verifique se há portas abertas com o Nmap
O Nmap é uma das ferramentas mais populares em segurança cibernética e redes. É um nome básico quando se trata de testes de penetração de segurança de rede. Seu principal caso de uso é a varredura de portas, portanto, você não apenas obterá informações sobre as portas abertas em seu sistema, mas também se elas são vulneráveis e exploráveis.
Além disso, se você deseja verificar as portas abertas em um sistema remoto com IDS/IPS configurado e firewalls instalados, não se preocupe porque o Nmap também pode contornar firewalls e IDS/IPS com os switches corretos.
Veja isso guia completo sobre Nmap para iniciantes para explorar os diversos recursos do Nmap e como usá-los. Embora você possa, não é recomendado tentar contornar os firewalls, pois não é totalmente confiável, então é melhor você SSH no servidor remoto e depois executar o Nmap localmente.
Aqui está o comando para verificar portas abertas com o Nmap:
nmap -sTU -sV -T 5 --min-rate 9000 --min-parallelism 9000 --initial-rtt-timeout 50ms --max-rtt-timeout 3000ms --max-retries 50 -Pn --disable-arp-ping -n -- vulnerabilidade de script, exploit, auth -v -oX
Explicação do comando:
- -sTU define o tipo de varredura para conexão TCP e varredura UDP.
- -T 5 define o modelo de tempo como agressivo para verificações extremamente rápidas (não recomendado em um sistema desprotegido, pois pode resultar em um ataque DoS).
- -sV ativa a varredura de serviço.
- --min-rate 9000 diz ao Nmap para enviar 9000 pacotes por segundo.
- --initial-rtt-timeout 50ms diz ao Nmap para esperar inicialmente 50ms por uma resposta a cada pacote SYN que ele enviar.
- --max-rtt-timeout 3000ms diz ao Nmap para esperar no máximo 3000ms por uma resposta.
- --min-parallelism 9000 define o número mínimo de scripts simultâneos para 9.000.
- --max-retries 50 diz ao Nmap para tentar novamente 50 vezes para se conectar a uma porta.
- -Pn desativa a sondagem de ping.
- --disable-arp-ping desativa a sondagem ARP.
- -n desativa a resolução de DNS.
- --script vuln, exploit, auth executa três scripts para testar diferentes tipos de vulnerabilidades nas portas descobertas.
- -v retorna uma saída detalhada.
- -boi salva os resultados em um arquivo XML.
- -6 Parâmetro opcional para verificar endereços IPv6.
4. Verifique se há portas abertas com lsof
O comando lsof no Linux é usado para listar arquivos abertos. No entanto, se você adicionar alguns switches a ele, poderá ver as conexões e portas de Internet abertas em sua máquina local. Veja como verificar se há portas abertas com lsof:
lsof -i -n
Explicação do comando:
- -eu lista todos os arquivos de rede e internet.
- -n não resolve nomes de host.
5. Verifique se há portas abertas com o netcat
netcat é um utilitário de linha de comando que permite ler e escrever de e para conexões TCP/UDP. Observe que este é apenas um recurso do netcat. Você pode verificar sua página de manual usando o homem netcat para explorar todos os seus recursos e como usá-los.
Veja como você pode usar o netcat para escanear portas abertas:
nc-zv | grep -v "recusou"
Explicação do comando:
- -z define o netcat para o modo de scanner.
- -v retorna uma saída detalhada.
- grep -v "recusou" retorna linhas de saída sem a palavra "recusado". Isso evita que o terminal fique entupido com mensagens de "conexão recusada" quando o netcat não recebe saída de uma porta.
- 2>&1: esta é uma opção opcional que pode ser necessário ativar para que o grep funcione ao executar o netcat no modo detalhado. netcat retorna a saída para stderr (indicado por 2). Portanto, para grep a saída, você teria que redirecionar stderr para stdout (indicado por 1) e, em seguida, canalizá-lo para grep.
Quanto mais você conhecer sua rede, melhor poderá defendê-la
Saber quais portas estão abertas e quais serviços estão rodando em seu sistema é um grande passo para defendê-lo de possíveis ataques externos. Isso permite que você procure e desligue serviços desnecessários, encontre serviços desatualizados e também detecte se há algum arquivo malicioso, como backdoors de shell reverso ou de ligação em execução no seu sistema.
Se você leva a segurança de rede a sério, considere instalar e configurar uma solução IDS para monitorar todas as atividades em sua rede e impor conjuntos de regras para evitar conexões não solicitadas.