Как стать автором
Обновить

NAT не firewall, повторим еще разок

Время на прочтение2 мин
Количество просмотров68K


Посмотрите на рисунок. Вот так конфигурируется классический NAT на маршрутизаторе Cisco, допустим там больше ничего не сконфигурировано. А теперь ответьте сами себе на вопрос. Может ли при определенных условиях кто-либо обратиться извне на RDP порт (TCP 3389) супер секретного сервера 192.168.0.250 и попытаться подобать пароль к нему. Уточним, что сервер стоит одиноко в сети и никуда сам не обращается (имеется в виду, что на нем нет никаких троянов, автоматических обновлений и прочих прелестей).

Считаете — нет? Вспомним анекдот.

Лекция по филологии. Старый профессор рассказывает:

— В некоторых языках мира двойное отрицание означает согласие. В других, двойное отрицание так и остается отрицанием. Но, нет ни одного языка в мире, в котором двойное согласие означает отрицание. Голос с задней парты:

— Ну да, конечно, профессор.

Почему нет


Толковый сетевой инженер с уровнем CCNP сразу же ответит – нет, и обоснует это следующим образом. Для того, чтобы обмениваться данными с хостом за NAT необходимо чтобы в NAT создалась трансляция. Создание трансляции инициируется хостами из внутренней, с точки зрения NAT, сети. Серверное приложение на порту TCP 3389 само никуда не обратится, на то оно и серверное, поэтому трансляция не будет создана никогда, и никто во внутрь не пролезет. Инженер будет прав. Однако он не учитывает того, что обратиться к хосту за NAT извне при такой конфигурации можно, а уже после этого будет создана трансляция, через которую сервер будет передавать данные.

Почему да


Теоретически все просто. Задумайтесь, а что будет, если провайдер на своем маршрутизаторе B пропишет вот такой маршрут:
ip route 192.168.0.0 255.255.255.0 2.2.2.2
А будет следующее. Любой клиент провайдера может отправить TCP пакет на IP 192.168.0.250 порт 3389. Этот пакет, согласно таблицам маршрутизации провайдера будет доставлен на интерфейс FE0/0 марштрутизатора A. Что сделает с ним маршрутизатор A? То, для чего предназначены все маршрутизаторы — смаршрутизирует на хост 192.168.0.250. Сервер 192.168.0.250 в ответ пошлет пакет на IP адрес источника, пришедшего в изначальном пакете. Маршрутизатор A создаст трансляцию через которую будут передаваться данные к хосту источнику изначального пакета.

А вот тут возникают сложности. Они связаны с тем, что пакет уходит на IP адрес 192.168.0.250 порт 3389, а возвращаются с адреса 2.2.2.2 и порта не обязательно 3389. Вы можете мне не верить, но при наличии у атакующего FreeBSD с его divert socket-ами, perl-а, воображения и понимания как работают протоколы TCP/IP, нет ничего не возможного и можно получить доступ на терминал атакуемого сервера в течение одного дня.

Еще немного поговорим об этом


Когда я рассказывал о такой атаке знакомому, работающему у провайдера, он мне задал резонный вопрос — а вот ты мне назови хоть одного провайдера, который будет заниматься подобными вещами? Я сам раньше работал у провайдера и знаю, что никакой, но ответил вопросом – а ты знаешь, что такое маршрутизация от источника, и то, что по умолчанию она не отключена на маршрутизаторах Сisco? Ты ее отключаешь?
При использовании маршрутизации от источника атака не сильно усложняется, достаточно добавить, на сколько я помню, 5 байт в опциях IP пакета.

Заключение


Может быть, пост и провокационный, но я знаю, что большинство сетевиков не знают о подобной атаке и никогда не конфигурируют firewall в случае, когда используют NAT. Возможно, после прочтения этого поста кто-то и начнет следовать всем рекомендациям по защите сети, поверьте, они не просто так пишутся…
Теги:
Хабы:
+136
Комментарии55

Публикации

Изменить настройки темы

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн