(Это не совсем так. «Красные» ящики все еще работают против таксофонов. Они подражают звону монет, опускаемых в телефон, это является пережитком использования в телефонной системе передачи сигнала внутри полосы: коммутатор получает сигнал по тому же звуковому каналу внутри полосы.)
В долгосрочной программе передача сигнала вне полосы является лучшим способом для того, чтобы исключить многие «слабые места» Интернета. Она не является панацеей – ненадежные узлы еще будут создавать проблемы, – но имеет перспективы.
К сожалению, есть несколько проблем. Интернет был спроектирован как равноправная сеть: любой может «передвигаться» по нему путем простого соединения с другим компьютером. Система сигнала вне полосы должна будет управляться централизованно, как телефонная система. Будут иметься конечные точки и внутренние маршруты, и они будут различными. Эта система не имеет ничего общего с сегодняшним Интернетом.
В настоящее время нет никаких планов по перепроектировке Интернета в соответствии с этой концепцией, и любое подобное мероприятие может быть слишком сложным, чтобы даже обсуждать его.
Глава 12Сетевые защиты
Брандмауэры впервые появились на поездах. У паровозов, топившихся углем, в машинном отделении топливо находилось поблизости от топки. Машинист лопатой бросал уголь в топку. При этом образовывалась легко воспламеняющаяся угольная пыль. Время от времени она вспыхивала, и в машинном отделении возникал пожар, который мог перекинуться на пассажирские вагоны. Так как гибель пассажиров сказывалась на доходах железной дороги, паровозы стали оборудовать железными переборками позади машинного отделения. Они препятствовали распространению огня на пассажирские вагоны, но не защищали машиниста, находившегося между углем и топкой. (Есть над чем призадуматься системному администратору.)
В цифровом мире брандмауэр – это средство защиты внутренней компьютерной сети компании от злонамеренных хакеров, алчных преступников и прочих негодяев, которые блуждают по Интернету.
Термины не всегда точны: дело в том, что понятие «брандмауэр» изменило свое содержание с тех пор, как оно появилось в компьютерных сетях. Первые сети были очень несовершенны и могли быть легко разрушены. Брандмауэры были созданы для того, чтобы препятствовать распространению сетевого программного обеспечения, содержащего множество ошибок, на всю сеть с одного ее участка. Подобно физическим брандмауэрам, они были средством локализации пожара в месте его возникновения.
Сегодня брандмауэры выступают в роли защитников границ между локальными сетями и огромной глобальной сетью. Они оставляют снаружи, незваных гостей и впускают внутрь только полномочных пользователей. Правильнее было бы называть их «крепостными стенами», но термин «брандмауэр» уже устоялся.
Я не собираюсь вести разговор о тонкостях устройства брандмауэров и о том, как они работают; об этом написаны многие тома. Я намереваюсь рассказать об общей концепции брандмауэров, о том, насколько эффективно они противодействуют угрозам и какое у них будущее.
Первое: брандмауэр – это граница, линия обороны. Подобно стенам замка он служит для отражения нападений. Точно так же, как и стены замка, он бесполезен против вооруженного мятежа внутри. Билл Чесвик дал брандмауэру следующее определение: «твердая скорлупа, окружающая мягкое ядро». Как только нападающий преодолеет брандмауэр, последний станет бесполезным. И поскольку (согласно исследованиям Института компьютерной безопасности в 1998 году) около 70% всех нападений происходит внутри сети, об этом определенно стоит подумать.
Конечно, можно установить внутренние брандмауэры для дополнительной защиты сегментов сети. Представьте себе замок с внешним и внутренним дворами.
Второе: до изобретения артиллерийских орудий хороший замок был неуязвим; не было возможности забраться на его стены по лестнице, проломить их или сделать под ними подкоп. Однако терпеливый военачальник всегда может устроить осаду замка. Он надеется, что, лишив жителей продовольствия, воды и отрезав от внешнего мира, заставит защитников капитулировать. Иногда это действовало быстро, но некоторые осады продолжались годами. Если в стенах замка был колодец, это давало больше шансов его защитникам. Если из него были прорыты секретные тоннели наружу, они очень помогали. Если у жителей замка начиналась чума, замок не мог помочь им. (Антисанитария победила многих отважных защитников.) Точно так же можно морить голодом сеть, разорвав ее соединения с внешним миром.
Третье: замок должен быть защищен со всех сторон. Не имеет смысла воздвигать отдельно стоящую стену, нападающие просто обойдут ее. Помните Линию Мажино? Франция выстроила ее, чтобы предотвратить немецкое вторжение. Это было сделано, когда была жива память о траншейных боях Первой мировой войны, и подобные укрепления казались неприступными. Но в последующие годы развитие производства танков изменило подходы к ведению войны, и немцы изобрели Блицкриг. Они просто обошли вокруг Линии Мажино, вторгшись во Францию с территории Бельгии. Точно так же брандмауэр должен служить барьером между внутренней сетью и всеми внешними точками доступа. Иначе нападающий просто обойдет брандмауэр и атакует какое-нибудь незащищенное подключение.
И наконец, четвертое: замкам нужны ворота. Бесполезно и глупо строить замок, в который никто не может проникнуть ни при каких обстоятельствах: даже королям иногда нужно выходить на прогулку. Торговцы, курьеры, даже обычные горожане должны иметь возможность свободно входить в замок и выходить из него. Следовательно, в замках были привратники, чьей обязанностью было пропускать людей, желающих войти, или, наоборот, не пускать их.
Великая Китайская Стена не произвела впечатления на Чингисхана. Ему приписывают слова: «Неприступность крепости зависит от отваги ее защитников». Пропускать все, что нужно, и при этом оставлять все, что может представлять опасность, снаружи является главной задачей любого компьютерного брандмауэра. Он должен действовать как привратник. Он должен выяснить, какой код представляет опасность, и не пропустить его. Он должен делать это без необоснованной задержки движения. (Для среднестатистического пользователя Интернета необоснованной задержкой является всякое заметное замедление.) Брандмауэр должен делать это, не раздражая законного пользователя. (Среднестатистический пользователь Интернета не способен отказаться от чего-либо наподобие загрузки новой интернет-игры от компании с названием «Подозрительное программное обеспечение» или прочтения электронной почты от ненадежной машины.) Но если привратник – брандмауэр – допустит ошибку, хакер может проникнуть внутрь сети и стать ее полновластным хозяином.
Есть три основных способа преодолеть брандмауэр. О первом я уже говорил: просто обойти его с другой стороны. В обширной сети много соединений. Большие фотокопировальные устройства часто обладают возможностью подключения к Интернету; в сетевом оборудовании обычно присутствуют порты обслуживания модемной связи. Часто компании подключают свои сети к сетям поставщиков, клиентов и т. п.; иногда намного менее защищенным. Сотрудники компании могут использовать модемы, чтобы иметь возможность работать дома. Одна супружеская пара из Силиконовой Долины периодически работала, не выходя из дома. Муж проверял свою электронную почту, в то время как жена занималась программированием, их компьютеры были объединены в маленькую домашнюю сеть. Внезапно компьютеры его компании начали обнаруживаться в сети ее компании, и наоборот.
Второе, и более сложное нападение – это украсть что-нибудь через брандмауэр. Чтобы сделать это, вы должны обмануть брандмауэр, чтобы он думал о вас, что вы хороший, честный и уполномочены сделать это. В зависимости от того, насколько хорош брандмауэр и насколько хорошо он был установлен, это просто, сложно или почти невозможно.
Основная идея в том, чтобы создать образец кода, который брандмауэр пустит внутрь сети. Код предназначен для того, чтобы использовать некий дефект в компьютерной системе, который позволит установить соединение между хакером снаружи брандмауэра и компьютером внутри него. Если все это срабатывает, хакер попадет внутрь.
Третье нападение – попытка захватить брандмауэр. Это похоже на подкуп и шантаж привратника. Как только вы сумеете заполучить его в свои ряды, он будет делать все, что вы пожелаете. Насколько это будет просто, зависит от брандмауэра. Некоторые брандмауэры работают с программным обеспечением, имеющим уязвимые места, что может помочь злоумышленникам. Некоторые используют в высшей степени ненадежные операционные системы, которые сильно облегчают задачу атакующим.
Так или иначе, разработка брандмауэра сегодня включает все, что нужно для проектирования умного привратника. На самом простом уровне брандмауэр – это маршрутизатор с последовательным набором правил, проверяющий сетевые потоки, проходящие через него, и регулирующий движение в соответствии с правилами. Примером могло бы послужить ограничение движения, основанное на адресе источника, или на адресе назначения, или на типе протокола.
Раньше это было относительно легко, но сегодняшним брандмауэрам приходится иметь дело с мультимедийным трафиком, загружаемыми программами, апплетами Java (переносимыми программами на Java, распространяемыми через вебстраницы) и другими видами разных непонятных вещей. Брандмауэр должен принимать решения, имея в наличии только неполную информацию: он должен решить, можно или нельзя пропустить пакет, до того как просматривать все пакеты в передаче.
Ранние брандмауэры представляли собой пакетные фильтры. Брандмауэр просматривал каждый пакет, после чего пропускал или тормозил его в зависимости от того, соответствует ли заголовок пакета своду правил, которые известны брандмауэру. Первые пакетные фильтры были достаточно «неразумными» и позволяли попадать внутрь целым партиям пакетов, которые было бы лучше оставить снаружи. Со временем они стали умнее.