IZONE- http://www.izcity.com/- бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Порты. Прокси. Файерволл

Когда большинство пользователей компьютерных технологий видят слово "порт", то обычно с ним ассоциируются такие аббревиатуры, как COM, LPT, PS/2. То есть - попросту названия "гнезд", куда можно присоединить какие - либо периферийные устройства вроде сканера, принтера или модема. Разные типы таких портов предоставляют разные возможности и предназначены для работы с различными устройствами, подключаемыми к персональному компьютеру. Но при чтении литературы, описывающей работу в сети Интернет, при работе с программами для этой сети становится ясно, что слово "порт" имеет не только это, привычное всем, значение. Но какое же конкретно? И что, например, означает поле "номер порта", встречающееся почти во всех окнах настройки прокси-серверов?

Как передаются данные между компьютерами в Интернете, надеюсь, ясно из предыдущей главы. Ну, а как эти самые данные находят на компьютере нужную им программу? Ведь почти все используемые сейчас операционные системы - многозадачные, и в них можно одновременно, скажем, и электронную почту отправлять или получать, и файлы на сервер помещать, и web-странички смотреть, и по Интернет-пейджеру общаться. Вот приходит пакет данных с электронным письмом на компьютер. Как он узнает, в какую программу ему пойти - в браузер или все же в почтовый клиент? Для этого и существует система портов.

Представим себе Интернет как большой город, состоящий из домов-компьютеров. Если адресом дома в такой аналогии будет служить IP-адрес, выделяемый компьютеру, то порт будет служить адресом квартиры. Каждый пакет данных имеет в себе адрес дома - IP компьютера, которому он предназначен. По этому адресу происходит маршрутизация пакета при его передаче от компьютера-сервера к компьютеру-получателю. Квартиры в доме-компьютере могут быть заняты (а могут и не быть) различными программами. И внутри этого дома маршрутизация происходит именно по номерам квартир-портов. Заведует этим всем операционная система - выделяет программам порты и распределяет приходящие пакеты по ним. Впрочем, точнее будет сказать, что все запущенные программы, предназначенные для работы с ресурсами Интернета, из всех пакетов данных, приходящих на компьютер, как бы "выбирают" те, которые адресованы именно им.

Информация о порте назначения пакета, так же, как и IP-адрес получателя, указывается в служебной информации каждого пакета данных - в его заголовке.

Отдельные экземпляры программы, скажем, новые окна браузера тоже имеют свои порты. Поэтому вы можете одновременно смотреть сразу несколько страничек в разных окнах браузера.

Различные порты различаются одним - своим номером. Всего возможных номеров портов весьма много - тысячи. Однако некоторые номера портов традиционно присвоены вполне определенным сервисам. К примеру, программа-web-сервер (то есть программа, которая может отвечать на запросы с удаленного компьютера, выдавая для просмотра документ Html и все файлы, которые из него вызываются) отвечает на запросы с указанием порта 80. Программа - Ftp-сервер, выдающая по запросу пользователя файлы, отвечает на запросы, в которых указано, что они посланы на порт 21. Иными словами, когда, скажем, ваш браузер запрашивает сервер, скажем, www.pravda.ru, то он посылает пакет данных на порт 80 компьютера с IP-адресом, соответствующим www.pravda.ru, а в пакете указывает номер своего порта, выделенного ему операционной системой. Сервер www.pravda.ru, получив пакет, посылает на компьютер с запросившим его браузером пакет данных, адресуя его тому порту, с которого был прислан запрос. Операционная система, увидев по заголовку пакета, какому порту адресован пакет, отдаст его в браузер, который его обработает по собственному усмотрению.

Поэтому пакет данных, предназначенный, скажем, браузеру, не попадает в почтовый клиент, и наоборот.

Какие же выводы следуют из всего вышеизложенного?

На компьютере, основная задача которого - выдавать информацию в Сеть по запросам, может одновременно быть запущено сразу множество программ: web-сервер для выдачи web-страничек, ftp-сервер для скачивания файлов, почтовый сервер и др., причем у этого компьютера будет лишь один IP-адрес, по которому к нему будут обращаться с запросами и на загрузку файлов, и на просмотр сайта, и на работу с почтой. Каждая программа работает с запросами, приходящими к ней, по своему порту: web-сервер - по 80-му, Ftp-сервер - по 21-му и др. Браузерам, Ftp-клиентам вроде CuteFtp, почтовым клиентам номера портов выделяются операционной системой того компьютера, на котором они запущены. Номер порта, по которому работают эти серверы, указывается в их настройках.

Нетрудно понять, что в том случае, если web-сервер будет настроен на работу, скажем, по 81-му порту, то ни один браузер просто так связаться с ним не сможет. В многих программах, предназначенных для работы с ресурсами Интернет, есть возможность задавать номер порта, с которого сервер Интернета будет этой программе отвечать в том случае, если он настроен на работу с другого порта.

Если на сервере запущен еще какой-либо сервис, скажем, многопользовательская ролевая игра, то программа, обеспечивающая ее функционирование, будет работать с какого-либо другого порта, отличного от тех, с которых работают другие программы. Номер этого порта необходимо сообщать тем, кто будет подключаться к игре, или разработать программу - игрового клиента, которая автоматически работала бы с этим портом.

Если проводить еще одну аналогию для лучшего восприятия, то можно себе представить порт как некую "радиочастоту", а каждую программу - как приемник для этой частоты. Чтобы программа могла услышать запрос, надо настроиться на ее "радиочастоту" - послать запрос на этой частоте, а в запросе сообщить, на какой частоте она должна выйти на связь с тем, кто ее запросил.

Далее. С системой портов тесно связана такая система защиты, как "файерволл". Файерволлом называется программа, которая обеспечивает санкционированность всей информации, приходящей или уходящей с компьютера. К примеру, при отправке почты используется порт 25, а при получении - порт 110. С этими портами работает почтовая программа. Если же какая-нибудь другая программа, например, вирус-троян, попытается связаться с чем-либо по этому порту, то файерволл не даст ей это сделать. Кроме того, файерволл не позволяет осуществить связь с удаленным компьютером по какому-либо порту, если это не разрешил пользователь. Перед началом использования файерволла производится его настройка - то есть указание номеров портов, через которые может идти обмен данных, и программ, которые с этими портами работают. В современных файерволлах настройка может пройти и автоматически.

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

Обеспечение безопасности компьютера от "взлома" извне тоже тесно завязано на управлении системой портов. На компьютере постоянно запущено множество программ. И не исключено, что при обращении к какому-либо порту какая-либо программа возьмет и ответит на запрос, да еще и проигнорировав какую-либо авторизацию доступа. Это - так называемая "дыра" в программе, за что ее авторов нещадно бьют. В другом случае операционная система, воспринимая данные по какому-либо порту, может попросту "повиснуть" - опять-таки из-за ошибки в ее программе. Так, до появления третьего Service Pack к Windows NT приход на компьютер с этой операционной системой пакетов данных, адресованных на 139-й порт, происходила либо перезагрузка Windows NT, либо ее "зависание". ("Дыры" могут быть основаны и на совсем других принципах - не только на системе портов, просто "дыра через порт" - один из многочисленных вариантов "дыр".)

Порты у компьютера можно "прослушать" - то есть послать на него пакеты данных, адресованные на все порты подряд, и ждать ответа хоть от какого-нибудь порта. Если с какого-либо порта придет ответ, то это значит, что с этим портом можно попробовать договориться - попытаться заставить работать программу, заведующую этим портом, в своих целях. Просканировать порты можно, например, с помощью программы Internet Maniac (Рис.1). Со сканирования портов и поиска "дыр" в программном обеспечении обычно начинается любая хакерская атака, поэтому многие провайдеры, банковские системы и другие большие сетевые представительства отслеживают подобные действия и принимают адекватные меры в адрес того, кто это делает.

1

Рис.1. Вот так сканируются порты. Это пример - а при настоящей хакерской атаке можно было бы и "дыру" отловить, да и самому попасться - зависит от умения обоих сторон.

Поскольку любой сложный программный комплекс включает в себя тысячи строк кода и множество функций, многие "дыры" в нем выявляются не сразу. К примеру, в Windows NT изначально "дыр" было предостаточно. Обычно в случае, если в программе выявляется "дыра", ее производитель выпускает специальное обновление, ее закрывающее. Такие обновления распространяются через Интернет. Особенно преуспела в закрытии своих "дыр" компания Microsoft, под обновления систем безопасности ее продуктов отведен целый большой раздел на ее сервере, что, впрочем, неудивительно - уж больно большие и сложные программы она выпускает.

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

Прокси-сервер - это нечто вроде "всего Интернета в локальной сети". Он обычно используется тогда, когда необходимо обеспечить доступ в Интернет со всех компьютеров какой-либо локальной сети. При подключении к Интернету компьютеру выделяется провайдером постоянный или динамический IP-адрес (последний - в случае сеансового подключения, когда при каждом новом сеансе IP-адрес дается новый). Те пакеты данных, которые предназначены этому компьютеру, маршрутизируются в Сети именно по этому IP-адресу. Если к Интернету подключен компьютер, который в свою очередь является частью локальной сети, и необходимо обеспечить доступ к Web c остальных ее компьютеров, то возникает проблема. Заключается она в том, что выделенный для компьютера, имеющего доступ в Сеть, а значит, и фактически для всей этой сети IP-адрес - один, а компьютеров много, - и как тогда распределять пришедшие пакеты по компьютерам? Ведь пришедшие пакеты будут иметь одни и те же IP-адреса получателей.

Поэтому используется прокси-сервер - такая программа, которая как бы собой "подменяет" Интернет для локальной сети и локальную сеть для Интернета. Получив запрос от одного из компьютеров локальной сети, скажем, на загрузку web-страницы, она запоминает, от какого компьютера пришел этот запрос, и делает запрос в Интернет на загрузку той же страницы, но уже от своего имени и от имени и с IP-адреса того компьютера, на котором установлен прокси-сервер. Когда запрошенная страница загружается на прокси-сервер, она передается по локальной сети тому компьютеру, с которого был сделан запрос.

Обмен данными между компьютерами локальной сети и прокси-сервером происходит по тому же протоколу, что и обмен данными во всем Интернете - TCP/IP. Поэтому в локальной сети каждый компьютер имеет свой внутренний IP-адрес, по которому с ним могут общаться другие компьютеры, в том числе и прокси-сервер. Прокси-сервер имеет два IP-адреса: для "своих" - тот, который присвоен ему в локальной сети, и для Интернета - тот, который присвоен ему провайдером.

Внутренние IP-адреса полагается брать из диапазона 192.168.xxx.xxx, - чтобы не было совпадения с каким-либо из существующих в Интернете. Иначе при попытке обратиться к серверу с таким же IP-адресом пользователь будет попадать на компьютер своей же локальной сети. Диапазон 192.168.xxx.xxx специально зарезервирован для использования внутри локальных сетей, и в свободном доступе серверов с адресами из него нет (это невыгодно в первую очередь самим владельцам серверов - ведь иначе на их сервера попасть из любой локальной сети, в которой есть компьютер с таким же IP-адресом, будет невозможно).

Еще прокси-сервер можно назвать "межсетевым шлюзом". К нему можно обращаться как из сети Интернет, так и из локальной сети. ("Шлюз" может быть и между двумя локальными сетями - принцип тот же: у компьютера два адреса - по одному из каждой сети.)

Поскольку прокси-сервер в таком случае фактически играет роль "универсального Интернет-сервера" для всех компьютеров локальной сети, то для работы с ним необходимо указать его "координаты" в настройках программ для работы с Интернетом. К примеру, в браузере Microsoft Internet Explorer 5.0 это делается в пункте Сервис - Свойства обозревателя - Подключение - Настройки локальной сети - Прокси-сервер. К прокси-серверу компьютеры должны обращаться по какому-либо порту. По умолчанию для такой работы выделяется порт 80, но тут есть одна особенность - если на компьютере, на котором запущен прокси-сервер, запущен также и web-сервер для обеспечения доступа из Интернета к сайту, расположенном на этом компьютере, то 80-й порт будет использоваться именно для этого web-сервера, и тогда прокси-сервер придется настраивать для работы по другому порту. Соответственно надо будет настроить и программы для работы с ресурсами Интернет.

Прокси-сервер также выполняет еще две важные задачи. Во-первых, он кэширует данные - все web-страницы, хоть раз запрошенные с одного из компьютеров локальной сети, на этом прокси-сервере сохраняются (некоторое время - зависит от настроек прокси-сервера). Поэтому работа с Интернетом через прокси-сервер может идти несколько быстрее, чем без него (при прямом подключении), так как раз загруженные страницы будут грузиться с прокси-сервера, а не из Сети. Также будет крайне затруднено проникновение на компьютеры локальной сети из Интернета, то есть прокси-сервер обеспечивает "защиту от взлома". И, с другой стороны, при работе с ресурсами Интернета из такой локальной сети через прокси-сервер "выследить" компьютер будет практически невозможно - максимум, что можно будет узнать, так это адрес прокси-сервера.

Строго говоря, для того, чтобы работать через прокси-сервер, не обязательно быть подключенным именно к его локальной сети. Если необходимо использовать возможность кэширования web-страниц или защищаться от взлома (или выслеживания), то можно настроить свой компьютер на работу с каким-нибудь прокси-сервером не из его локальной сети, а из Интернета, просто указав его интернетовский IP-адрес (конечно, если он постоянный). Тогда для прокси-сервера этот компьютер станет как бы частью его локальной сети, и все преимущества работы через прокси-сервер станут доступны. Можно также использовать прокси-сервер лишь для работы с web-страницами (то есть по протоколу HTTP), а по всем остальным протоколам работать без него. Для этого надо опять-таки особым способом настроить браузер - в Microsoft Internet Explorer 5.0 (Рис.2) для этого служит вкладка "Дополнительно" окна "Настройки локальной сети" (путь - см. выше). Это имеет смысл, когда прокси-сервер работает недостаточно быстро, и выигрыш в скорости получается лишь для web-страниц за счет их кэширования.

2

Рис.2. Окно настроек использования прокси-серверов в браузере Internet Explorer 5.0.

Разумеется, администратор прокси-сервера может и запретить доступ к нему извне своей локальной сети, если он не заинтересован в такой повышенной нагрузке на него. Обычной является практика, когда провайдер услуг Интернета предоставляет свой прокси-сервер только тем, кто подключается через его доступ (подключение определяется, ясное дело, по IP-адресу). В этом случае его клиенты имеют возможность выбора - пользоваться прокси-сервером или нет. В Интернете есть и общедоступные прокси-сервера, с которыми могут работать все желающие, но их список часто меняется.

Некоторые пользователи Интернета даже устанавливают прокси-сервер на своем компьютере исключительно из-за хорошей системы кэширования данных. Наиболее известными прокси-серверами для небольших сетей на настоящее время являются программы WinGate и WinProxy, которые можно найти на подавляющем большинстве компакт-дисков, посвященных работе в Интернет. Кроме того, прокси-сервер есть в составе операционной системы Windows NT.

* * *

Данный текст - глава из книги "Тайны и секреты компьютера", недавно вышедшей в издательстве "Радио и связь". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, создание сайтов, устройство сети Интернет, структура системного реестра Windows и файловой системы, сеть Fidonet, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию. Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.chat.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.

Антон Орлов,
http://antorlov.chat.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com