Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3482 / 787 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 13:

Перенаправление портов

< Лекция 12 || Лекция 13: 12345 || Лекция 14 >

FPIPE

Похоже, что Unix-системы всегда первыми обеспечивают пользователей наиболее полезными сетевыми сервисными средствами. Утилита datapipe содержит немногим более 100 строк программного кода на языке C. До создания библиотеки Cygwin и datapipe не существовало никаких вариантов для перенаправления портов средствами Windows. Утилита FPipe, созданная компанией Foundstone, реализует технологию перенаправления портов для системы Windows. В ней также добавлена поддержка протокола пользовательских дейтаграмм (UDP - User Datagram Protocol), которая отсутствует в datapipe.

Утилита FPipe не требует никаких вспомогательных файлов DLL или привилегированного доступа, однако она выполняется только на платформах NT, 2000 и XP. Отсутствие вспомогательных файлов DLL или подобных файлов облегчает возможность простого переноса исполняемого файла fpipe.exe на другую систему. По сравнению с datapipe, утилита FPipe добавляет больше возможностей по использованию порта отправителя и связыванию с определенным интерфейсом.

Реализация

Увеличение функциональных возможностей утилиты FPipe требует указания еще нескольких ключей командной строки:

C:\>fpipe -h
-?/-h   -   shows this help text (показывает этот текст справки)
-c      -   maximum allowed simultaneous TCP connections. Default is 32 
            (максимальное разрешенное количество одновременных 
            TCP-подключений. Значение по умолчанию - 32)
-i      -   listening interface IP address 
   (IP-адрес прослушиваемого интерфейса)
-l      -   listening port number (номер порта прослушивания)
-r      -   remote port number (номер удаленного порта)
-s      -   outbound source port number (выходящий номер 
   порта отправителя)
-u      -   UDP mode (режим UDP)
-v      -   verbose mode (многословный режим)

В качестве простой утилиты перенаправления порта FPipe работает подобно datapipe:

$./datapipe 9080 80 www.google.com

Ниже приводится эквивалентный вызов утилиты FPipe:

C:\>fpipe -l 9080 -r 80 www.google.com 
Pipe connected:
In:     127.0.0.1:1971  -->     127.0.0.1:9080 
Out:    192.168.0.184:1972  -->     216.239.33.101:80

В отличие от datapipe, утилита FPipe работает не в фоновом режиме. Она будет продолжать сообщать о подключениях, пока вы не нажмете сочетание клавиш CTRL-C. Заметьте, что FPipe также указывает равноправные IP-адрес и номер порта отправителя каждого подключения. Параметр -s утилиты FPipe позволяет использовать преимущества более детальной спецификации портов.

C:\>fpipe -l 139 -r 139 -s 88 192.168.97.154

Этот пример сначала может показаться тривиальным. В конце концов, какая польза от перенаправления одного порта NetBIOS на другой? Ценность заключается в том, что весь SMB-трафик после перенаправления порта имеет номер порта отправителя - 88. Подобная уловка, связанная с портом отправителя, позволяет обойти неверно сконфигурированные брандмауэры. Другие хорошие порты отправителя, которые можно попробовать использовать для этих целей, имеют номера 20, 25, 53 и 80. В разделе "Пример из жизни. Пакетные фильтры, порты и проблемы" далее в этой лекции рассказывается, почему изменение номера порта отправителя позволяет обходить правила сетевого доступа.

Параметр -i становится полезным на компьютерах с несколькими сетевыми адаптерами ( multi-homed system ), когда вы хотите указать определенный интерфейс для прослушивания.

C:\>fpipe -l 80 -r 22 -i 10.17.19.42 192.168.97.154

Такая функция весьма полезна на Web-серверах. Например, Web-сервис IIS-сервера может быть связан с определенным адаптером, но порт 80 разрешен для всех интерфейсов. Установите FPipe на прослушивание одного из других интерфейсов, и порт 80 будет ваш.

Примечание. В отличие от системы Unix, Windows не требует привилегированного доступа для открытия сокета на зарезервированном порту (это номера портов ниже 1024). В системе Unix только учетные записи, эквивалентные привилегированному доступу (root), могут открыть порт 80.
< Лекция 12 || Лекция 13: 12345 || Лекция 14 >