Если порт за NAT отправляет пакет на вредоносный хост, может ли этот хост отправлять пакеты на любой открытый порт или только на тот порт, с которого был отправлен пакет?

Если порт за NAT отправляет пакет на вредоносный хост, может ли этот хост отправлять пакеты на любой открытый порт или только на тот порт, с которого был отправлен пакет?

Например, компьютер за маршрутизатором NAT использует Skype. Skype использует порт 4000 для отправки пакетов на сервер для установления непрямых соединений с другими клиентами Skype.

Так как Skype отправил пакет на серверпервый, сервер, очевидно, может отправлять пакеты обратно маршрутизатору, использующему NAT.

У меня вопрос: учитывая, что маршрутизатор использует NAT, разрешено ли этому серверу отправлять пакеты на любые открытые/переадресованные порты, которые есть у NAT, или только на порт 4000?

Я знаю, что серверы Skype вовсе не вредоносны, это был только пример.

решение1

Для входящего трафика, инициированного другими: вредоносный хост всегда может отправить данные на любой порт вашего маршрутизатора (Сканирование портов). Если порт не перенаправлен, ваш маршрутизатор может решить, следует ли отбросить непрошеный пакет или вежливо ответить, что соединение недействительно. Если порт был перенаправлен, то он достигнет конечного хоста за маршрутизатором.

Для исходящего трафика, инициированного вашим хостом: нет правила, по которому исходный порт должен использоваться для связи с сервером ретрансляции Skype. Кроме того, на вашем конечном хосте Skype может использовать TCP 4000, но NAT может фактически использовать другой порт для отправки сообщения, скажем, порт A. Сервер Skype видит только порт A, а не порт 4000. Если сервер Skype отвечает на порт, отличный от A, то применяется ситуация, описанная в разделе «Для входящего трафика». Если сервер Skype отвечает на порт A, то NAT направляет его обратно на ваш хост, отправляя на порт 4000.

Для ясности: NAT (Network Address Translator) — это ваш маршрутизатор. И не путайте часть «Для входящего трафика» с сетевым ответом вашему хосту. На самом деле это означает, что внешний сервер первым обращается к вашему хосту, чтобы установить соединение.

решение2

Простой ответ: «он может отправлять пакеты (клиенту за маршрутизатором NAT) только на тот порт, который отправил пакет». Это в целом верно, но не совсем.

Ответ зависит от того, как настроен IPTables, рассматриваемого порта и используемых модулей. Простые устройства NAT позволяют отображать трафик только на тот же порт, с которого он пришел, однако не все устройства настолько просты. В Linux и других ОС вы получаете «Stateful firewalls», где обычно используются порты «Established and related» вместе с различными модулями, которые отслеживают состояния соединения — например, если сделан исходящий запрос FTP (порт 21), маршрутизатор также может открыть порт 20 для данных, если загружен модуль FTP. Также может быть возможно, что FTP откроет другие порты, и вредоносный сервер может сделать это, чтобы получить доступ к произвольному порту с высоким номером. Некоторые распространенные модули отслеживания, которые могут быть использованы, включают FTP, SIP, Netbios, PPTP, gre, tftp, h323, irc. Существует ошибка CVE-2014-8160, которая может позволить произвольный обход брандмауэра при использовании отслеживания подключений при определенных условиях — возможно, именно таким способом, который вы рассматриваете.

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

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