Привет, дорогой читатель!
Зарегистрируйтесь и получите доступ к бесплатному контенту. А также будьте в курсе нового учебного контента. Ссылка на учебную платформу:
Если материал полезен, то есть способ отблагодарить меня. Любая сумма будет отличной наградой и стимулом писать полезный контент для Вас.
Судя по количеству правильных ответов, Вы готовы к статье про ЭЦП. Все верно, понимая основы хеширования и принципов ассиметричного шифрования не будет проблем с тем, чтобы раз и навсегда понять, что из себя представляет технология электронной цифровой подписи. Предвижу пессимизм некоторых: «ЭЦП про документооборот, фу-фу, документооборот скучно и не зачем вникать в это!». Ан нет, ЭЦП – применяется сейчас направо и налево. Даже модный блокчейн не был бы не блокчейном если бы не все то, что в себе объединяет ЭЦП. Так что если хотите быть в теме не проходите мимо, знания вам эти уж точно пригодятся если не с криптой, то по работе уж точно столкнетесь.
А пока пишу про ЭЦП (надеюсь на следующей неделе «разрожусь») ловите полезную для любого админа хоть системного, хоть сетевого, хоть ИБ-всея Руси специалиста статейку на тему преобразования сетевых адресов!
Почему я считаю эту тему важной? Нуууу…, это преобразование везде: чтобы вывести пользователя в интернет, для того чтобы ИБ-шнику направить анализируемый трафик туда куда ему нужно для последующего анализа, сетевику направить трафик в сеть, которую тот не контролирует (потому что, как вы помните, оба узла в сети должны иметь соответствующую маршрутную информацию). Думаю, вы уже догадались, о чем пойдет речь! Все верно – про 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:
Со стороны VM (proxy):
Решение задачи поделим на два этапа:
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.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:
Так теперь выглядит ситуация со стороны SRVx:
Задача выполнена! Но перед завершением предлагаю заглянуть «под капот» того, что происходит на 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) мы увидим такую картину:
Перейдя в браузере SRVx по http на адрес 2 cws.checkpoint.com мы сможем наблюдать такую картину:
Отыщем теперь в nat таблице соответствующую NAT – трансляцию:
Сделать это можно с помощью удобной утилиты для Linux: conntrack
Со стороны SRVx исходящее соединения можно увидеть с помощью команды netstat -af (о самых полезных командах для Windows я писал в отдельной статье: Команды которые изменят ваши отношения с Windows
P.S. Про полезные утилиты сетевого тестирования я писал в отдельной статье: Диагностика TCP/IP: ping, traceroute, telnet, netstat, tcpdump, wireshark
Кому было интересно прошу потешить алгоритмы дзена лайками и комментариями! Можете написать туда про не стандартные кейсы применения SNAT в вашей практике:)
Всем спасибо за внимания, да прибудет с вами сила духа :)