Найти в Дзене
ИнфоКомм

Преобразование сетевых адресов (SNAT, DNAT)

Оглавление

Привет, дорогой читатель!

Страница регистрации в академии
Страница регистрации в академии

Зарегистрируйтесь и получите доступ к бесплатному контенту. А также будьте в курсе нового учебного контента. Ссылка на учебную платформу:

Академия ИНФОКОММ

infocomm.space

Благодарность автору
Благодарность автору

Если материал полезен, то есть способ отблагодарить меня. Любая сумма будет отличной наградой и стимулом писать полезный контент для Вас.

Купить кофе автору

Судя по количеству правильных ответов, Вы готовы к статье про ЭЦП. Все верно, понимая основы хеширования и принципов ассиметричного шифрования не будет проблем с тем, чтобы раз и навсегда понять, что из себя представляет технология электронной цифровой подписи. Предвижу пессимизм некоторых: «ЭЦП про документооборот, фу-фу, документооборот скучно и не зачем вникать в это!». Ан нет, ЭЦП – применяется сейчас направо и налево. Даже модный блокчейн не был бы не блокчейном если бы не все то, что в себе объединяет ЭЦП. Так что если хотите быть в теме не проходите мимо, знания вам эти уж точно пригодятся если не с криптой, то по работе уж точно столкнетесь.

А пока пишу про ЭЦП (надеюсь на следующей неделе «разрожусь») ловите полезную для любого админа хоть системного, хоть сетевого, хоть ИБ-всея Руси специалиста статейку на тему преобразования сетевых адресов!

Почему я считаю эту тему важной? Нуууу…, это преобразование везде: чтобы вывести пользователя в интернет, для того чтобы ИБ-шнику направить анализируемый трафик туда куда ему нужно для последующего анализа, сетевику направить трафик в сеть, которую тот не контролирует (потому что, как вы помните, оба узла в сети должны иметь соответствующую маршрутную информацию). Думаю, вы уже догадались, о чем пойдет речь! Все верно – про SNAT и DNAT.

На сегодняшний день распространены два типа NAT: Source NAT (SNAT) и Destination NAT (DNAT). Различия между ними связаны с тем, какой адрес изменяется во время обработки трафика. SNAT (известный в тесных IT-шных кругах под названием маскарадинг) меняет информацию об IP-адресе источника (src ip).

В каких случаях вам может пригодиться SNAT:

· При необходимости направить трафик из Private Networks (RFC 1918) в сеть INTERNET (классический и самый распространенный случай);

· При желании скрыть группу IP адресов за одним IP адресом для анонимизации источников трафика;

· Для перенаправления трафика в сеть, которую вы не контролирует или на узлы на которых нет возможности добавить обратный маршрут (нет желания и необходимости в этом);

· В различных экзотических задачах по перехвату трафика для последующего анализа.

Думаю, вы уже встречались с тем или иным сценарием использования SNAT. Мне же пришлось столкнуться со всеми перечисленными выше. Собеседуя людей на позиции специалистов по информационной безопасности, сетевых инженеров и системных администраторов я заметил, что большинство имеют очень неструктурированные по этой части знания. И это реально плохо, так как ну уж очень часто возникают задачи, где SNAT просто незаменим.

Закроем же пробелы по этой части!

Чаще всего настройки SNAT производятся на специализированном сетевом оборудовании: маршрутизаторах, межсетевых экранах. Там все просто: берете любимый поисковик или, для особо продвинутых ChatGPT и находите готовый рецепт (перечень и последовательность команд) для настройки SNAT. Если в качестве маршрутизатора (прокси) у вас используется система под управлением Linux, то SNAT вы без труда настроите с помощью iptables. Именно этот способ мы сегодня и разберем на реальном примере!

Дано:

· имеем сервер X (далее SRVx) без подключения к сети INTERNET;

· SRVx и виртуальная машина VM(proxy) находятся в одном сегменте сети;

· VM(Ubuntu22.04 LTS) имеет доступ к сети INTERNET.

Задача: необходимо обеспечить временный доступ SRVx к ресурсу cws.checkpoint.com в зарубежном сегменте сети INTERNETчерез VM(proxy).

Практическая значимость: лично у меня (думаю и у вас тоже) не раз возникали ситуации, когда штатный доступ в INETRNET сильно урезан в соответствии с политиками ИБ, а нужно как всегда срочно и вчера уже должно было быть. Так как у вас в управлении может находиться виртуальная среда (доступ к серверам) и сеть обеспечить L2 связность любых хостов не проблема.

Исходная схема:

Вторые и третьи октеты скрыты в виду политики безопасности
Вторые и третьи октеты скрыты в виду политики безопасности

На текущий момент имеем такую картину по связности:

Со стороны SRVx:

SRVx имеет прямую L2 связность с VM(proxy)
SRVx имеет прямую L2 связность с VM(proxy)
Даже попытки резолва dns имени в ip адрес безуспешны. Что уж говорить про icmp
Даже попытки резолва dns имени в ip адрес безуспешны. Что уж говорить про icmp

Со стороны VM (proxy):

Фиксируем доступность требуемого ресурса
Фиксируем доступность требуемого ресурса
Определяем интерфейс VM(proxy) задействованный в обмене трафика с сетью Internet
Определяем интерфейс VM(proxy) задействованный в обмене трафика с сетью Internet

Решение задачи поделим на два этапа:

1. Настройка SNAT на VM(proxy) для проброса исходящего трафика от SRVx к сервису cws.checkpoint.com;

2. Настройка статического маршрута (маршрута по умолчанию) на SRVx для маршрутизации трафика к сервису cws.checkpoint.com через VM (proxy).

Целевая схема:

Описанная задача для визуализации на картинке
Описанная задача для визуализации на картинке

Настройка SNAT на VM(proxy):

Для начала заглянем в таблицу натирования (nat) iptables:

В таблице пусто - нет никаких правил
В таблице пусто - нет никаких правил

Создаем в таблице nat в цепочке POSTROUTING соответствующее правило:

sudo iptables --table nat --append POSTROUTING --source 10.x.y.186/32 --out-interface ens193 -j MASQUERADE

Заглянем в таблицу натирования снова:

-10

Видим следующее правило: траффик любого протокола, пришедший на любой из интерфейсов с адресом источника = 10.x.y.186 (--source 10.x.y.186/32) и любым адресом назначения отправить с интерфейса ens193 (out-interface ens193) предварительно заменив адрес источника на ip адрес интерфейса ens193 (-j MASQUERADE), т.е. на адрес 10.x.z.1.

Настройка статического маршрута (маршрута по умолчанию) на SRVx:

На самом деле в место статического маршрута можно сменить и маршрут по умолчанию. Тут все зависит от того на сколько временную схему вы реализуете. Если в вашем случае нет ничего более постоянного чем временное, то доступ в интернет можно организовать через default gateway, а в приватные сети уже ходить статикой. Как я уже и сказал, все зависит от исходного состояния таблицы маршрутизации вашего хоста. В нашем случае, для простоты, в качестве маршрута по умолчанию мы укажем ip адресc VM (proxy): 10.x.y.187

Вот так выглядят постоянные маршруты на SRVx:

-11

Так теперь выглядит ситуация со стороны SRVx:

Траффик успешно ходит до ресурса cws.checkpoint.com через VM (proxy)
Траффик успешно ходит до ресурса cws.checkpoint.com через VM (proxy)

Задача выполнена! Но перед завершением предлагаю заглянуть «под капот» того, что происходит на VM (proxy):

1. Так как VM (proxy) у нас это Linux, а там есть волшебный tcpdump, то взглянем на пакетики, бегущие от SRVx через VM(proxy) к cws.checkpoint.com;

2. Инициируем с SRVx http соединение по адресу cws.checkpoint.com и отыщем в nat таблице соответствующую NAT – трансляцию.

Смотрим на трафик:

Запустив команду ping -n 2 cws.checkpoint.com c SRVx на VM(proxy) мы увидим такую картину:

-13

Перейдя в браузере SRVx по http на адрес 2 cws.checkpoint.com мы сможем наблюдать такую картину:

-14
-15

Отыщем теперь в nat таблице соответствующую NAT – трансляцию:

Сделать это можно с помощью удобной утилиты для Linux: conntrack

-16

Со стороны SRVx исходящее соединения можно увидеть с помощью команды netstat -af (о самых полезных командах для Windows я писал в отдельной статье: Команды которые изменят ваши отношения с Windows

netstat -af на SRVx в момент перехода в браузере по адресу ресурса
netstat -af на SRVx в момент перехода в браузере по адресу ресурса

P.S. Про полезные утилиты сетевого тестирования я писал в отдельной статье: Диагностика TCP/IP: ping, traceroute, telnet, netstat, tcpdump, wireshark

Кому было интересно прошу потешить алгоритмы дзена лайками и комментариями! Можете написать туда про не стандартные кейсы применения SNAT в вашей практике:)

Всем спасибо за внимания, да прибудет с вами сила духа :)