Глава 12 Сетевые защиты

Глава 12

Сетевые защиты

Брандмауэры

Брандмауэры впервые появились на поездах. У паровозов, топившихся углем, в машинном отделении топливо находилось поблизости от топки. Машинист лопатой бросал уголь в топку. При этом образовывалась легко воспламеняющаяся угольная пыль. Время от времени она вспыхивала, и в машинном отделении возникал пожар, который мог перекинуться на пассажирские вагоны. Так как гибель пассажиров сказывалась на доходах железной дороги, паровозы стали оборудовать железными переборками позади машинного отделения. Они препятствовали распространению огня на пассажирские вагоны, но не защищали машиниста, находившегося между углем и топкой. (Есть над чем призадуматься системному администратору.)

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

Термины не всегда точны: дело в том, что понятие «брандмауэр» изменило свое содержание с тех пор, как оно появилось в компьютерных сетях. Первые сети были очень несовершенны и могли быть легко разрушены. Брандмауэры были созданы для того, чтобы препятствовать распространению сетевого программного обеспечения, содержащего множество ошибок, на всю сеть с одного ее участка. Подобно физическим брандмауэрам, они были средством локализации пожара в месте его возникновения.

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

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

Первое: брандмауэр – это граница, линия обороны. Подобно стенам замка он служит для отражения нападений. Точно так же, как и стены замка, он бесполезен против вооруженного мятежа внутри. Билл Чесвик дал брандмауэру следующее определение: «твердая скорлупа, окружающая мягкое ядро». Как только нападающий преодолеет брандмауэр, последний станет бесполезным. И поскольку (согласно исследованиям Института компьютерной безопасности в 1998 году) около 70% всех нападений происходит внутри сети, об этом определенно стоит подумать.

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

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

Третье: замок должен быть защищен со всех сторон. Не имеет смысла воздвигать отдельно стоящую стену, нападающие просто обойдут ее. Помните Линию Мажино? Франция выстроила ее, чтобы предотвратить немецкое вторжение. Это было сделано, когда была жива память о траншейных боях Первой мировой войны, и подобные укрепления казались неприступными. Но в последующие годы развитие производства танков изменило подходы к ведению войны, и немцы изобрели Блицкриг. Они просто обошли вокруг Линии Мажино, вторгшись во Францию с территории Бельгии. Точно так же брандмауэр должен служить барьером между внутренней сетью и всеми внешними точками доступа. Иначе нападающий просто обойдет брандмауэр и атакует какое-нибудь незащищенное подключение.

И наконец, четвертое: замкам нужны ворота. Бесполезно и глупо строить замок, в который никто не может проникнуть ни при каких обстоятельствах: даже королям иногда нужно выходить на прогулку. Торговцы, курьеры, даже обычные горожане должны иметь возможность свободно входить в замок и выходить из него. Следовательно, в замках были привратники, чьей обязанностью было пропускать людей, желающих войти, или, наоборот, не пускать их.

Великая Китайская Стена не произвела впечатления на Чингисхана. Ему приписывают слова: «Неприступность крепости зависит от отваги ее защитников». Пропускать все, что нужно, и при этом оставлять все, что может представлять опасность, снаружи является главной задачей любого компьютерного брандмауэра. Он должен действовать как привратник. Он должен выяснить, какой код представляет опасность, и не пропустить его. Он должен делать это без необоснованной задержки движения. (Для среднестатистического пользователя Интернета необоснованной задержкой является всякое заметное замедление.) Брандмауэр должен делать это, не раздражая законного пользователя. (Среднестатистический пользователь Интернета не способен отказаться от чего-либо наподобие загрузки новой интернет-игры от компании с названием «Подозрительное программное обеспечение» или прочтения электронной почты от ненадежной машины.) Но если привратник – брандмауэр – допустит ошибку, хакер может проникнуть внутрь сети и стать ее полновластным хозяином.

Есть три основных способа преодолеть брандмауэр. О первом я уже говорил: просто обойти его с другой стороны. В обширной сети много соединений. Большие фотокопировальные устройства часто обладают возможностью подключения к Интернету; в сетевом оборудовании обычно присутствуют порты обслуживания модемной связи. Часто компании подключают свои сети к сетям поставщиков, клиентов и т. п.; иногда намного менее защищенным. Сотрудники компании могут использовать модемы, чтобы иметь возможность работать дома. Одна супружеская пара из Силиконовой Долины периодически работала, не выходя из дома. Муж проверял свою электронную почту, в то время как жена занималась программированием, их компьютеры были объединены в маленькую домашнюю сеть. Внезапно компьютеры его компании начали обнаруживаться в сети ее компании, и наоборот.

Второе, и более сложное нападение – это украсть что-нибудь через брандмауэр. Чтобы сделать это, вы должны обмануть брандмауэр, чтобы он думал о вас, что вы хороший, честный и уполномочены сделать это. В зависимости от того, насколько хорош брандмауэр и насколько хорошо он был установлен, это просто, сложно или почти невозможно.

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

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

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

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

Ранние брандмауэры представляли собой пакетные фильтры. Брандмауэр просматривал каждый пакет, после чего пропускал или тормозил его в зависимости от того, соответствует ли заголовок пакета своду правил, которые известны брандмауэру. Первые пакетные фильтры были достаточно «неразумными» и позволяли попадать внутрь целым партиям пакетов, которые было бы лучше оставить снаружи. Со временем они стали умнее.

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

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

Другой тип брандмауэров – это прокси-брандмауэр, или система, выполняющая преобразование из одного естественного формата в другой. Подумайте о двух стражниках, один из которых находится снаружи перед стеной замка, а другой внутри, за стеной. Стражник снаружи не знает ничего о внутренней части замка. Стражник внутри ничего не ведает о мире за стеной замка. Но они переправляют друг другу пакеты. Прокси-брандмауэры могут служить иллюстрацией этой метафоры. Некоторые прокси-брандмауэры работают только в качестве посредников: если кому-то, находящемуся внутри охраняемой брандмауэром области, необходим документ «из внешнего мира», программное обеспечение клиента спрашивает у брандмауэра (внутреннего стражника) об этом, и брандмауэр (наружный стражник) соединяется с нужным веб-сайтом и получает требуемый документ. Другие прокси-брандмауэры понимают, какие правила и виды протоколов они используют. Существуют прокси-брандмауэры с промежуточным накоплением – они хранят куски данных между передачами и могут фильтровать данные, основываясь на своде правил. Лучшие прокси-брандмауэры узнают свое окружение, и поэтому способны принимать более умные решения относительно пакетов.

Слабые места прокси-брандмауэров – слишком тонкая тема, чтобы обсуждать ее здесь. У них более длительные задержки и более низкая производительность, чем у пакетных фильтров. (Фактически, так как брандмауэры должны исследовать каждый пакет, все они замедляют быстрое сетевое соединение.) Для безошибочной работы брандмауэры-«заместители» должны быть надежно конфигурированы, так же как и пакетные фильтры; в то же время они намного сложнее для конфигурирования и обслуживания; тенденция состоит в том, чтобы прекратить беспокоиться о них.

На рынке представлено около 100 разновидностей брандмауэров, и каждый месяц большое их количество покупается. Большинство из них приспособлены только под протокол IP и не обеспечивают безопасность других протоколов. Чаще всего функционирование брандмауэра основывается не на каком-то одном принципе, а на смешанных технологиях. Прогресс в технологии брандмауэров происходит постоянно и их сложно сравнивать и оценивать. Некоторые организации одобрительно отзываются об эффективности брандмауэров, но большинство хакеров считают это смешным; брандмауэры, которые просматривают пакеты, надежны только против большинства простых нападений. Вообще говоря, лучшие брандмауэры те, которые были правильно конфигурированы и вовремя обновляются.

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

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

Демилитаризованные зоны

ДМЗ – это демилитаризованная зона. Примером тому является ничейная земля между Северной Кореей и Южной Кореей, на которую не претендует ни одна сторона.

После всего сказанного о брандмауэрах вы понимаете, что именно в ДМЗ вы должны поместить свои общественные службы. В главе 10 я рассказывал обо всех видах нападений на веб-серверы. Вам не захочется поместить веб-сервер внутрь охраняемой брандмауэром территории, уязвимой для нападения. Вы не можете поставить веб-сервер снаружи брандмауэра, потому что тогда он будет еще более уязвим. Решение состоит в том, чтобы поместить его в ДМЗ.

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

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

Частные виртуальные сети

Частная виртуальная сеть (VPN) является просто безопасным соединением через открытую сеть. В прежние времена, если Алиса и Боб хотели связаться, они должны были потратиться на частную линию и организовать свою собственную частную сеть. Сегодня Алисе и Бобу выгоднее использовать общедоступную сеть. Но Интернет не обеспечивает безопасность связи, Алисе и Бобу следует защитить это соединение. Им нужно создать виртуальную частную сеть на основе физической открытой сети. Это и есть VPN.

У виртуальных частных сетей есть два главных применения. Первое – соединить два удаленных отрезка одной и той же сети. У корпорации может быть два офиса в различных частях планеты. У каждого офиса есть собственная сеть, и две сети соединяются посредством организации VPN через Интернет. VPN более приватна, чем «частная линия», обеспеченная телефонной компанией.

Второе применение состоит в том, чтобы соединить мобильных пользователей – работающих из дома и из номеров отелей. Старый путь для введения этих пользователей в большую открытую сеть заключался в том, чтобы подсоединить их непосредственно к сети компании, часто при этом приходилось производить очень удаленное сетевое подключение. Это дорого и вынуждает компанию обслуживать огромный банк модемов. Современный путь – в том, чтобы пользователи дозванивались до местного интернет-провайдера и затем с его помощью через Интернет подключались к компании. Для защиты этого соединения организуется VPN.

Различные VPN обеспечивают защиту, используя различные протоколы шифрования. Наиболее распространен протокол IPsec, хотя вам будут попадаться и другие протоколы, в частности РРТР и L2TP. В некоторых VPN вообще не используется шифрование.

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

Системы обнаружения вторжений

Системы обнаружения вторжений (IDS) – это сетевые контролеры. Они пристально наблюдают за вашей сетью, выискивая нечто подозрительное. Их можно сравнить с детективами, рыскающими по городу в поисках преступника: они знают, что должно вызывать подозрение – это может быть исследование возможности доступа к системе или попытки обнаружить и использовать ошибки, и они внимательно следят за этим. Они знают, как выглядит нападение. Они знают, как выглядит преступление. Маркус Ранум сравнивал брандмауэр со шлемом и бронежилетом, который вы носите в сражении, а систему обнаружения вторжений – с санитаром, который смотрит на ваше кровоточащее тело и говорит: «Видимо, это проникающее ранение грудной клетки. Это нужно проверить». IDS не являются заменой действенной защиты.

Что же делают системы обнаружения вторжений? Они информируют вас о свершившемся нападении или, возможно, даже о его развитии. Системы, которые работают хорошо, точны: они не воют волком и не заявляют о нападении там, где его нет, в то же время они не пропустят момент, когда оно случится. Хорошие системы реагируют своевременно: они предупреждают вас о нападении в то время, когда оно еще происходит. Они ставят диагноз: на что направлена атака, откуда она исходит, и предлагают лечебное средство.

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

Предположим, у врача есть тест определения болезни с точностью 99%. Таким образом, если кто-то болен, то есть вероятность в 99%, что тест определит это, а если кто-то здоров, то есть вероятность в 99%, что тест подтвердит это. Предположим, что в среднем один из десяти тысяч людей болен. Действительно ли этот тест хорош?

Нет. Если врач применяет тестирование к одному взятому наугад человеку и его тест положителен, то есть только однопроцентный шанс, что он на самом деле болен. Из-за того что здоровых людей намного больше, чем больных, тест дает ненадежные результаты, и поэтому бесполезен. (Это не столь просто понять, проще повторно протестировать человека. Но предположите, что ошибочный результат исследования повторится последовательно для этого человека.) Вывод кажется удивительным и противоречит интуиции, но он верен. Это означает, что если вы предположите, что сетевые нападения сравнительно редки, большая вероятность ошибки означает то, что ваши испытания должны быть действительно хороши, чтобы не заметить всех ложных тревог. Системы обнаружения вторжений, которые обычно сигнализируют вам в 3:00 утра о проблеме, которая в действительности не является проблемой, о ночной игре в Quake или о новом интернет-приложении, довольно быстро добьются того, что прекратят свое существование.

Есть и другие проблемы. Первая из них – это своевременное предупреждение. Я упомянул медленное нападение в предыдущем подразделе. Когда система обнаружения вторжений решит, что было произведено нападение, и уведомит вас об этом? Что, если она подумает, что это лишь отчасти выглядит как нападение? Уведомит ли она вас об этом? Когда? Опять-таки, вспомните о проблеме ложного срабатывания. Если система ошибается слишком часто, вы перестанете прислушиваться к ней.

И что вы будете делать, когда получите сигнал тревоги? Поучительные сообщения общего вида «вы подвергаетесь нападению» бесполезны, если у вас нет какого-нибудь способа защиты или даже нет времени, чтобы с этим разобраться. В 1999 году в eBay отключили электричество на 22 часа, и в течение всего этого времени система обнаружения вторжений постоянно подавала сигнал тревоги, но все были слишком заняты, чтобы ответить. В этом величайшая проблема IDS: разумно реагировать на их выводы.

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

Для создания IDS есть два основных пути. Самый легкий – это обнаружение «неправильного» кода. IDS знают, на что похоже нападение, и ищут его. Подумайте о детекторе вирусов для сетевых пакетов. Как детекторы вирусов просматривают каждый файл, ища строки битов, указывающие на вирус, так и IDS просматривают каждый пакет, ища строки битов, которые свидетельствуют о несомненном нападении. Их легко привести в исполнение и использовать, у них низкая вероятность ложной тревоги, и они могут быть относительно быстры (принимая во внимание то, что они должны просмотреть каждый пакет).

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

Другим принципом работы системы обнаружения вторжений является обнаружение аномалии. IDS осуществляет некоторое статистическое моделирование вашей сети и вычисляет, что является нормой. Затем, если происходит какое-либо отклонение от нормы, она подает звуки тревоги. Здесь все может быть сделано по правилам (система знает, что нормально, и сигнализирует обо всем остальном), с использованием статистики (система статистически вычисляет, что нормально, и сигнализирует обо всем остальном) или с применением методов искусственного интеллекта.

Существует множество проблем и здесь. Что, если вас атакуют во время обучения системы? Тогда атака рассматривается как норма. Новые вещи случаются в компьютерных сетях постоянно. Знает ли система обнаружения вторжений разницу между безобидной аномалией и аномалией, указывающей на нападение? И если все, что она знает, является нормой, как же она тогда собирается категоризировать нападения? Для этого вида систем вероятность ложной тревоги намного выше, и нападение на такой вид IDS включает выяснение возможности не бить в набат.

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

Другие идеи IDS так или иначе основываются на одном из описанных выше принципов. Система обнаружения вторжения непрерывного действия (inline) может работать с сетевыми данными в реальном времени, тогда как проверяющая система использует контрольную информацию, сохранившуюся после совершения нападения. Есть IDS, базирующиеся на хостах (host-based IDS), и есть распределенные по сети IDS (network-based IDS).

Это последнее различие было темой яростных обсуждений в сообществе IDS. В своей основе IDS, распределенные по сети, построены на концепции перехвата сообщений: датчики расположены в сети, они исследуют проходящие пакеты. У этих систем есть преимущество в скрытности – они могут быть развернуты без воздействия на остальную часть сети, и они в большей степени обеспечивают независимость от операционной системы. IDS, базирующиеся на узлах сети, исследуют систему, осуществляют контроль и регистрируют возможные нападения, помещаясь внутри отдельного компьютера. У этих систем имеется различный набор преимуществ и недостатков, составляющих их специфику.

То, что в конечном счете вы можете найти на рынке, – чаще всего гибридные системы: они являются комбинацией систем обнаружения вторжения, базирующихся на главной машине и распределенных по сети, производящих обнаружение аномалии, основанное на ожидании в совокупности с выявлением «неправильного» кода. Вы также можете найти компании, занимающиеся проверкой систем защиты, которые анализируют результаты использования этих продуктов и отвечают на подаваемые ими сигналы тревоги. Подобно брандмауэрам, системы обнаружения вторжения будут становиться все лучше и лучше, поскольку разработчики получают все больше опыта при их проектировании. И так же как у брандмауэров, их надежность в конечном итоге будет зависеть от того, насколько хорошо они конфигурированы и насколько современны их версии. И всегда будут существовать нападения, которые пройдут через них.

Приманки и сигнализации

Сетевые сигнализации и приманки – это разновидности систем обнаружения вторжения, но они заслуживают отдельного раздела. Сигнализации – это особые системы в вашей сети, предназначенные для срабатывания в случае атаки. Приманки – это замаскированные сигнализации, которые выглядят особенно привлекательно для хакеров. Легко понять, что представляют собой сигнализации: особую сетевую команду или фиктивную сеть, про которую никто не думает, что она включает звуковой сигнал тревоги. Маркус Ранум развил эту идею дальше и предположил, что если обнаружено уязвимое место в программе, необходимо также выдавать сигнал предупреждения об опасности.

Приманки используются чаще: целые фиктивные компьютеры и фрагменты сети проектируются для привлечения нападающих. Вы можете получить от этого большое удовольствие: присвойте компьютерам такие имена, как transactions bigcompany com или accounting bank com, маскируя их под производящие впечатление счета и файлы, и используйте их для защиты вашей сети. Когда хакер проникнет в сеть, приманка будет притягивать его, поскольку она выглядит как интересное место для исследования. Затем выдается сигнал тревоги, и приманка начинает следить за активностью хакера и собирать сведения для последующего обращения в суд. Некоторые компании продают заранее сделанные приманки, просто добавляя привлекательные имена.

Интересно, что в обоих этих средствах используется одно и то же преимущество сетевого администратора над хакером: знание сети. Администратор знает, как выглядит сеть и что в ней может произойти. Он может установить сигнализацию точно так же, как домовладелец устанавливает сигнализацию на окна, которые не собирается открывать, или датчики движения в комнате, в которую не предполагает заходить. Администратор использует приманки, зная, что ни один из зарегистрированных пользователей не получит доступа к этим системам. Он может использовать любые виды сигнализации, включая и выключая их несколько раз в день, меняя их, в общем, может делать все, что он хочет. Эти средства действуют наверняка, потому что хакер не имеет информации, где и когда они могут появиться. В отличие от брандмауэров или IDS, где хакер знает, какая защита установлена, сигнализации и приманки специально разработаны для сетей, подвергающихся нападению.

Сканеры уязвимостей

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

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

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

На самом деле все еще сложнее. Иногда трудно сказать, будет ли успешна исследуемая атака. Например, домашний сканер проверяет электробезопасность, пытаясь перерезать провод. Это ему удается, но свет не гаснет. Что это означает – что сканер на самом деле не смог перерезать линию, или что в доме имеется резервная электростанция? Или, например, сканер перерезает провод, и свет гаснет. Значит ли это, что сканер перерезал линию или сделал что-нибудь другое (несколько последовательных действий, в результате которых свет погас)? Сканер не знает об этом, и в большинстве случаев нет способа определить действительно повлиявший фактор. Сети ненадежны; чаще всего трудно понять, в чем причина неисправности.

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

Когда в 1995 году появился SATAN (Securuty Administrator Tool for Analyzing Networks), он произвел настоящий фурор. В средствах массовой информации он был изображен хуже, чем его тезка (сатана), и автор этой программы был уволен с работы. С тех пор отношение к сканирующим устройствам изменилось, и они стали использоваться как часть набора инструментов администратора безопасности. На рынке сейчас присутствуют несколько коммерческих продуктов подобного рода с известными именами. Их можно представлять себе как некую разновидность аудита: это похоже на то, что некоторое частное лицо исследует вашу сеть, и сообщает о слабых местах вашей системы безопасности. Вы можете нанять исследователя для проверки вашей системы, но хакер может нанять того же самого исследователя для проверки возможности атаки. Понятно, что это ограничения технологии.

Безопасность электронной почты

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

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

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

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

1. Алиса получает открытый ключ Боба.

2. Алиса подписывает сообщение своим закрытым ключом.

3. Алиса шифрует сообщение с помощью открытого ключа Боба.

4. Алиса отсылает Бобу зашифрованное и подписанное сообщение.

5. Боб расшифровывает сообщение при помощи своего закрытого ключа.

6. Боб проверяет подпись Алисы, используя открытый ключ Алисы.

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

Шифрование и сетевая защита

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

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

Другой пример: множество сетевых защит рассчитаны на проверку пакетов. Шифрование может препятствовать такой защите.

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

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

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

Исследователи Интернета бьются над этой проблемой; у меня тоже нет готового ответа.