Интернет-журнал "Домашняя лаборатория", 2007 №3
Шрифт:
Если на сервере запущен еще какой-либо сервис, скажем, многопользовательская ролевая игра, то программа, обеспечивающая ее функционирование, будет работать с какого-либо другого порта, отличного от тех, с которых работают другие программы. Номер этого порта необходимо сообщать тем, кто будет подключаться к игре, или разработать программу — игрового клиента, которая автоматически работала бы с этим портом.
Если проводить еще одну аналогию для лучшего восприятия, то можно себе представить порт как некую "радиочастоту", а каждую программу — как приемник для этой частоты. Чтобы программа могла услышать запрос, надо настроиться на ее "радиочастоту" — послать запрос на этой частоте, а в запросе сообщить, на какой частоте она должна
Далее. С системой портов тесно связана такая система защиты, как "файерволл"[25]. Файерволлом называется программа, которая обеспечивает санкционированность всей информации, приходящей или уходящей с компьютера. К примеру, при отправке почты используется порт 25, а при получении — порт 110. С этими портами работает почтовая программа. Если же какая-нибудь другая программа, например, вирус-троян[26], попытается связаться с чем-либо по этому порту, то файерволл не даст ей это сделать. Кроме того, файерволл не позволяет осуществить связь с удаленным компьютером по какому-либо порту, если это не разрешил пользователь. Перед началом использования файерволла производится его настройка — то есть указание номеров портов, через которые может идти обмен данных, и программ, которые с этими портами работают. В современных файерволлах настройка может пройти и автоматически.
Иными словами, если, к примеру, с компьютера собирается отправиться пакет данных, то файерволл посмотрит, какая программа его отправляет, и по какому порту, и на какой порт. И в случае, если эти данные не будут соответствовать указанным в первоначальных настройках файерволла, то он забьет тревогу: либо запретит вообще отправку этого пакета, либо запросит пользователя о возможных действиях (смотря как настроить). Если на компьютер пробралась программа-троян, отсылающая, скажем, пароли пользователя куда бы то ни было, то она не сможет воспользоваться ни одним портом, да и вообще не сможет осуществить отправку данных, так как файерволл ее распознает (так как она, естественно, не будет входить в список разрешенных) и запретит ей доступ к Интернету. Также — и при приходе пакета: пропускаются лишь те пакеты, которые адресованы разрешенным программам — на разрешенные порты. Если же пакет приходит на адрес порта, которого нет в списке разрешенных, то ему в доступе отказывается.
Обеспечение безопасности компьютера от "взлома" извне тоже тесно завязано на управлении системой портов. На компьютере постоянно запущено множество программ. И не исключено, что при обращении к какому-либо порту какая-либо программа возьмет и ответит на запрос, да еще и проигнорировав какую-либо авторизацию доступа. Это — так называемая "дыра" в программе, за что ее авторов нещадно бьют. В другом случае операционная система, воспринимая данные по какому-либо порту, может попросту "повиснуть" — опять-таки из-за ошибки в ее программе. Так, до появления третьего Service Pack к Windows NT приход на компьютер с этой операционной системой пакетов данных, адресованных на 139-й порт, происходила либо перезагрузка Windows NT, либо ее "зависание". ("Дыры" могут быть основаны и на совсем других принципах — не только на системе портов, просто "дыра через порт" — один из многочисленных вариантов "дыр".)
Порты у компьютера можно "прослушать" — то есть послать на него пакеты данных, адресованные на все порты подряд, и ждать ответа хоть от какого-нибудь порта. Если с какого-либо порта придет ответ, то это значит, что с этим портом можно попробовать договориться — попытаться заставить работать программу, заведующую этим портом, в своих целях. Просканировать порты можно, например, с помощью программы Internet Maniac (рис. 10.3).
Рис. 10.3. Вот так сканируются порты. Это пример — а при настоящей хакерской атаке можно было бы и "дыру" отловить, да и самому попасться — зависит от умения обоих сторон.
Со сканирования портов
и поиска "дыр" в программном обеспечении обычно начинается любая хакерская атака, поэтому многие провайдеры, банковские системы и другие большие сетевые представительства отслеживают подобные действия и принимают адекватные меры в адрес того, кто это делает.Поскольку любой сложный программный комплекс включает в себя тысячи строк кода и множество функций, многие "дыры" в нем выявляются не сразу. К примеру, в Windows NT изначально "дыр" было предостаточно. Обычно в случае, если в программе выявляется "дыра", ее производитель выпускает специальное обновление, ее закрывающее. Такие обновления распространяются через Интернет. Особенно преуспела в закрытии своих "дыр" компания Microsoft, под обновления систем безопасности ее продуктов отведен целый большой раздел на ее сервере, что, впрочем, неудивительно — уж больно большие и сложные программы она выпускает.
Использование файерволла позволяет в определенной степени свести на нет риск от возможности сканирования портов, — он не дает возможности получить с портов, не входящих в список разрешенных, какой-либо ответ, так как вообще не пропускает к ним несанкционированные запросы. Но файерволл не может помочь в том случае, когда атака ведется с помощью вполне законного доступа — скажем, при приходе письма, содержащего вирус-троян.
* * *
При подключении к Интернету компьютеру выделяется провайдером постоянный или динамический IP-адрес (последний — в случае сеансового подключения, когда при каждом новом сеансе IP-адрес дается новый). Те пакеты данных, которые предназначены этому компьютеру, маршрутизируются в Сети именно по этому IP-адресу.
Но если к Интернету подключен компьютер, который в свою очередь является частью локальной сети, и необходимо обеспечить доступ к Web с остальных ее компьютеров, то возникает проблема. Заключается она в том, что выделенный для компьютера, имеющего доступ в Сеть, а значит, и фактически для всей этой сети IP-адрес — один, а компьютеров много, — и как тогда распределять пришедшие пакеты по компьютерам? Ведь пришедшие пакеты будут иметь одни и те же IP-адреса получателей.
Поэтому используется межсетевой шлюз — такая программа, которая как бы собой "подменяет" Интернет для локальной сети и локальную сеть для Интернета. Получив запрос от одного из компьютеров локальной сети, скажем, на загрузку web-страницы, она запоминает, от какого компьютера пришел этот запрос, и делает запрос в Интернет на загрузку той же страницы, но уже от своего имени и от имени IP-адреса того компьютера, на котором установлен прокси-сервер. Когда запрошенная страница загружается межсетевым шлюзом, она передается по локальной сети тому компьютеру, с которого был сделан запрос.
Обмен данными между компьютерами локальной сети и межсетевым шлюзом происходит по тому же протоколу, что и обмен данными во всем Интернете — TCP/IP. Поэтому в локальной сети каждый компьютер имеет свой внутренний IP-адрес, по которому с ним могут общаться другие компьютеры, в том числе и прокси-сервер. Межсетевой шлюз имеет два IP-адреса: для "своих" — тот, который присвоен ему в локальной сети, и для Интернета — тот, который присвоен ему провайдером.
Такой шлюз может быть и между двумя локальными сетями — принцип тот же: у компьютера два адреса — по одному из каждой сети
Внутренние IP-адреса полагается брать из диапазона 192.168.ххх. ххх, — чтобы не было совпадения с каким-либо из существующих в Интернете. Иначе при попытке обратиться к серверу с таким же IP-адресом пользователь будет попадать на компьютер своей же локальной сети. Диапазон 192.168.ххх. ххх специально за резервирован для использования внутри локальных сетей, и в свободном доступе серверов с адресами из него нет (это невыгодно в первую очередь самим владельцам серверов — ведь иначе на их сервера попасть из любой локальной сети, в которой есть компьютер с таким же IP-адресом, будет невозможно).