Eu tenho um servidor AWS executando linux. Quando faço um netstat -lntp
da própria máquina, ele me mostra algumas portas abertas (como esperado), mas não mostra 445 ou 139. Isso faz sentido, pois nunca configurei o samba nesta máquina. Além disso, quando eu listo os processos em execução e grep for smb
or samba
, ele não mostra nada em execução.
Observando as regras de firewall do servidor, vejo que ele só permite tráfego de entrada nas portas 80 e 22. Permite tráfego de saída em todas as portas para todos os destinos, mas não acho que isso seja relevante.
O problema é que quando faço uma nmap
de fora da rede, mostra que as portas 139 e 445 estão fechadas. Por que é que? Meu entendimento é que 'fechado' significa que o firewall está deixando os pacotes passarem para o servidor, mas não há nada ouvindo na porta. Por que o firewall está deixando o tráfego passar?
"Fechado" significa que o nmap recebeu um pacote TCP RST, que é de fato como os hosts IP devem responder quando não há nada ouvindo na porta.
No entanto, o nmap não sabe se esse pacote Reset veio do host real ou se foi falsificado por um firewall ao longo do caminho. (Muitos firewalls são realmente configurados para rejeitar explicitamente as tentativas de conexão e não ignorá-las silenciosamente; isso evita longos tempos limite no lado do cliente.)
Pode ser que o firewall do seu servidor use
reject with tcp-reset
ou similar.Também pode ser que a rede da qual você está verificando esteja configurada para bloquear todas as conexões SMB de saída como medida de segurança (por exemplo, para evitar que as estações de trabalho falem NTLM com servidores maliciosos) e esteja gerando os 'RST's.
Pode até ser que o ISP do qual você está verificando – ou o ISP no qual seu servidor está hospedado – esteja bloqueando as conexões SMB em sua WAN para evitar a possível disseminação de malware (como o antigo worm Conficker).
Se você olhar para os pacotes usando tcpdump, um RST falsificado por um middlebox obviamente será invisível para o servidor (porque o servidor não o enviou), e esses pacotes podem ter um TTL suspeitamente diferente das respostas reais que o servidor gera.
Use
nmap --reason
para ver por que está mostrando um estado específico. Esteja ciente de que, embora o nmap considere um TCP RST para indicar "fechado" (já que o host não aceitou conexões), algumas outras ferramentas realmente o chamam de "aberto" (pensando que o firewall permitiu a passagem dos pacotes).