Como verificar se o firewall foi aberto para uma porta, mas não está escutando na porta

Como verificar se o firewall foi aberto para uma porta, mas não está escutando na porta

Estaremos implantando um novo aplicativo em um servidor e o aplicativo estará escutando na porta 8443. Pedimos à equipe de rede para abrir o firewall da porta 8443 nesse servidor antes de implantar o aplicativo. Não há nenhum aplicativo atualmente escutando nessa porta específica do servidor.

Existe alguma maneira de garantir que o firewall esteja aberto para a porta 8443

SO: Linux/Windows

Responder1

Se você quiser ver se pode formar uma conexão TCP a partir de uma máquina remota, instale o OpenCSW nessa máquina e na máquina de destino e instale o netcat em ambas. Esta é a sintaxe para usar o netcat para testar conexões TCP:

nc -vz targetServer portNum

Por exemplo, para verificar o SSH em "homeServer1":

nc -vz homeserver1 22

Isso permite testar a conectividade em nível TCP do sistema remoto. O Netcat também pode ser configurado para escutar em uma porta em vez de atuar como cliente. Para fazer com que ele escute no TCP/8443:

No servidor que hospedará a aplicação:nc -l homeserver1 8443

Em uma máquina fora do firewall:nc -vz homeserver.fqdn 8443

Este é um exemplo de execução bem-sucedida:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
Connection to ditirlns01.ncat.edu 8443 port [tcp/pcsync-https] succeeded!

Uma execução com falha:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused

Responder2

Firewallsdeveresponda com umMensagem ICMPquando eles bloqueiam uma solicitação. No entanto, este não é necessariamente o caso (você estará interessado emeste belo artigo).

Você pode testar externamente para ver se uma porta está acessível através de um firewall e, em caso afirmativo, se alguma coisa está escutando nela. Aqui estão três cenários diferentes envolvendo uma solicitação tcp que você pode observar com o wireshark, ou algum outro sniffer de pacotes, e o que você verá:

1) Firewall rejeita solicitação

Você recebe uma mensagem ICMP de volta e a ferramenta que faz a solicitação deve informar imediatamente algo nesse sentido ("inacessível, proibido pelo administrador", etc.). Por "ferramenta" quero dizer o cliente que você está usando para enviar a solicitação (eu usei telnet). Os detalhes da mensagem 1 dependem de como o firewall está configurado, mas “porta inacessível” é provavelmente a mais comum.

"Nenhuma rota para o host" pode indicar isso, mas também pode indicar problemas de roteamento mais sutis.

2) Firewall descarta pacote

Não há resposta, então a ferramenta espera até que o tempo acabe ou você fique entediado.

3) O firewall permite pacotes (ou não há firewall), mas nada está escutando na porta.

Você recebe uma mensagem TCP RST/ACK de volta. Presumo que o protocolo TCP exija isso. Em outras palavras, se nada estiver escutando na porta, o próprio sistema operacional envia esta resposta. Pode ser difícil distinguir isso do nº 1 apenas com base no que a ferramenta relata, porquepoderiadiga a mesma coisa em ambos os casos (no entanto, provavelmente distingue isso como "conexão recusada" vs. nº 1, "rede inacessível"). Observados em um sniffer de pacotes na máquina cliente, os cenários nº 1 (mensagem de rejeição ICMP) e nº 3 (mensagem TCP RST/ACK) são claramente distintos.

A única outra opção aqui é que o pacote seja permitido pelo firewall e algo esteja escutando, para que você obtenha uma conexão bem-sucedida.

Em outras palavras: presumindo que sua rede em geral funcione corretamente, se você obtiver o número 1 ou o número 2, significa que um firewall está impedindo ativamente o acesso à porta. O número 3 acontecerá se o seu servidor não estiver funcionando, mas a porta estiver acessível e, claro, (o implícito) o número 4 for uma conexão bem-sucedida.


  1. Por exemplo, "porta inacessível", "host proibido", várias outras combinações dehost/porta/admineinacessível/proibido; procure-os na mensagem, pois são uma indicação explícita de um firewall IP em ação.

Responder3

Você pode usar o comando netstatpara ver se uma porta está aberta e escutando.

Exemplo

$ netstat -anp | less
Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:41716               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:17500               0.0.0.0:*                   LISTEN      3034/dropbox        
tcp        0      0 0.0.0.0:17501               0.0.0.0:*                   LISTEN      3033/dropbox        
tcp        0      0 127.0.0.1:2143              0.0.0.0:*                   LISTEN      3191/ssh                       
tcp        0      0 127.0.0.1:2025              0.0.0.0:*                   LISTEN      3191/ssh 

A saída mostra processos(coluna mais à direita)que estão escutando nas portas TCP. Os números das portas são os números que seguem os dois pontos após os endereços IP (0.0.0.0:111 seria a porta 111, por exemplo).

Os endereços IP mostramLocaleEndereços Estrangeiros.Localseria o seu sistema enquantoEstrangeiroseria qualquer endereço conectado à sua porta TCP ou conectado a uma de suas portas TCP.

Então, no caso da porta 22, esse é o daemon ssh rodando no meu sistema, éAUDIÇÃOpara conexões. Quando alguém tenta se conectar ao sshdaemon, ele bifurca uma cópia de si mesmo e envia essa conexão para outra porta, mantendo a porta TCP 22 aberta para conexões adicionais à medida que elas chegam.

Responder4

Recentemente recebi o mesmo pedido e cheguei ao tópico. Consegui verificar portas abertas no FW com o comando nc, assim enquanto consulto sua saída:

nc -v -w 1 -z -s *srcIP destIP port* 2>&1 | grep timed > /dev/null && echo closed || echo open

Basicamente, se eu atingir o tempo limite, significa que a porta não está aberta no FW.

informação relacionada