"Тайны и секреты компьютера" - читать интересную книгу автора (Орлов Антон)

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

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



Рис. 10.1. Номер порта.


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

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

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

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

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

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

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

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

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



Рис. 10.2. Здесь настраиваются номера портов в почтовом клиенте The Bat!.


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

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

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

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

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

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



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


Со сканирования портов и поиска «дыр» в программном обеспечении обычно начинается любая хакерская атака, поэтому многие провайдеры, банковские системы и другие большие сетевые представительства отслеживают подобные действия и принимают адекватные меры в адрес того, кто это делает.

Поскольку любой сложный программный комплекс включает в себя тысячи строк кода и множество функций, многие «дыры» в нем выявляются не сразу. К примеру, в 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-адресом, будет невозможно).

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

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

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



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


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

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


Полезные советы

· Если вы идете в Интернет-салон и желаете пользоваться там своими «закладками», сделанными вами в вашем браузере, или просто хотите отправить другу содержимое своего «Избранного», то не возитесь с ярлыками из одноименной папки — просто выберите (в Microsoft Internet Explorer 5.x) пункт "Файл"-"Импорт и экспорт" и проследуйте по ряду диалоговых окон. Автоматически будет создана web-страница, в которой поместятся гиперссылки на все сайты, присутствующие в вашем "Избранном".

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

· Если вам необходимо пообщаться с кем-либо по Сети в реальном времени, то не используйте программы типа ICQ или IRC, которые имеют очень низкий уровень защиты от внедрения вирусов или целенаправленных атак через Сеть. Лучше заведите гостевую книгу (это web-страница, на которую любой ее посетитель может помещать свой текст, который будет сразу же там отображаться), например, на www.guestbook.ru или www.chat.ru, сообщите собеседнику ее адрес и помещайте сообщения туда. На оперативности обмена сообщениями это не скажется — обновление гостевых книг происходит быстро. Во-первых, безопасность работы возрастет многократно — новые «дыры» в ICQ, позволяющие хакерам получать доступ к компьютерам пользователей этой программы, обнаруживаются едва ли не еженедельно. Во-вторых, все ваши сообщения будут автоматически сохраняться в архиве книги, не занимая к тому же места на жестком диске вашего компьютера. В-третьих, вы не будете связаны необходимостью одновременного выхода на связь — ваш собеседник может оставить свое сообщение в свое время, а вы потом, посетив книгу, его прочтете.

· Если вы желаете создать в Интернете архив своей переписки, чтобы при необходимости иметь возможность найти там нужное письмо, то не занимайтесь копированием ваших банков сообщений в Сеть, тратя на это время и деньги за доступ. Создайте на сервере, бесплатно предоставляющем много места под почтовый ящики (например, www.mailru.com, www.cmail.ru) два ящика — для ваших входящих и исходящих писем. Если сервер, где расположен ваш основной почтовый ящик, допускает перенаправление копий писем на другой адрес (таковыми являются практически все сервера бесплатной почты, подробнее — см. главу 23), то установите в качестве одного из адресов пересылки адрес первого из созданных вами ящиков, позаботившись, чтобы копии сообщений либо оставались на сервере, либо одновременно отправлялись в ящик, с которого вы забираете почту. Кроме того, всегда, отправляя письма, помещайте адрес второго из созданных вами ящиков в поле "Скрытая копия". В результате все входящие и исходящие письма будут копироваться в созданные вами ящики. Как только они будут заполнены, заведите следующие и соответственно измените параметры пересылок.

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

· Чтобы переслать по Интернету какой-либо большой файл, не обязательно использовать систему электронной почты. Лучше зарегистрируйте аккаунт на каком-либо из серверов, предоставляющих бесплатное место под сайт и дающих доступ по FTP — например, www.chat.ru, www.fromru.com, А затем помещайте передаваемые файлы на этот аккаунт и отправляйте адресату ссылку на них. Во-первых, загружаться файлы с сервера будут быстрее, чем сообщение электронной почты, так как в последнем случае присоединенные к письму документы увеличиваются в обьеме за счет кодирования uuencode (подробнее — см. главу 13). Во-вторых, если у адресата плохая связь с Интернетом, то он сможет использовать программы докачки файлов вроде NetVampire или GetRight. И, в-третьих, если он по каким-то причинам потеряет загруженные файлы, то всегда сможет загрузить их снова, не беспокоя вас необходимостью повторной отправки.