Протокол туннелирования
Набор интернет-протоколов |
---|
Прикладной уровень |
Транспортный уровень |
Интернет-слой |
Слой связи |
В компьютерных сетях протокол туннелирования — это протокол связи , который позволяет перемещать данные из одной сети в другую. Например, он может разрешить частной сети передачу данных через общедоступную сеть (например, Интернет ) или передачу одного сетевого протокола через несовместимую сеть посредством процесса, называемого инкапсуляцией .
Поскольку туннелирование предполагает переупаковку данных трафика в другую форму, возможно, со стандартным шифрованием , оно может скрыть природу трафика, проходящего через туннель.
Протокол туннелирования работает, используя часть данных пакета ( полезную нагрузку ) для передачи пакетов, которые фактически предоставляют услугу. Туннелирование использует многоуровневую модель протокола, такую как модели набора протоколов OSI или TCP/IP , но обычно нарушает многоуровневое распределение при использовании полезной нагрузки для передачи услуги, которая обычно не предоставляется сетью. Обычно протокол доставки работает на том же или более высоком уровне в многоуровневой модели, чем протокол полезной нагрузки.
Использование
[ редактировать ]Протокол туннелирования может, например, позволять внешнему протоколу работать в сети, которая не поддерживает этот конкретный протокол, например, запуск IPv6 поверх IPv4 .
Другим важным применением является предоставление услуг, которые нецелесообразно или небезопасно предлагать с использованием только базовых сетевых служб, например предоставление адреса корпоративной сети удаленному пользователю, физический сетевой адрес которого не является частью корпоративной сети.
Обход политики брандмауэра
[ редактировать ]Пользователи также могут использовать туннелирование, чтобы «пробраться» через брандмауэр, используя протокол, который брандмауэр обычно блокирует, но «завернутый» в протокол, который брандмауэр не блокирует, например HTTP . Если политика брандмауэра специально не исключает такого рода «обертывание», этот трюк может помочь обойти намеченную политику брандмауэра (или любой набор взаимосвязанных политик брандмауэра).
Другой метод туннелирования на основе HTTP использует метод/команду HTTP CONNECT . Клиент отправляет команду HTTP CONNECT HTTP-прокси. Затем прокси-сервер устанавливает TCP-соединение с определенным сервером:портом и передает данные между этим сервером:портом и клиентским соединением. [ 1 ] Поскольку это создает дыру в безопасности, HTTP-прокси с поддержкой CONNECT обычно ограничивают доступ к методу CONNECT. Прокси-сервер разрешает подключения только к определенным портам, например 443 для HTTPS. [ 2 ]
Другие методы туннелирования, позволяющие обходить сетевые брандмауэры, используют различные протоколы, такие как DNS , [ 3 ] МКТТ , [ 4 ] SMS . [ 5 ]
Технический обзор
[ редактировать ]В качестве примера сетевого уровня над сетевым уровнем можно привести Generic Routing Encapsulation (GRE), протокол, работающий поверх IP ( IP-протокол номер 47), который часто служит для передачи IP-пакетов с частными адресами RFC 1918 через Интернет с использованием пакетов доставки с общедоступными IP-адреса. В этом случае протоколы доставки и полезной нагрузки совпадают, но адреса полезной нагрузки несовместимы с адресами сети доставки.
Также возможно установить соединение, используя уровень канала передачи данных. Протокол туннелирования уровня 2 (L2TP) позволяет передавать кадры между двумя узлами. По умолчанию туннель не шифруется: выбранный протокол TCP/IP определяет уровень безопасности.
SSH использует порт 22 для шифрования данных полезной нагрузки, передаваемой через соединение общедоступной сети (например, Интернет), тем самым обеспечивая VPN функциональность . IPsec имеет сквозной транспортный режим, но также может работать в режиме туннелирования через доверенный шлюз безопасности.
Чтобы понять конкретный стек протоколов, создаваемый туннелированием, сетевые инженеры должны понимать наборы протоколов как полезной нагрузки, так и доставки.
Общие протоколы туннелирования
[ редактировать ]- IP в IP (протокол IP 4): IP в IPv4/IPv6
- SIT/IPv6 (IP-протокол 41): IPv6 в IPv4/IPv6
- GRE (IP-протокол 47): универсальная инкапсуляция маршрутизации
- OpenVPN (UDP-порт 1194)
- SSTP (порт TCP 443): протокол туннелирования защищенных сокетов
- IPSec (IP-протоколы 50 и 51): безопасность интернет-протокола.
- L2TP (порт UDP 1701): протокол туннелирования уровня 2
- L2TPv3 (протокол IP 115): протокол туннелирования уровня 2, версия 3
- VXLAN (UDP-порт 4789): виртуальная расширяемая локальная сеть.
- PPTP (порт TCP 1723 для управления, GRE для данных): протокол туннелирования «точка-точка».
- PPPoE (EtherType 0x8863 для управления, 0x8864 для данных): протокол «точка-точка» через Ethernet.
- ЖЕНЕВА
- WireGuard (динамический порт UDP)
Безопасное туннелирование Shell
[ редактировать ]Туннель Secure Shell (SSH) состоит из зашифрованного туннеля, созданного через соединение по протоколу SSH . Пользователи могут настроить SSH-туннели для передачи незашифрованного трафика по сети через зашифрованный канал. Это программный подход к сетевой безопасности, результатом которого является прозрачное шифрование. [ 6 ]
Например, компьютеры с Microsoft Windows могут обмениваться файлами с помощью протокола Server Message Block (SMB), незашифрованного протокола. Если бы кто-то удаленно смонтировал файловую систему Microsoft Windows через Интернет, кто-то, прослушивающий соединение, мог бы увидеть переданные файлы. Чтобы безопасно смонтировать файловую систему Windows, можно создать туннель SSH, который направляет весь трафик SMB на удаленный файловый сервер через зашифрованный канал. Несмотря на то, что сам протокол SMB не содержит шифрования, зашифрованный канал SSH, по которому он проходит, обеспечивает безопасность.
Как только соединение SSH установлено, туннель начинается с прослушивания SSH порта на удаленный или локальный хост. Любые подключения к нему перенаправляются на указанный адрес и порт, исходящие от противоположный (удаленный или локальный, как ранее) хост.
Туннелирование полезной нагрузки, инкапсулирующей TCP (например, PPP ), через соединение на основе TCP (например, переадресация портов SSH) известно как «TCP-over-TCP», и это может привести к резкому снижению производительности передачи (известная проблема). как «обвал TCP»), [ 7 ] [ 8 ] поэтому программное обеспечение виртуальной частной сети может вместо этого использовать протокол, более простой, чем TCP, для туннельного соединения. Однако это часто не является проблемой при использовании переадресации портов OpenSSH, поскольку многие варианты использования не влекут за собой туннелирование TCP-over-TCP; сбоя можно избежать, поскольку клиент OpenSSH обрабатывает локальное TCP-соединение на стороне клиента, чтобы получить фактически отправляемые полезные данные, а затем отправляет эти полезные данные непосредственно через собственное TCP-соединение туннеля на сторону сервера, где OpenSSH сервер аналогичным образом «разворачивает» полезную нагрузку, чтобы снова «обернуть» ее для маршрутизации к конечному пункту назначения. [ 9 ] Естественно, такое свертывание и развертывание также происходит в направлении, обратном двунаправленному туннелю.
SSH-туннели предоставляют возможность обойти брандмауэры , запрещающие определенные интернет-сервисы, при условии, что сайт разрешает исходящие соединения. Например, организация может запретить пользователю доступ к веб-страницам Интернета (порт 80) напрямую, минуя прокси-фильтр организации (который предоставляет организации средства мониторинга и контроля того, что пользователь видит через Интернет). Но пользователи могут не захотеть, чтобы их веб-трафик контролировался или блокировался прокси-фильтром организации. Если пользователи могут подключиться к внешнему SSH- серверу , они могут создать SSH-туннель для перенаправления заданного порта на своем локальном компьютере на порт 80 на удаленном веб-сервере. Чтобы получить доступ к удаленному веб-серверу, пользователи должны указать в своем браузере локальный порт по адресу http://localhost/.
Некоторые клиенты SSH поддерживают динамическую переадресацию портов , что позволяет пользователю создавать прокси-сервер SOCKS 4/5. В этом случае пользователи могут настроить свои приложения на использование локального прокси-сервера SOCKS. Это дает больше гибкости, чем создание SSH-туннеля к одному порту, как описано ранее. SOCKS может освободить пользователя от ограничений подключения только к предопределенному удаленному порту и серверу. Если приложение не поддерживает SOCKS, можно использовать проксификатор для перенаправления приложения на локальный прокси-сервер SOCKS. Некоторые проксификаторы, такие как Proxycap, поддерживают SSH напрямую, что позволяет избежать необходимости в SSH-клиенте.
В последних версиях OpenSSH даже разрешено создавать туннели уровня 2 или уровня 3, если на обоих концах включены такие возможности туннелирования. Это создает tun
(слой 3, по умолчанию) или tap
(уровень 2) виртуальные интерфейсы на обоих концах соединения. Это позволяет использовать обычное управление сетью и маршрутизацию, а при использовании на маршрутизаторах можно туннелировать трафик всей подсети. Пара tap
виртуальные интерфейсы действуют как кабель Ethernet, соединяющий оба конца соединения, и могут присоединяться к мостам ядра.
Кибератаки на основе туннелирования
[ редактировать ]На протяжении многих лет туннелирование и инкапсуляция данных в целом часто применялись по злонамеренным причинам, чтобы злонамеренно обмениваться данными за пределами защищенной сети.
В этом контексте известные туннели используют такие протоколы, как HTTP , [ 10 ] СШ , [ 11 ] ДНС , [ 12 ] [ 13 ] МКТТ . [ 14 ]
См. также
[ редактировать ]- Протокол туннелирования GPRS (GTP)
- HTTP-туннель
- ICMP-туннель
- НВГРЭ
- Модель OSI (диаграмма)
- Псевдопровод
- Станнел
- Туннельный брокер
- Виртуальная расширяемая локальная сеть (VXLAN)
- Виртуальная частная сеть (VPN)
Ссылки
[ редактировать ]- ^ «Обновление до TLS в HTTP/1.1» . РФК 2817 . 2000 . Проверено 20 марта 2013 г.
- ^ «Примечание об уязвимости VU#150227: конфигурации HTTP-прокси по умолчанию допускают произвольные TCP-соединения» . США-СЕРТ . 17 мая 2002 г. Проверено 10 мая 2007 г.
- ^ Раман, Д., Саттер, Б.Д., Коппенс, Б., Волкарт, С., Босшер, К.Д., Данье, П., и Баггенхаут, Э.В. (2012, ноябрь). DNS-туннелирование для проникновения в сеть. На Международной конференции по информационной безопасности и криптологии (стр. 65-77). Шпрингер, Берлин, Гейдельберг.
- ^ Ваккари И., Нартени С., Айелло М., Монджелли М. и Камбьязо Э. (2021). Использование протоколов Интернета вещей для вредоносной деятельности по краже данных. Доступ IEEE, 9, 104261-104280.
- ^ Нартени С., Ваккари И., Монджелли М., Айелло М. и Камбьязо Э. (2021). Оценка возможности совершения туннельных атак с использованием службы коротких сообщений. Журнал Интернет-услуг и информационной безопасности, 11, 30–46.
- ^ Барретт, Дэниел Дж.; Барретт, Дэниел Дж.; Сильверман, Ричард Э.; Сильверман, Ричард (2001). SSH, Secure Shell: Полное руководство . «О'Рейли Медиа, Инк.». ISBN 978-0-596-00011-0 .
- ^ Титц, Олаф (23 апреля 2001 г.). «Почему TCP поверх TCP — плохая идея» . Архивировано из оригинала 3 января 2022 г. Проверено 3 января 2023 г.
- ^ Хонда, Осаму; Осаки, Хироюки; Имасе, Макото; Исидзука, Мика; Мураяма, Дзюнъити (октябрь 2005 г.). «Понимание TCP поверх TCP: влияние туннелирования TCP на сквозную пропускную способность и задержку». В Атикуззамане, Мохаммед; Баландин, Сергей I (ред.). Производительность, качество обслуживания и управление коммуникационными и сенсорными сетями следующего поколения III . Том. 6011. Бибкод : 2005SPIE.6011..138H . CiteSeerX 10.1.1.78.5815 . дои : 10.1117/12.630496 . S2CID 8945952 .
- ^ Каминский, Дэн (13 июня 2003 г.). "Re: Расширения для длинных толстых сетей?" . [электронная почта защищена] (список рассылки).
код пересылки TCP также довольно быстр. Чтобы предварительно ответить на вопрос, ssh декапсулирует и повторно инкапсулирует TCP, поэтому у вас не возникнет классических проблем TCP-over-TCP.
- ^ Пак, DJ, Стрейлейн, В., Вебстер, С., и Каннингем, Р. (2002). Обнаружение активности HTTP-туннелирования. МАССАЧУСЕТССКИЙ ИНСТРУМЕНТ ТЕХНИЧЕСКОЙ ЛАБОРАТОРИИ ЛЕКСИНГТОНА ЛИНКОЛЬНА.
- ^ Данг, Ф., Ли, З., Лю, Ю., Чжай, Э., Чен, QA, Сюй, Т., ... и Ян, Дж. (2019, июнь). Понимание бесфайловых атак на устройства Iot на базе Linux с помощью Honeycloud. В материалах 17-й ежегодной международной конференции по мобильным системам, приложениям и услугам (стр. 482–493).
- ^ Раман, Д., Саттер, Б.Д., Коппенс, Б., Волкарт, С., Босшер, К.Д., Данье, П., и Баггенхаут, Э.В. (2012, ноябрь). DNS-туннелирование для проникновения в сеть. На Международной конференции по информационной безопасности и криптологии (стр. 65-77). Шпрингер, Берлин, Гейдельберг.
- ^ Айелло М., Монджелли М., Камбьязо Э. и Папалео Г. (2016). Профилирование атак туннелирования DNS с помощью PCA и взаимной информации. Логический журнал IGPL, 24 (6), 957–970.
- ^ Ваккари И., Нартени С., Айелло М., Монджелли М. и Камбьязо Э. (2021). Использование протоколов Интернета вещей для вредоносной деятельности по краже данных. Доступ IEEE, 9, 104261-104280.
Внешние ссылки
[ редактировать ]- Распределенное решение PortFusion для обратного/перенаправления, локального перенаправления прокси и туннелирования для всех протоколов TCP
- SSH VPN-туннель, см. раздел ВИРТУАЛЬНЫЕ ЧАСТНЫЕ СЕТИ НА ОСНОВЕ SSH.
- Проект BarbaTunnel — бесплатная реализация HTTP-Tunnel и UDP-Tunnel с открытым исходным кодом для Windows.
- Проект VpnHood — бесплатная реализация VPN с открытым исходным кодом с использованием перенаправления сокетов.