Cómo comprobar si hay caídas del firewall en WireShark

Cómo comprobar si hay caídas del firewall en WireShark

Tenemos una configuración de aplicación en dos servidores. La aplicación falla porque un firewall bloquea la comunicación entre los dos servidores. Necesito una manera de descubrir cada puerto que está bloqueado para poder solicitar que se abran.

He capturado tcpdump en estos dos servidores. ¿La forma correcta de obtener el puerto bloqueado es buscar un SYN y luego un RST?

Si es así, ¿hay algún filtro que pueda crear en WireShark que me permita mostrar todos los puertos que se están bloqueando?

Respuesta1

Primero, la mejor manera es obtener acceso desde su servidor firewall para verificar los registros.

Debe investigar un poco si no tenía este tipo de acceso.

Wireshark puede confirmar lo que está sucediendo pero no es una herramienta adecuada para hacerlo. Necesita utilizar más herramientas para comprobarlo.

Supongamos que tiene un escenario:

  • Tiene acceso al servidor y no al firewall.

En este caso, le recomiendo que ejecute las herramientas nmap y nc en Linux para sondear los puertos.

░▒▓  │  /mnt/sda1/backup_home ▓▒░ nmap -Pn -v -v 10.1.1.20                                         ░▒▓ ✔ │ at 17:38:37  ▓▒░
Starting Nmap 7.93 ( https://nmap.org ) at 2023-01-24 17:39 -03
Initiating Parallel DNS resolution of 1 host. at 17:39
Completed Parallel DNS resolution of 1 host. at 17:39, 0.08s elapsed
Initiating Connect Scan at 17:39
Scanning 10.1.1.20 [1000 ports]
Discovered open port 8080/tcp on 10.1.1.20
Discovered open port 22/tcp on 10.1.1.20
Discovered open port 111/tcp on 10.1.1.20
Discovered open port 8000/tcp on 10.1.1.20
Discovered open port 9001/tcp on 10.1.1.20
Completed Connect Scan at 17:39, 0.49s elapsed (1000 total ports)
Nmap scan report for 10.1.1.20
Host is up, received user-set (0.047s latency).
Scanned at 2023-01-24 17:39:28 -03 for 1s
Not shown: 995 closed tcp ports (conn-refused)
PORT     STATE SERVICE    REASON
22/tcp   open  ssh        syn-ack
111/tcp  open  rpcbind    syn-ack
8000/tcp open  http-alt   syn-ack
8080/tcp open  http-proxy syn-ack
9001/tcp open  tor-orport syn-ack

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.59 seconds
nc -vnz 10.1.1.20 22                               ░▒▓ 1 ✘ │ took 10s  │ at 17:38:23  ▓▒░
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Connected to 10.1.1.20:22.
Ncat: 0 bytes sent, 0 bytes received in 0.05 seconds.

Como puede ver, probé todos los puertos abiertos en mi servidor y confirmé que 22 está abierto para su uso y no está bloqueado por un firewall.

Pero podría tener un problema. Déjame mostrarte.

░▒▓  │  /mnt/sda1/backup_home ▓▒░ ssh [email protected]                                               ░▒▓ ✔ │ at 17:39:29  ▓▒░
kex_exchange_identification: read: Connection reset by peer
Connection reset by 10.1.1.20 port 22
░▒▓  │  /mnt/sda/backup_home ▓▒░ 

No puedo acceder a este host. El problema es que alguna regla en el firewall bloquea el intercambio de claves ssh. ¿Cómo puedo confirmarlo? Utilizo Wireshark para confirmar eso.

Yo seleccioné "cualquier" como mi interfaz y luego intenté conectarme al servidor y descubrí que un firewall en xxx.244 está bloqueando mi entrada. Utilizo este filtro en Wireshark.

!(http or ssdp)  &&  tcp.flags.reset==1

La primera parte es filtrar la basura y la segunda parte es restablecerla.

[filtro Wireshark y firewall oculto en camino][1]

La segunda parte confirma la causa del problema cuando hago ping a ese host y también uso el comando tracepath en la misma captura. este rastro tuvo algunos bloqueos en su camino, como puede ver en la segunda parte de los paquetes capturados.

[el primero es ping y el segundo es la salida de tracepath][2]

Como puede ver, necesita utilizar más herramientas para comprender lo que está sucediendo. También debe verificar su aplicación si tiene algunos registros, o podría tener algún proxy inverso en el medio de la ruta o algo más.

Puedes usarCarolina del Nortepara simular un servidor simple en un lado para transferir archivos usando cada puerto que necesita usar en su aplicación.

Cree un archivo en un cliente y coloque algo de basura dentro.

:>test.
cat <<EOF> test
asd
asdas
asd
asd
EOF

Su servidor es 10.1.1.20 en este ejemplo. ejecute un netcat en este servidor en el puerto 3333, por ejemplo:

nc -lv 3333 > test

ejecute netcat en cliente para enviar un archivo a este servidor:

nc -v 10.1.1.20 3333 <test

Supervise su servidor y cliente para obtener resultados. Pruebe esto con todos los puertos necesarios. Si su firewall le bloquea algunos de esos puertos, no podrá transferir este archivo.

¡Buena suerte! [1]:https://i.stack.imgur.com/avf0y.png [2]:https://i.stack.imgur.com/p5ylM.png

información relacionada