Как проверить наличие сбоев брандмауэра в WireShark

Как проверить наличие сбоев брандмауэра в WireShark

У нас есть приложение, установленное на двух серверах. Приложение не работает, потому что брандмауэр блокирует связь между двумя серверами. Мне нужен способ выяснить каждый порт, который блокируется, чтобы я мог запросить открытие этих портов.

Я захватил tcpdump на этих двух серверах. Правильный ли способ получить заблокированный порт, чтобы искать SYN, а затем RST?

Если да, то можно ли создать фильтр в WireShark, который позволит мне отобразить все заблокированные порты?

решение1

Для начала лучше всего получить доступ к серверу брандмауэра и проверить журналы.

Если у вас не было такого доступа, вам необходимо провести расследование.

Wireshark может подтвердить, что происходит, но это неподходящий инструмент для этого. Вам нужно использовать больше инструментов, чтобы проверить это.

Предположим, у вас есть такой сценарий:

  • У вас есть доступ к серверу, но нет доступа к брандмауэру.

В этом случае я рекомендую вам запустить обе утилиты nmap и nc в Linux для проверки портов.

░▒▓  │  /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.

Как видите, я проверил все открытые порты на своем сервере и подтвердил, что 22 из них открыты для использования и не блокируются брандмауэром.

Но это может быть проблемой. Позвольте мне показать вам.

░▒▓  │  /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 ▓▒░ 

Я не могу попасть на этот хост. Проблема в том, что какое-то правило в брандмауэре блокирует обмен ключами ssh. Как это подтвердить? Я использую wireshark, чтобы это подтвердить.

Я выбрал "любой" в качестве интерфейса, а затем я попытался подключиться к серверу и обнаружил, что брандмауэр на xxx.244 блокирует мой вход. Я использую этот фильтр в Wireshark.

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

Первая часть — фильтрация мусора, а вторая — сброс настроек.

[фильтр Wireshark и скрытый брандмауэр на подходе][1]

Вторая часть подтверждает причину проблемы, когда я выполняю ping на этот хост и использую команду tracepath при том же захвате. Эта трассировка столкнулась с некоторой блокировкой на своем пути, как вы можете видеть во второй части захваченных пакетов.

[первый — это ping, а второй — вывод tracepath][2]

Как вы видите, вам нужно использовать больше инструментов, чтобы понять, что происходит. Вы также должны проверить свое приложение, есть ли у него какие-то логи, или у вас может быть какой-то обратный прокси в середине пути или что-то еще.

Вы можете использоватьнкдля имитации простого сервера с одной стороны для передачи файлов, используя каждый порт, который вам нужно использовать в вашем приложении.

Создайте файл в клиенте и поместите в него какой-нибудь мусор.

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

В этом примере ваш сервер — 10.1.1.20. Запустите netcat на этом сервере на порту 3333, например:

nc -lv 3333 > test

запустите netcat в клиенте, чтобы отправить файл на этот сервер:

nc -v 10.1.1.20 3333 <test

Следите за результатами на сервере и клиенте. Попробуйте это со всеми необходимыми портами. Если ваш брандмауэр блокирует некоторые из этих портов, вы не сможете передать этот файл.

Удачи! [1]:https://i.stack.imgur.com/avf0y.png [2]:https://i.stack.imgur.com/p5ylM.png

Связанный контент