Осторожно! Internet

Не ходите, дети, в Африку гулять.
Афоризм житейской мудрости


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


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

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

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

Базовые понятия

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

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

Угроза представляет собой действие или инструмент, которые могут воспользоваться уязвимостью для компрометации системы. Не все угрозы способны в равной степени нанести ущерб, "играя" на конкретной уязвимости. Например, вирус Microsoft Concept использует уязвимость макросов MS Word, позволяющую получить доступ к файловой системе пользователя, но сам по себе вирус относительно безвреден. Другие вирусы в состоянии причинить намного больше неприятностей.

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

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

В контексте безопасности используются еще ряд терминов, которым мы уделим большее или меньшее внимание. Так, целостность данных подразумевает полноту и точность сообщения, переданного через сеть. Основная тонкость сохранения целостности данных состоит в том, чтобы обеспечить их прохождение от отправителя к получателю без необнаруживаемых изменений. Акцент на слове "необнаруживаемых" сделан здесь неспроста. Служба безопасности может быть не в состоянии предотвратить перехват сообщения и попытку его модификации, однако она должна быть способна обнаружить эту попытку и отклонить сообщение, если оно изменено. Безопасность должна также обеспечивать конфиденциальность данных, т. е. уверенность в том, что сообщение прочтет только адресат и никто более. Чаще всего для сохранения конфиденциальности используют шифрование сообщений. Управление доступом — одна из ключевых концепций в обеспечении безопасности. Она заключается в разрешении или запрещении пользователю доступа к затребованным им сетевым службам или данным. Одним из основных сервисов управления доступом, осуществляющим проверку регистрационной информации пользователя, является его аутентификация (authentication). Существует множество механизмов ее реализации. Ввиду важности этой службы рассмотрим некоторые из них.

Аутентификация

Традиционно для определения прав доступа к некоторому вычислительному ресурсу использовался пароль. Однако практика показала слабость подобной защиты. Поэтому были разработаны более хитроумные и надежные механизмы идентификации.

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

Аутентификация с помощью информации, известной пользователю. Этот механизм базируется на вышеупомянутом принципе имя_пользователя/пароль. Здесь имеются два подхода, известных как протокол аутентификации с помощью пароля (Password Authentification Protocol — PAP) и протокол аутентификации с предварительным согласованием вызова (Challenge Handshake Authentication Protocol — CHAP). PAP просто запрашивает у пользователя пароль, и если он правильный, то пользователь получает доступ к требуемому ресурсу. В соответствии с CHAP аутентификационный агент (обычно сервер) посылает клиенту ключ для шифрования его имени и пароля. Это позволяет передавать имя пользователя и пароль в зашифрованном виде, защищаясь таким образом от возможности перехвата сообщения. В некоторых реализациях этого механизма в качестве ключа используется смарт-карточка.

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

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

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

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

Уязвимость стека протоколов TCP/IP

По своей природе стек протоколов TCP/IP (Transmission Control Protocol/Internet Protocol) не отвечает современным требованиям безопасности, в чем нельзя винить его разработчиков. Это был военный проект, цель которого — создание гибкой и надежной системы передачи данных, способной выдержать ядерный удар. Изменение сферы использования превратило его сильные стороны в слабые. Вот некоторые из документированных "точек наименьшего сопротивления".

  • Передача пароля в явном виде. Во многих приложениях TCP/IP, таких, как telnet (удаленный доступ к хосту), File Transfer Protocol (FTP), Post Office Protocol (POP), пароль передается по локальной сети и Internet незашифрованным, что создает потенциальную возможность его перехвата.
  • Переполнение буфера. Некоторые приложения, например sendmail (Unix), finger (возврат информации об удаленном пользователе или хосте), протокол HTTP, не следят за объемом данных пользователя, помещаемых в выделенный ими буфер. В некоторой ситуации можно послать приложению больше данных, чем способен вместить буфер. Если избыточные данные представляют собой код, то он записывается в рабочую область памяти, предоставляя атакующему возможность получить контроль над хостом. Эта форма атаки послужила основой для сетевого вируса типа "червяк" (worm), который блокировал Internet на несколько дней в ноябре 1988 г.
  • Использование ложного адреса. Каждый пакет IP содержит в своем заголовке адреса отправителя и предполагаемого получателя. Некоторые приложения принимают пакеты только от заранее определенных хостов, проверяя адрес отправителя. К сожалению, большинство приложений TCP/IP позволяют поместить в поле Source Address любой адрес. Конечно, для связи по протоколу TCP/IP недостаточно просто заменить адрес. Атакующий должен также установить виртуальный канал с получателем, поскольку двум хостам необходимо согласовать некоторые детали предстоящего обмена, например синхронизировать друг с другом так называемые первоначальные номера очередей (Initial Sequence Number — ISN). Однако благодаря особенностям реализации TCP-протокола ISN может быть предугадан. Комбинируя подмену IP-адреса с предполагаемым ISN, атакующий может получить привилегированный доступ к серверу, даже не имея ответных пакетов синхронизации. Именно такой тип атаки был использован известным героем уголовной хроники Кевином Митником (Kevin Mitnic) в нашумевшем эпизоде с системой суперкомпьютерного центра в Сан-Диего в конце 1994 — начале 1995 гг.
  • Использование коротких фрагментов. Как известно, протокол TCP разбивает длинное сообщение на фрагменты. Многие маршрутизаторы и фильтры анализируют корректность только первого из них, не рассматривая оставшиеся. Поэтому если первый фрагмент принят, то и остальные также принимаются, если первый отвергнут, то отвергается все сообщение. Если атакующий пошлет короткую дейтаграмму, не содержащую информации более высоких уровней, то существует вероятность, что она будет принята как часть некоторого длинного сообщения.

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

Контрмеры

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

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

Брандмауэры

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

Брандмауэры могут быть разделены на три класса:

  • фильтры пакетов (packet filters);
  • шлюзы прикладного уровня (application-level gateway);
  • шлюзы канального уровня (circuit-level gateway).

Заметим, что эта классификация не является единственной.

Функции фильтрации пакетов обычно возлагаются на маршрутизаторы (packet-filtering routers). Они выносят решение о запрете/разрешении передачи в отношении каждого приходящего пакета. Правила фильтрации основываются на информации, содержащейся в заголовке пакета. Это могут быть IP-адреса отправителя и получателя, адреса их TCP/UDP-портов, тип протокола инкапсуляции (TCP, UDP, ICMP), входной и выходной интерфейсы пакета и т. п. Если пакет удовлетворяет предъявляемым условиям, он направляется на выходной интерфейс в соответствии с информацией в таблице маршрутизации. В противном случае он отбрасывается.

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

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

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